一、nohup命令介绍
nohup命令常用于在终端中启动进程,并在用户注销登录后也能保持进程运行。使用该命令的场景包括但不限于:
1、需要在后台运行长时间的脚本任务,用户不想一直和终端保持连接。
2、需要重定向进程输出到文件,避免在终端中输出影响任务执行。
nohup命令的使用格式为:
nohup command [args ...] [ > output-file 2>&1 ] &
其中,command是要执行的命令,args是命令的参数。输出重定向部分可以省略,如省略则会输出到nohup.out文件中,不添加重定向符号“>”和“2>&1”则不会记录输出到文件。
二、实用技巧
1. 使用nohup命令后如何查看进程状态和输出
使用nohup命令后,进程输出会记录在nohup.out文件中,可以使用tail命令查看:
tail -f nohup.out
另外,使用ps命令可以查看进程状态:
ps -ef | grep command
2. 如何停止nohup启动的进程
使用nohup启动的进程在用户注销后也会继续运行,如需停止进程可以使用kill命令,具体命令如下:
ps -ef | grep command // 查找command进程的PID kill -9 PID // 终止进程
3. nohup命令启动进程后如何让进程在后台运行
在命令末尾添加“&”符号即可让进程在后台运行:
nohup command [args ...] [ > output-file 2>&1 ] &
4. 如何将运行中的进程转移到后台
在运行中的进程如果没有使用nohup命令启动,则可以使用Ctrl+Z将进程挂到后台,并使用bg命令将进程转移到后台继续运行:
Ctrl+Z // 将进程挂起 bg // 继续运行在后台
5. 如何让nohup命令启动的进程在系统重启后自动启动
使用Systemd自启动服务可以让nohup启动的进程在系统重启后自动启动。具体步骤如下:
1、创建一个service文件:
sudo vim /etc/systemd/system/myservice.service
文件内容如下:
[Unit] Description=My Service [Service] Type=simple ExecStart=/path/to/nohup command [args ...] [ > output-file 2>&1 ] User=yourusername Restart=always RestartSec=3s [Install] WantedBy=multi-user.target
其中,ExecStart是nohup命令启动的进程,User是启动进程的用户,Restart表示服务出现异常后自动重启。
2、启用service文件:
sudo systemctl enable myservice.service
3、启动服务:
sudo systemctl start myservice.service
三、小结
本文详细介绍了nohup命令的概念及用法,同时提供了nohup命令的实用技巧,包括查看进程状态和输出、停止进程、后台运行进程、将运行中的进程转移到后台以及自启动服务等内容,能够帮助运维工程师更好地使用nohup命令完成进程管理任务。