我想运行一个脚本,nohup
因为它需要很长时间,但需要密码才能运行。我怎样才能使用nohup
.例如,为了以交互方式运行脚本,我首先运行php hat
,当它要求输入密钥或密码时,我编写123456
。
我尝试过nohup php hat & password
(例如 123),但没有成功。
答案1
当您使用 运行命令时nohup
,stdin
将从 重定向/dev/null
。因此您无法使用nohup
并手动输入密码。
根据您使用的程序,您可以使用重定向来输入密码:
$ nohup bash -c 'read; echo $REPLY' <<<'hello'
$ tail -1 nohup.out
hello
因此,您可以将密码保存在文件中(例如password.txt
),并使用类似gpg
受密码保护的私钥(以获取password.txt.gpg
)之类的方式对其进行加密,然后执行以下操作:
gpg -d password.txt.gpg | nohup php hat
或者,您可以使用类似的东西screen
。
首先启动一个screen
会话(此命令实际上要么启动一个名为 的会话my-php-script-session
,要么将已经在前台运行的会话带到前台):
screen -D -RR -S my-php-script-session
然后在打开的 shell 中正常运行命令:
php hat
输入您的密码,然后分离会话screen
: Ctrla,然后是d。
您可以通过再次运行第一个命令来重新连接它screen
。