当我们在 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

点赞(0)

评论列表 共有 0 评论

暂无评论

微信服务号

微信客服

淘宝店铺

support@elephdev.com

发表
评论
Go
顶部