nohup
(no hang-up)命令在Linux系统中用于在用户退出登录后继续运行指定的命令或脚本。以下是一些使用nohup
命令的技巧:
运行单个命令:
nohup command &
例如:
nohup sleep 3600 &
运行脚本:
nohup ./script.sh &
将输出重定向到文件:
默认情况下,nohup
会将输出重定向到当前目录下的nohup.out
文件。你可以显式指定输出文件:
nohup command > output.log 2>&1 &
这里,>
将标准输出重定向到output.log
,2>&1
将标准错误重定向到标准输出,从而将所有输出都写入output.log
。
后台运行并忽略挂起信号:
nohup
命令会忽略挂起信号(SIGHUP),确保命令在用户退出登录后继续运行。
使用&
符号:
在命令末尾添加&
符号,使命令在后台运行。
指定工作目录:
使用cd
命令切换到所需的工作目录,然后再运行nohup
命令:
cd /path/to/directory
nohup command &
使用setsid
:
setsid
命令可以创建一个新的会话,并使进程成为该会话的领头进程,从而进一步确保进程在用户退出登录后继续运行:
setsid nohup command &
监控进程:
使用ps
命令监控进程的状态:
ps -ef | grep command
终止进程:
如果需要终止进程,可以使用kill
命令:
kill -9 <PID>
其中<PID>
是进程的ID。
假设你有一个长时间运行的脚本long_running_script.sh
,你可以这样运行它:
nohup ./long_running_script.sh > long_running_script.log 2>&1 &
这样,即使你退出登录,脚本也会继续运行,并且所有输出都会被记录到long_running_script.log
文件中。
通过这些技巧,你可以更有效地使用nohup
命令来确保你的命令或脚本在用户退出登录后继续运行。