linux bg命令用法,linux命令jobs、fg、bg、kill、pkill、nohup

linux命令jobs、fg、bg、kill、pkill、nohup

首页 计算机相关 linux命令 linux命令jobs、fg、bg、kill、pkill、nohup

jobs 可以列出当前进程组后台的程序。-l同时列出 PID 的号码

-r仅列出正在背景 run 的工作

-s仅列出正在背景当中暂停(stop)的工作

下面我们编译一个C程序(main.c)来充当测试用#include

int main(){

int i = 0;

while(1){

i++;

sleep(1);

}

}#我们先运行一个不会终止的程序

#然后按下 ctrl+z,此时程序暂停

[root@192 tmp]# /root/c/a.out

^Z

[1]+ Stopped /root/c/a.out

#在运行2个程序,此时加上 &

[root@192 tmp]# /root/c/a.out &

[2] 43302

[root@192 tmp]# /root/c/a.out &

[3] 43304

执行上面指令,此时,后台已经有2个程序,一个运行,一个暂停。我们可以利用 jobs 来查看。1,2,3代表工作号码,+ 标记代表当调用fg时,默认会调到前台运行的程序,-标记代表最近被放入后台的程序。[root@192 tmp]# jobs -l

[1]+ 43301 Stopped /root/c/a.out

[2] 43302 Running /root/c/a.out &

[3]- 43304 Running /root/c/a.out 此时,工作号为1的程序在后台开始运行

[root@192 tmp]# bg %1

[1]+ /root/c/a.out &

[root@192 tmp]# jobs -l

[1] 43301 Running /root/c/a.out &

[2]- 43302 Running /root/c/a.out &

[3]+ 43304 Running /root/c/a.out &

#会把工作号为1的程序拉到前台来运行

[root@192 tmp]# fg %1

#在后台重新运行工作号为1的进程

[root@192 tmp]# bg %1

此时当我们关闭连接终端时,同一进程组里的程序都会受到 SIGHUP 和 SIGCONT 信号,SIGHUP信号默认的处理动作为终止进程,SIGCONT信号时为了先让停止的进程重新开始以便 SIGHUP 能终止他。

这就是为啥我们平时利用 & 挂在后台运行的程序在我们关闭终端时就会跟着终止。

有几种方法可以让进程不终止。

1.自己开发的程序主动忽略 SIGHUP 信号。2.利用nohup指令来运行程序。3.利用定时器 at 来延时执行程序。#错误输出和标准输出都会输出到nohup.out

nohup /root/c/a.out &

#如果不需要输出数据则可以这样运行

nohup /root/c/a.out > /dev/null 2>&1 &

#利用 at 来执行命令

#1分钟后运行

echo '/root/c/a.out' | at now + 1 minutes

kill 命令可以向进程或进程组发送信号-l列出所有信号

-s用信号名发送信号

-u指定用户

-n 用信号编号来发送[root@192 tmp]# kill -l

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP

6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL10) SIGUSR1

11) SIGSEGV12) SIGUSR213) SIGPIPE14) SIGALRM15) SIGTERM

16) SIGSTKFLT17) SIGCHLD18) SIGCONT19) SIGSTOP20) SIGTSTP

21) SIGTTIN22) SIGTTOU23) SIGURG24) SIGXCPU25) SIGXFSZ

26) SIGVTALRM27) SIGPROF28) SIGWINCH29) SIGIO30) SIGPWR

31) SIGSYS34) SIGRTMIN35) SIGRTMIN+136) SIGRTMIN+237) SIGRTMIN+3

38) SIGRTMIN+439) SIGRTMIN+540) SIGRTMIN+641) SIGRTMIN+742) SIGRTMIN+8

43) SIGRTMIN+944) SIGRTMIN+1045) SIGRTMIN+1146) SIGRTMIN+1247) SIGRTMIN+13

48) SIGRTMIN+1449) SIGRTMIN+1550) SIGRTMAX-1451) SIGRTMAX-1352) SIGRTMAX-12

53) SIGRTMAX-1154) SIGRTMAX-1055) SIGRTMAX-956) SIGRTMAX-857) SIGRTMAX-7

58) SIGRTMAX-659) SIGRTMAX-560) SIGRTMAX-461) SIGRTMAX-362) SIGRTMAX-2

63) SIGRTMAX-164) SIGRTMAX#向所有进程(除了pid=1的进程)发送信号

kill -s SIGTERM -1

#向当前进程组的所有进程发送信号

kill -s SIGTERM 0

#向进程id为1234进程发送 SIGTERM 信号

#下面3个等同

kill 1234

kill -15 1234

kill -s SIGTERM 1234

pkill 用来根据程序名来发送信号,具体用法参照 pkill

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值