【Linux系列教程】进程调度和控制

  • 终端命令默认在前台运行

一、nohup命令

1.将命令放到后台运行

# nohup 命令 & 
# nohup sleep 100 & 

2.查看后台运行的任务

# jobs -l 
[1]+  5200 Running                 nohup sleep 100 &

3.讲任务调回前台

# fg 任务编号
[root@localhost ~]# fg 1
nohup sleep 100

4.讲正在运行的任务调入后台,并且暂停运行

  • ctrl + z

二、向进程发送信号

1.kill命令

# kill  [-信号编号/名称]   PID

# killall [-信号编号/名称]   进程名称 

2.查看信号

[root@localhost ~]# 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

3.常用信号

15 SIGTERM

  • 正常结束进程
  • 默认
[root@localhost ~]# kill -15 6879

[root@localhost ~]# kill 6887 

9 SIGKILL

  • 结束进程(异常)
[root@localhost ~]# kill -9 6893 

1 SIGHUP

  • 让进程重新读取配置文件
# kill -HUP 父进程ID
[root@localhost ~]# rpm -q httpd	#安装阿帕奇服务器测试
httpd-2.4.6-97.el7.centos.5.x86_64
[root@localhost ~]# 
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# 
[root@localhost ~]# ps -elf | grep http
4 S root       7194      1  2  80   0 - 77604 poll_s 09:43 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
5 S apache     7195   7194  0  80   0 - 77604 inet_c 09:43 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
5 S apache     7196   7194  0  80   0 - 77604 inet_c 09:43 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
5 S apache     7197   7194  0  80   0 - 77604 inet_c 09:43 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
5 S apache     7198   7194  0  80   0 - 77604 inet_c 09:43 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
5 S apache     7199   7194  0  80   0 - 77604 inet_c 09:43 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
0 S root       7201   6829  0  80   0 - 28203 pipe_w 09:43 pts/0    00:00:00 grep --color=auto http
[root@localhost ~]# 
[root@localhost ~]# netstat -tunlp | grep http	#阿帕奇默认端口是80
tcp6       0      0 :::80                   :::*                    LISTEN      7194/httpd          
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf 
          Listen 7777	#修改监听端口为7777

[root@localhost ~]# kill -HUP 7194

[root@localhost ~]# netstat -tunlp | grep http
tcp6       0      0 :::7777                 :::*                    LISTEN      7194/httpd	#修改成功,并且进程号没有变