您的位置:首页 > 运维架构 > Linux

nohup使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)

2017-08-17 15:19 1401 查看
你是否遇到过这样的情况:从终端软件登录远程的Linux主机,将一堆很大的文件压缩为一个.tar.gz文件,连续压缩了半个小时还没有完成,这时,突然你断网了,你登录不上远程linux主机了,那么前面的半个小时就会前功尽弃,你非常气愤……
在Linux下,如果你要执行的shell命令耗时特别长,并且:(1)你的网络不稳定,随时可能断网;或者(2)你在执行了shell命令之后必须要关闭终端软件(例如SecureCRT)。

那么你就需要以脱离终端的方式在后台运行这个shell命令。
方法如下:
(1)输入命令:
nohup 你的shell命令 &
重定向输出文件的格式:  
                                  nohup command > myout.file 2>&1 &
                                  nohup python crawl_21fh.py > /data/health_doc/21fh/print_log.log 2>&1 &
(2)回车,使终端回到shell命令行;
(3)输入exit命令退出终端:exit
(4)现在可以关闭你的终端软件了,等过足够的时间,让你的shell命令执行完了再上去看结果吧。
其中,nohup命令可以让你的shell命令忽略SIGHUP信号,即可以使之脱离终端运行;“&”可以让你的命令在后台运行。
以脱离终端的方式在后台运行shell命令有这样几个好处:只要你执行过了命令,那么你的网络中断不会对你有任何影响,并且你就可以关闭终端软件了。

查看运行的后台进程

(1)jobs -l



jobs命令只看当前终端生效的,关闭终端后,在另一个终端jobs已经无法看到后台跑得程序了,此时利用ps(进程查看命令)

(2)ps -ef 

a:显示所有程序
u:以用户为主的格式来显示
x:显示所有程序,不以终端机来区分




注:

  用ps -def | grep查找进程很方便,最后一行总是会grep自己

  用grep -v参数可以将grep命令排除掉



  再用awk提取一下进程ID 





3.如果某个进程起不来,可能是某个端口被占用

查看使用某端口的进程





查看到进程id之后,使用netstat命令查看其占用的端口



使用kill杀掉进城后再启动

4.终止后台运行的进程

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux
相关文章推荐