后台运行相关

使用ssh会话在远程linux服务器执行命令时,如果由于网络问题终端断开连接,则正在前台运行命令也会随之终止,为了解决这个问题,就需要将命令放在后台运行,并且退出当前终端也不会终止进程。

&命令


command &

在要执行的命令后加&表示将此进程放在后台运行,程序中的输出依然会在前台显示。

如果希望继续在当前终端工作的话,可以用以下命令将输出重定向到文件中:

command > out.file 2>&1 &

命令中参数的含义见下文nohup命令

上述命令执行后,会显示出进程号。也可自己查询进程号:

ps -ef | grep

其中查询python进程:

ps -ef | grep python

杀死进程号为PID的进程:

kill PID

当ssh会话没有断开或用户未退出时,使用&执行的命令会在后台安静的运行。

但当用户退出或由于意外断开连接时,命令依然会终止

nohup命令


nohup在维基百科中的定义:

nohup 是一个 POSIX 命令,用于忽略 SIGHUP ("signal hang up" 译:挂断信号) 。 SIGHUP信号是终端注销时所发送至程序的一个信号。nohup命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到终端上。

也就是说,nohup可以防止终端注销时导致的进程终止。

通常将nohup&命令放在一起使用:

nohup command &

此时命令将在后台运行,且断开ssh会话或退出当前用户都不会终止进程。

nohup命令默认将程序所有的输出保存到当前目录的nohup.out文件中,也可以指定输出文件:

nohup command > out.file 2>&1 &

其中> out.file将输出指定到out.file文件,2>&1将标准错误信息重定向到标准输出(0,1,2分别代表stdin标准输入,stdout标准输出,stderr标准错误),最后的&即为转到后台运行。

注意:程序转入后台运行之后,最好使用exit来退出当前用户,否则可能由于非正常退出导致进程意外终止。

# 查看日志文件


nohup会将输出或错误信息打印到nohup.out文件中,我们需要在程序运行结束之后查看该文件,用来查看程序运行过程或检查程序是否正常运行。

Linux中通常用tail命令来查看日志文件,tail命令参数如下:

-f 循环读取

-q 不显示处理信息

-v 显示详细的处理信息

-c<数目> 显示的字节数

-n<行数> 显示行数

--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束. 

-q, --quiet, --silent 从不输出给出文件名的首部 

-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒 

此处我们也将nohup.out看作日志文件,以下命令表示查看nohup.out文件的最后5行:

tail -n 5 nohup.out

# jobs命令


jobs用来查看当前终端有哪些后台进程

jobs -l可以显示后台任务的进程号

jobs命令的输出结果中,+表示是当前的作业,-表示是当前作业的下一个作业。

任务的状态分为3种:

RunningStopped(程序暂停),Terminated(进程终止)。

不过jobs只对当前终端有效,在新的终端中将无法查询,此时就需要使用上文中的ps命令来查询后台进程。

# 前台进程挂起和终止


ctrl + z将正在前台运行的程序转至后台,并挂起(Stopped)

ctrl + c终止前台程序

# 后台进程挂起和终止


red hat中,通过:

kill -stop PID

将后台进程挂起(Stopped),其中PID为ps查询的进程号。

通过jobs查看任务号numkill %num终止进程,

或者通过ps查看进程号PIDkill PID终止进程。

# fg、bg命令


fg命令将后台程序转至前台运行,若有多个后台进程,则用fg %num将后台进程num转至前台。

bg将挂起的任务进程重新启动,若有多个后台进程,则用bg %num将后台任务num重新启动。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值