我们都知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务。而不能让程序在前台后台之间切换。而 Linux 提供了 fg 和 bg 命令,让我们轻松调度正在运行的任务。
假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctrl-Z ,挂起这个程序,然后可以看到系统提示(方括号中的是作业号):
命令如下
ubuntu@clarence:~& top //按下ctrl + z
[1]+ Stopped top
ubuntu@clarence:~$ jobs //查看后台任务
[1]+ Stopped top
ubuntu@clarence:~$ fg 1 //在前台运行
浅谈Ctrl-z
我们都知道kill命令可以杀死进程,但是实际上kill是给程序发送信号,信号是操作系统与程序之间进行通信时所采用的几种方式中的一种(最近阅读的操作系统概念中也提到了。)
在使用Ctrl-z和Ctrl-c,终端接受了其中一个按键组合,会给前端运行的程序发送一个信号。使用Ctrl-c的情况下,会发送一个叫做INT的信号;当使用Ctrl-z时,则发送一个叫做TSTP(Terminal Stop终端停止)的信号。程序监听到信号的到来,做出响应。
kill也可以给进程发送信号,下面看看可以发送的信号有哪些:
ubuntu@clarence:~$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
命令小结:
&和&&:
在运行的指令末尾添加"&"可以让命令在后台运行
command1 && command2表示前者执行成功,执行后台命令
bg和fg命令:
如果发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,就可以用Ctrl-z可以挂起这个程序 []中的是作业号,然后我们可以把程序调度到后台执行: bg 作业号
fg 将后台中的命令调至前台继续运行
bg 将一个在后台暂停的命令,变成继续执行
ctrl+z 可以将一个正在前台执行的命令放到后台,并且暂停
jobs 查看当前有多少在后台运行的命令 []里面是序号,不是pid