当我们在 Linux 中执行命令时,它会在后台创建我们的进程并分配一个唯一的进程 ID。这个过程可以通过三种方式结束
1.分配的任务完成
2.你明确地终止进程
3.您注销,或者在 SSH 的情况下,连接断开,会话终止
想象一下,您正在运行一个关键进程,您可能需要紧急注销或连接断开,该进程立即停止,您可能会丢失工作。
为了避免这种情况,我们可以使用该nohup
命令。nohup
在 Linux 中执行参数中指定的其他命令。此命令忽略所有 SIGHUP
(挂断)信号。当其控制终端关闭时,SIGHUP
被发送到进程。
为了更好地理解,让我们看看语法。
nohup COMMAND [ARGS]
在前台运行命令
nohup
将在前台运行,以及命令的输出将被存储在该nohup.out
文件中。nohup
命令将在当前目录中创建此文件。如果用户没有足够的权限在当前目录中写入文件,nohup
则会在主目录中生成输出文件
让我们看看示例输出:
root@elephdev.com:/# MYCOMMAND="echo 'My name is Elephdev.'"
root@elephdev.com:/# nohup $MYCOMMAND
nohup: ignoring input and appending output to 'nohup.out'
当我们cat
查看输出文件的内容时,我们看到了这一点
root@elephdev.com:/# cat nohup.out
'My name is Elephdev'
我们使用了一个小命令,所以它会立即执行。对于扩展进程,您可以在此时注销,该进程仍将运行
在后台运行命令
嗯,我们也可以后台运行这个命令。为了在后台运行它,我们使用&
操作符
如果我们在后台运行相同的命令,我们会得到以下输出
root@elephdev.com:/# MYCOMMAND="echo 'My name is Elephdev.'"
root@elephdev.com:/# nohup $MYCOMMAND &
[1] 24
root@elephdev.com:/# nohup: ignoring input and appending output to 'nohup.out'
您在输出中看到的整数是进程 ID。
您还可以使用进程 ID 终止此后台进程。
kill -9 24
发表评论 取消回复