大家好,欢迎来到IT知识分享网。
不中断的在后台运行test.sh:
nohup ./test.sh &
其中,“&” : 只在后台运行
nohup : 不挂断的运行,注意并没有后台运行的功能,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行。
注意了nohup没有后台运行的意思、&才是后台!!!
如图,提交到后台以后,会告诉你当前窗口的命令编号“[1]”,以及该进程在系统中的进程编号64746。
你可以通过以下两个方式,停掉你后台的程序:
法子1:在该窗口找到命令编号,然后执行kill %num,如kill %1
法子2:或者利用系统进程编号,然后执行kill pid,如64746
当进程提交太久,找不到两个编号的时候,我们可以通过以下命令进行查看:
1. 使用ps -ef |grep test.sh可查看到正在运行的test.sh脚本进程。
2. jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。(展示该窗口下提交的任务),以及命令编号。
ps命令的使用,见linux常用命令——ps。
也可以通过以下命令查看详细信息:
ps -aux | grep "test.sh" #a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分
其他使用技巧:
- 将后台中的命令调至前台继续运行。如果后台中有多个命令,可以用fg %jobnumber(是命令编号,不是进程号)将选中的命令调出。
- 将一个在后台暂停的命令,变成在后台继续执行。如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出。
命令详解:
nohup command > myout.file 2>&1 &
0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error)
2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到myout.file文件中。默认情况下,后台运行的报告信息会被导入到目录下的nohup.out文件中。
0 22 * * * python test.py > test.log 2>&1
这是放在系统中的定时任务,晚上22点时候执行这个任务,启动这个python的脚本,并把日志写在test.log文件中。
使用实例:
下载:使用aspera下载EBI数据库的测序数据。(如果大家感兴趣,接下来可以写一下关于公共数据库下载的内容。)
nohup ascp -QT -l 100M -i ~/asperaweb_id_dsa.openssh era-fasp@fasp.sra.ebi.ac.uk:/vol1/fastq/SRR310/004/SRR/SRR.fastq.gz . &
nohup+命令+&:将命令放置到后台运行,并且断开连接依旧运行,QT参数可以断点续存并且加到最大速度。
忘记挂后台了怎么办?
- ctrl + z 把程序挂起,jobs 查看任务状态。是否已经被停止和命令编号[num]
- 使用bg %num命令把作业号为1的任务放入后台,并从停止状态变为运行状态,相当于加了&后接着运行。
- 运行disown -h %num,表示在终端关闭时不对作业号为1的程序发送终止信号,外部因素将不影响程序的运行。
nohup和disown都可以使程序不挂断,可以获得一样的效果,但原理不太一致。
nohup可以使程序忽略挂断信号(SIGHUP)或者使程序脱离终端的控制,从而终端不能再对其发送挂断信号(SIGHUP);
disown则是内生于shell,告诉shell在终止时不对对应程序发送挂断信号(SIGHUP)。
感谢大家的观看与支持!!!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/108482.html