fel*_*ebm 11 unix bash shell nohup
我有一个名为mandacalc的大脚本,我想总是使用nohup命令运行.如果我从命令行调用它:
nohup mandacalc &
Run Code Online (Sandbox Code Playgroud)
一切都很快.但是,如果我尝试在命令中包含nohup,那么每次执行它时我都不需要输入它,我收到一条错误消息.
到目前为止,我试过这些选项:
nohup (
command1
....
commandn
exit 0
)
Run Code Online (Sandbox Code Playgroud)
并且:
nohup bash -c "
command1
....
commandn
exit 0
" # and also with single quotes.
Run Code Online (Sandbox Code Playgroud)
到目前为止,我只收到错误消息,抱怨nohup命令的实现,或者脚本中使用的其他引用.
干杯.
小智 16
尝试将其放在脚本的开头:
#!/bin/bash
case "$1" in
-d|--daemon)
$0 < /dev/null &> /dev/null & disown
exit 0
;;
*)
;;
esac
# do stuff here
Run Code Online (Sandbox Code Playgroud)
如果您现在以脚本--daemon作为参数启动脚本,它将从当前shell重新启动.
您仍然可以通过在没有此选项的情况下启动脚本来"在前台"运行脚本.
只需放在trap '' HUP脚本的开头即可。
另外,如果它创建了子进程,someCommand&您将必须更改它们才能nohup someCommand&正常工作...我已经研究了很长时间并且只有这两者的组合(trap 和 nohup)适用于我的特定脚本,其中 xterm 也关闭快速地。
小智 5
在 bash(或首选 shell)启动文件中创建一个同名别名:
alias mandacalc="nohup mandacalc &"
Run Code Online (Sandbox Code Playgroud)