前后台进程
前台进程:在终端中运行的命令,一旦这个终端关闭,这个进程也随之消失;
后台进程:守护进程(Daemon),运行在后台的进程,不受终端控制,不需要跟终端交互,如,Web服务器的httpd等;
跟系统任务相关的几个命令:
& |
用在一个命令的最后,可以把这个命令放到后台执行. |
ctrl + z |
将一个正在前台执行的命令放到后台,并且暂停. |
jobs |
查看当前有多少在后台运行的进程.它是一个作业控制命令 |
fg(foreground process) |
将后台中的命令调至前台继续运行, 如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid) |
bg(background process) |
将一个在后台暂停的命令,变成继续执行; 如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid) |
例
Ctrl+z暂停并将vim a.txt放到后台
[root@tzPC ~]# vim a.txt [1]+ Stopped vim a.txt
状态变为T
[root@tzPC ~]# ps -aux | grep vim
root 3892 0.1 0.2 149148 4920 pts/0 T 18:37 0:00 vim a.txt root 3915 0.0 0.0 112712 960 pts/1 R+ 18:37 0:00 grep --color=auto vim
查看后台进程
[root@tzPC ~]# jobs [1]+ Stopped vim a.txt
将后台挂起的进程恢复到前台运行
[root@tzPC ~]# fg 1
kill关闭进程
kill [进程号] 关闭单个进程
killall 和pkill 关闭指定名字的进程
kill -l 列出所有支持的信号
常用kill 9
[root@tzPC ~]# 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
常见使用的信号,网络编程会经常使用
信号编号 信号名 1)SIGHUP 重新加载配置 2)SIGINT 键盘中断 crtl+c 3) SIGQUIT 退出 9)SIGKILL 强制终止 15)SIGTERM 终止(正常结束),缺省信号 18)SIGCONT 继续 19)SIGSTOP 停止 20) SIGTSTP 暂停 crtl+z
例
[root@tzPC ~]# ps -aux | grep a.txt root 3892 0.0 0.2 149148 4920 pts/0 T 18:37 0:00 vim a.txt root 3943 0.0 0.0 112712 968 pts/0 R+ 18:53 0:00 grep --color=auto a.txt [root@tzPC ~]# kill -9 3892
[root@tzPC ~]# killall sshd
[root@tzPC ~]# pkill sshd
进程优先级管理
优先级取值范围-20~19,越小优先级越高,默认是0
命令1:nice 指定程序的运行优先级
格式:nice -n command
命令2:renice 改变程序的运行优先级
格式:renice -n pid
例
指定运行vim的优先级为5
nice -n 5 vim a.txt
ctral+z挂起
查看进程ID
ps -aux | grep vim
查看优先级
top -p 3985
修改进程优先级
renice -10 3985
划重点!
使用screen后台实时执行备份命令
Screen有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中能操作一个像SSH/telnet那样的连接。
实战场景:公司晚上要备份1T数据,在xshell上直接执行备份脚本back.sh可行吗?或者直接运行back.sh&放到后台运行可以吗?关闭xshell后back.sh&还在后台执行吗?
答:xshell长时间连接,如果本地网络偶尔断开或xshell不小心关闭,都将让备份命令停止运行。
安装screen
yum -y install screen
安装完成后输入screen会创建一个新的ssh窗口
在这个窗口vim a.txt 输入某些内容后ctrl+z挂起,然后按住ctrl+a+d,这个screen就会被分离出来,回到最开始的终端窗口
[root@tzPC ~]# screen [detached from 4044.pts-0.tzPC]
查看挂起的会话
[root@tzPC ~]# screen -ls There is a screen on: 4044.pts-0.tzPC (Detached) 1 Socket in /var/run/screen/S-root.
进入挂起的会话
screen -r 4044
退出会话
exit
常用screen参数
screen -S test 新建一个叫test的会话
screen -ls 列出当前所有的会话
screen -r test 回到test会话
screen -d -r test 结束当前会话并回到test会话