我需要编写bash脚本来启动oracle DB 一些命令应使用 root 用户运行,其中一些命令应使用 user-oracle 运行
如何将这些代码作为 bash 脚本代码
#!/bin/bash
su root
password
rm /var/tmp/.oracle/*
su oracle
lsnrctl start
sqlplus sys as sysdba
startup
但是在我运行此代码后,它会询问我 root 密码,并且在 su 命令后不要运行其他命令。
谢谢。
最佳答案
脚本中的每一行都是要执行的命令。如果命令读取输入,它通常不会从脚本文件中获取它,而是从脚本的标准输入中获取它。如果您希望它从脚本中读取,则必须使用此处文档:
#!/bin/bash
su root <<EOF
password
rm /var/tmp/.oracle/*
su oracle <<EOF1
lsnrctl start
sqlplus sys as sysdba
startup
EOF1
EOF
但是,我不确定这是否适用于 su
。它可能不会从标准输入读取密码,而是强制它来自终端。您可能应该使用 sudo
,您可以将其配置为不需要某些用户和脚本的密码。
或者,如果您使用systemd
,您应该能够配置服务启动脚本。
关于linux - Bash 脚本不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46054159/