当前位置: 首页 > 科技观察

linuxnohup命令详解,终端关机程序照样可以执行!

时间:2023-03-14 16:04:47 科技观察

在工作中,我们经常运行一个非常重要的程序。有时这个程序需要运行几个小时,甚至几天。这时,如果我们退出终端,或者网络连接中断,程序就会中止。而这种情况,绝对不是我们愿意看到的。我们希望即使终端关闭,程序仍然可以运行。此时我们可以使用nohup命令。nohup命令是英文短语nohangup的缩写,意思是不挂断,即程序不退出。该命令将使程序忽略HUP信号,以确保程序能够正常进行。有些人可能对HUP信号不熟悉。它是终端终止时发送给与其关联的进程的信号。进程收到这个信号后会停止运行。所以如果不想让进程被这个信号杀死,可以忽略这个信号。这就是nohup命令的作用。在本文中,我们将详细介绍nohup命令的具体用法。nohup命令的基本语法nohup命令的基本语法如下:$nohupcommandarguments或者:$nohupoptions如果你想得到更多关于nohup的使用介绍,可以查看它的帮助页面:$nohup--help如果你需要检查它的版本号,你可以使用--version选项。$nohup--version使用nohup命令启动程序如果需要运行程序,即使退出相应的Shell,仍然可以运行程序,可以使用nohup来运行程序:$nohupcommand当程序启动后,程序对应的日志输出及其错误日志都会记录在nohup.out文件中,该文件通常位于主目录或当前目录。重定向程序的输出如果我不想把程序的输出保存到主目录或者当前目录,我想保存到我指定的路径,自定义文件名,怎么办?此时我们可以使用重定向操作>。比如我现在有一个脚本myScript.sh,我想把它的输出保存在home目录下的output目录下,文件名为myOutput.txt,你可以这样运行:$nohup./myScript.sh>~/输出/我的输出。txt使用nohup命令在后台启动程序。如果想让程序在后台运行,可以加上&符号。但是这样运行之后,程序就消失得无影无踪了。要将程序带回终端,请使用fg命令。该命令的输出日志会保存在nohup.out文件中,可以使用cat等命令查看。第二行的数字8699代表这条命令对应的进程号,即pid。我们可以使用ps命令来找到这个进程。使用nohup同时运行多个程序如果需要同时运行多个程序,没有必要一个一个运行,直接使用&&符号即可。例如,如果你想同时运行mkdir、ping和ls,你可以这样运行:$nohupbash-c'mkdirfiles&&ping-c1baidu.com&&ls'>output.txt终止后台运行的进程上面,nohup命令结合&符号可以让进程在后台运行,即使终端关闭也不受影响。这个时候,如果你想终止进程,怎么办呢?最简单的就是kill命令,相信你已经用过很多次了。$kill-9PID如何找到进程对应的pid?我们可以使用ps命令。$psaux|grepmyScript.sh或者您可以使用pgrep命令。接下来,使用kill命令终止进程。$kill-914942本文经授权转载自公众号「良墟Linux」。世界500强外企Linux开发工程师梁旭,在公众号分享大量Linux干货,欢迎关注!