在Linux中如何使用Nohup?
想象一下,有一个关键的进程在你的系统上running,而且要花很多时间。然而,这个时候你需要log out,该怎么办?我们知道,一旦你log out系统之后,所有的进程都会终止。如果你希望你的进程可以在你log out之后继续running,你可以使用nohup命令。
Nohup命令的语法:
$ nohup commond arguments
or
$ nohup options
找到Nohup命令的帮助文档:
$ nohup --help
查看Nohup的版本:
$ nohup --version
使用Nohup开始一个进程。
使用如下命令可以让你的命令和进程即使在你退出shell之后依旧运行:
$ nohup command
你执行上述命令之后,所有输出包括错误信息都将被添加到home目录或者当前目录下的nohup.out文件中。并且,即使shell被关闭或者你log out系统了,上面执行的命令也不会停止。
将输出重定向到其他文件。
默认情况下,输出都会被添加到nohup.out文件中,重定向的话需要用到>重定向运算符,后接指定文件的名称。例如,使用以下命令将nohup命令的输出保存到名为"mysript.sh"的新文件中。
$ sudo nohup ./mn.sh > myscript.sh &
启动该进程并置于后台
为了启动该进程并置于后台,你可以使用一下命令:
$ sudo nohup command &
&符号告诉shell在后台执行该command,执行该命令后会返回一个进程号。如果要将其带到前沿来,使用"fg"命令。
$ fg sudo nohup command
使用Nohup在后台中运行多个进程
例如,使用如下命令可以让mkdir,ping和ls三个命令在后台执行。
$ sudo nohup bash -c 'mkdir file && ping -c 1 google.com && ls'
停止后台运行的进程
使用如下命令停止后台运行的命令:
$ kill -9 PID
PID就是使用’&'后会产生的进程号,当然也可以使用pgrep -a command来寻找PID。如果你使用Ping命令时用了nohup置于后台,即使你关闭了shell,Ping依旧会执行。这时你就可以使用如下命令找到Ping的PID:
$ pgrep -a ping
然后你就可以使用kill -9 PID来停止这个命令了。