接着之前的Linux系列篇,第二篇主要介绍进程和服务,从进程到服务,由浅入深的知识系统的介绍。
Linux系统只认识二进制文件,那么当我们要让系统工作的时候,启动一个二进制文件,这个二进制文件就是程序。
程序一般放置在屋里磁盘中,然后通过用户的执行来触发,触发后会加载到内存中称为一个个体,那就是进程。
为了让操作系统可以管理这个进程,进程会给予执行者权限/属性等参数,以及进程所需的脚本或数据等,最后在给予一个PID。
我们将它在后台启动并一直持续不断地运行,常驻在内存当中的进程,被我们称为服务。
有时我们想把服务放入后台执行,有多种办法,下面利用后台管理任务和数据流,把输出的信息都重定向到/tmp/log.txt
文件中,96就是这次进程执行的PID。
[root@57926ad08c2f /]# tar -zpcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1 &
[1] 96
1.查看目前后台的任务状态
jobs 参数
# jobs -l
[1]+ 96 Done tar -zpcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1
2.将后台任务拿到前台来处理 fg
[root@57926ad08c2f /]# vim /run.sh &
[1] 98
[root@57926ad08c2f /]# jobs -l
[1]+ 98 Stopped (tty output) vim /run.sh
[root@57926ad08c2f /]# fg %1
vim /run.sh
[root@57926ad08c2f /]#
3.让任务在后台下的状态变成运行中 bg
4.管理后台当中的任务 kill
kill的使用语法kill -signal %jobnumber
,使用kill -l
来查看信号的列表,我们只介绍最常用的命令:
[root@57926ad08c2f /]# 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
进程管理最好用的三个命令分别是ps aux 、ps axjf 、pstree
,它们都是查看系统进程里很高效的工具。
[root@cc ~]# ps axjf | grep php
1 1573 1573 1573 ? -1 Ss 0 8:35 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
1573 8530 1573 1573 ? -1 S 99 0:01 \_ php-fpm: pool www
1573 8574 1573 1573 ? -1 S 99 0:00 \_ php-fpm: pool www
1573 8611 1573 1573 ? -1 S 99 0:00 \_ php-fpm: pool www
8850 9209 9208 8850 pts/1 9208 S+ 0 0:00 \_ grep --color=auto php
yum install -y pstree
安装。[root@cc ~]# pstree -pua | grep php
|-php-fpm,1573
| |-php-fpm,8713,nobody
| |-php-fpm,8715,nobody
| | |-grep,9415 --color=auto php
僵尸进程,僵尸进程的原因在于该进程应该已经执行完毕,或是应该终止了,但是该进程的父进程却无法完整的该进程结束掉,而造成该进程一直存在于内存当中。
如果发现在某个cmd后面接上<defunct>
时,就代表该进程一直存在于内存当中。
系统不稳定的时候就容易造成所谓的僵尸进程,记得要找出该进程的父进程,然后好好追踪进行主机的环境优化,看看有什么地方需要改善,不要只是直接的kill掉。
这里我们介绍两个常用的命令,free
和netstat
。
1.查看系统内存资源 free
free 参数详解:
free -m -s 20
2.追踪网络或socket文件
比如统计服务器上的连接数,18101和3306是端口号
netstat -ant|grep ESTABLISHED| wc -l;
netstat -ant|grep ESTABLISHED|grep 18101 |wc -l;
netstat -ant|grep ESTABLISHED|grep 3306 | wc -l
使用init管理服务,所有的服务启动脚本放置于/etc/ini.d/
目录,基本上都是使用bash shell所写成的脚本程序,要想到lnmp的一键安装包(现在也感觉lnmp超级方便),以服务器上的Nginx和php为例:
[root@cc ~]# /etc/init.d/nginx
Usage: /etc/init.d/nginx {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}
[root@cc ~]# /etc/init.d/php
Usage: /etc/init.d/php {start|stop|restart}
制定运行级别默认要启动的服务,以Nginx服务为例
从CentOs7.X以后,服务管理从init转向到systemd的方式,一般来说服务的启动有两个阶段,一个是开机要不要启动服务,一个是现在要不要启动这个服务。
systemctl cmd
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。