nohup(no hang-up)命令用于在Linux中使进程忽略挂起(SIGHUP)信号,从而在用户退出登录或关闭终端后继续运行
基本用法:
在要运行的命令前加上nohup,并将输出重定向到一个文件。例如:
nohup your_command > output.log 2>&1 &
这里,your_command是你要执行的命令,output.log是输出日志文件,2>&1表示将标准错误输出重定向到标准输出,&表示将命令放入后台运行。
查看进程:
使用ps命令查看使用nohup运行的进程。例如:
ps aux | grep your_command
这将显示与your_command相关的进程信息。
终止进程:
若要终止使用nohup运行的进程,首先需要找到进程ID(PID)。可以使用grep和awk命令从ps输出中提取PID。例如:
kill -9 $(ps aux | grep your_command | grep -v grep | awk '{print $2}')
这里,kill -9表示强制终止进程,grep -v grep用于排除grep命令本身的进程,awk '{print $2}'用于提取PID。
忽略其他信号:
默认情况下,nohup会使进程忽略SIGHUP信号。如果需要忽略其他信号,可以使用signal命令。例如,要忽略SIGINT信号(通常由Ctrl+C触发),可以这样做:
nohup your_command > output.log 2>&1 & signal SIGINT SIG_IGN
通过以上方法,你可以在Linux中使用nohup命令来提高命令执行的稳定性,确保在用户退出登录或关闭终端后,进程仍然继续运行。