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
其中
是进程的ID。
示例
假设你有一个长时间运行的脚本long_running_script.sh
,你可以这样运行它:
nohup ./long_running_script.sh > long_running_script.log 2>&1 &
这样,即使你退出登录,脚本也会继续运行,并且所有输出都会被记录到long_running_script.log
文件中。
通过这些技巧,你可以更有效地使用nohup
命令来确保你的命令或脚本在用户退出登录后继续运行。