在使用Linux运行程序的时候,常常遇到需要耗费一定时间才能完成的文件,如果在前台运行,此时坐在电脑前的你只能被迫打开其他软件进行摸鱼。
既然前台影响你操作,那不如像Windows一样,把这个进程放入后台,然后接着打下一份工!就好像正在刷慕课的你,想同时打游戏,这时只需要把开着慕课的网页放在后台并打开游戏即可。
在Windows系统下,只需要点点点,而在Linux下,一行命令即可。
nohup 是 no hang up 的缩写,即不挂断的意思,此命令没有后台运行,且终端不能标准输入。
如果你正在运行一个进程,而且你觉得在关闭终端时该进程还不会结束,那么可以使用nohup命令,使服务器能够在你关闭终端之后继续运行相应的进程。
语法格式 :nohup Command [Arg] [&]
参数说明:
Command:要执行的命令。
Arg:一些参数,可以指定输出文件。
&:让命令在后台执行,终端退出后命令仍执行。
在不对输出进行设置的时候,所有的输出会被重定向到nohup.out的文件中,或者 > /dev/null 丢弃到黑洞中。
如nohup command > out.file 2>&1 &
在上述例子中,0代表stdin (standard input),1代表stdout (standard output),2代表stderr (standard error)。2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到out.file文件中。
&:指在后台运行,当用户退出账号或终端时,命令将一起退出。
bash 1.sh & #运行1.sh,当退出服务器时,该命令停止
nohup:不挂断的运行,注意并没有后台运行的功能,指用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,即使我们断开SSH连接也不会影响运行。
nohup bash 1.sh #将bash 1.sh任务放到后台,关闭标准输入,终端不再能够接收任何输入(标准输入),重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell退出当前session程序将依然继续运行。
如果把nohup和&结合起来,就能使命令在后台永久的运行。
nohup bash 1.sh &>out.file 2>&1
命令放到后台了,我想看看它现在是个啥状态,是卡住没跑了还是正在进行,又或者是已经跑完了,该如何查看呢?
cat out.file # 查看输出文件
top -u 用户名 # 查看该用户名的进程
通过查看S(state)状态栏,可以发现有的进程是S(sleeping)休眠中,有的是R(running)进行中。
另外,Z表示僵死状态,N表示该进程优先值是负数。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有