Linux进程管理和服务控制

1、进程管理简介

1.1 进程

进程是正在执行当中的程序(命令),每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。

  • 程序被执行时,执行人的权限和属性、以及程序的代码都会被加载入内存,操作系统就会给这个进程分配一个ID号,我们称为PID(进程ID)。

1.2 程序

程序是人使用计算机语言编写的可以实现特定目的或解决特定问题的代码集合。

  • 使用计算机语言编写
  • 可以执行
  • 实现一定功能的代码

1.3 进程管理的作用

  • 判断服务器健康状态
  • 查看系统中所有的进程
  • 杀死进程

2、进程的查看

2.1 ps命令

静态显示系统中的进程

ps aux
// 查看系统中所有进程,使用BSD操作系统格式

// 示例
[root@JLin ~]# ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.5 242608 11152 ?        Ss   7月06   0:02 /usr/lib/systemd/systemd 
root           2  0.0  0.0      0     0 ?        S    7月06   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   7月06   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   7月06   0:00 [rcu_par_gp]
root           6  0.0  0.0      0     0 ?        I<   7月06   0:00 [kworker/0:0H-kblockd]

ps -ef
// 查看系统中所有进程,使用Linux标准命令格式
a:显示一个终端的所有进程,除了会话引线
u:最小进程的归属用户及内存的使用情况
×:显示没有控制终端的进程

-e	#显示所有进程,与-A效果相同
-l	#以长格式显示
-F	#显示更详细的完整格式的进程信息
-f	#显示更详细的完整格式的进程信息
-H	#以进程层级格式显示进程相关信息
-o	#根据自己的需要选择要显示的字段

// 示例
[root@JLin ~]# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 7月06 ?       00:00:02 /usr/lib/systemd/systemd --switched-root 
root           2       0  0 7月06 ?       00:00:00 [kthreadd]
root           3       2  0 7月06 ?       00:00:00 [rcu_gp]
root           4       2  0 7月06 ?       00:00:00 [rcu_par_gp]
root           6       2  0 7月06 ?       00:00:00 [kworker/0:0H-kblockd]


2.2 pstree命令

pstree命令将所有进程以树状图显示

pstree
-p:显示进程的PID
-u:显示进程的所属用户

// 示例
[root@JLin ~]# pstree
systemd─┬─AliYunDun───24*[{AliYunDun}]
        ├─AliYunDunUpdate───5*[{AliYunDunUpdate}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─2*[agetty]
        ├─aliyun-service───6*[{aliyun-service}]
        ├─assist_daemon───7*[{assist_daemon}]

// 如果没有pstree命令,使用下面命令安装
yum -y install psmisc

2.3 pidof命令

根据进程名查PID号

pidof [进程名]

2.4 top命令

实时查看进程,类似于windows的任务管理器

语法:top [选项]
选项:
-d 秒速:指定top命令每隔几秒更新,默认是3秒
-n 次数:指定top命令执行的次数,一般和“-b”合用
-b 使用批处理模式输出,一般和“-n”选项合用,用于把top命令重定向到文件中
-p 指定PID,之查看某个PID的进程
-s 使top在安全模式运行,避免在交互模式种出现错误
-u 用户名:只监听某个用户的进程

// 示例:
[root@JLin ~]# top
top - 17:09:34 up 1 day,  1:20,  2 users,  load average: 0.09, 0.08, 0.03
Tasks: 106 total,   2 running, 104 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.7 us,  6.4 sy,  0.0 ni, 87.0 id,  0.0 wa,  1.0 hi,  0.0 si,  0.0 st
MiB Mem :   1818.6 total,    479.3 free,    666.4 used,    672.9 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   1002.9 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND               
   1075 root      10 -10  228332  82252  15840 S   3.7   4.4  23:27.79 AliYunDun             
 225855 root      20   0  157268   6344   4712 S   0.7   0.3   0:00.65 sshd                  
    705 root      16  -4  150756   2856   2020 S   0.3   0.2   0:05.91 auditd                
    851 root      20   0  224996  40792  39060 S   0.3   2.2   0:24.62 sssd_nss              
  14910 root      20   0 3048840 467968  30132 S   0.3  25.1   4:15.79 java                  
      1 root      20   0  242608  11152   8392 S   0.0   0.6   0:02.83 systemd               
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.01 kthreadd

// 只查看PID为1075的进程
[root@JLin ~]# top -p 1075
top - 17:10:40 up 1 day,  1:21,  2 users,  load average: 0.03, 0.06, 0.02
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  6.4 us,  6.4 sy,  0.0 ni, 85.5 id,  0.3 wa,  1.4 hi,  0.0 si,  0.0 st
MiB Mem :   1818.6 total,    481.3 free,    664.3 used,    673.0 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   1004.9 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND               
   1075 root      10 -10  228332  82252  15840 S   4.7   4.4  23:30.45 AliYunDun 

// 让top命令只执行一次,然后把结果保存到top.log文件中
[root@JLin ~]# top -n 1 -b > /root/top.log
[root@JLin ~]# less top.log
top - 17:11:30 up 1 day,  1:22,  2 users,  load average: 0.09, 0.06, 0.02
Tasks: 106 total,   2 running, 104 sleeping,   0 stopped,   0 zombie
%Cpu(s):  6.2 us,  6.2 sy,  0.0 ni, 87.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1818.6 total,    479.7 free,    665.8 used,    673.1 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   1003.4 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   1075 root      10 -10  228332  82252  15840 S   6.7   4.4  23:32.73 AliYunDun
      1 root      20   0  242608  11152   8392 S   0.0   0.6   0:02.84 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.01 kthreadd
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp

2.5 vmstat命令

vmstat 命令监控系统资源

vmstat [刷新延迟] [刷新次数]

[root@JLin ~]# vmstat 1 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0      0 492696   2104 686820    0    0     7     7   66  399  2  2 96  0  0
 0  0      0 492472   2104 686820    0    0     0     0  744 1625  3  4 93  0  0
 0  0      0 493016   2104 686828    0    0     0     0  873 2380  8 10 82  0  0



3、进程管理

3.1 发送信号管理进程

kill命令发送信号来管理进程

[root@JLin ~]# 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.2 kill命令

使用信号管理进程

// 语法:
kill [-信号] PID

// 使用kill -1 信号让PID为2246的进程重启
[root@JLin ~]# kill -1 2246

// 使用kill -19信号,让vim进程暂停
[root@JLin ~]# vi test.sh

// 查看这个进程的状态s(休眠)和+(位于后台)
[root@JLin ~]# ps aux | grep "vi" l grep -v "grep"
root 2313 0.0 0.2 7116 1544 pts/1 S+19:20 0:00 vi test.sh

// 使用-19让PID是2313的进程暂停
[root@JLin ~]# kill -19 2313

// 进程的状态变成了T(暂停)状态
[root@JLin ~]# ps aux | grep "vi" l grep -v "grep"
root 2313 0.0 0.2 71161580 pts/1 T 19:20 0:00 vi test.sh

// kill的综合用法
过滤出指定参数的所有进程ID并全部kill
ps -ef | grep [参数名] | grep -v grep | awk '{print $2}' | xargs kill -9

3.3 killall命令

killall后面加进程名,表示将匹配到的以进程名为名的进程全部杀死

// 语法
[root@JLin ~]# killall[选项][信号] [进程名]

// 选项:
-i:交互式,询问是否要杀死某个进程
-I:忽略进程名的大小写

// 示例
// 杀死进程名为sleep的所有进程
[root@JLin ~]# ps -eflgrep sleep
root 1914 1272 0 19:58 pts/0 00:00:80 sleep 100eroot 1915 1272 0 19:58 pts/0 0o:00:00 sleep 50oroot 1916 1272 0 19:58 pts/0 0o:00:00 sleep 700
root 1920 1272 0 19:58 pts/0 00:00:00 grep --color=auto sleep[ root@localhost ~]# killall sleep
[1] Terminated sleep 100o
[2]- Terminated sleep 5oo[3]+Terminated sleep 700
[root@JLin ~]# ps -ef | grep sleep
root 1923 12720 19:58 pts/0 00:0o:00 grep --color=auto sleep

4、查看cpu核心数

配置文件/proc/cpuinfo存放着cpu信息

// 查询结果有几行,cpu就有凡核
[root@JLin ~]# grep 'model name' /proc/cpuinfo
model name      : Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz

5、服务控制的方式

Rhel6 及其以前的版本

service SERVICE_NAME start
service SERVICE_NAME stop
service SERVICE_NAME status
service SERVICE_NAME restart
chkconfig --add SERVICE_NAME
chkconfig SERVICE_NAME on
chkconfig SERVICE_NAME off

Rhel7 及其以后的版本

systemctl start SERVICE_NAME
systemctl stop SERVICE NAME
systemctl status SERVICENAME
systemctl restart SERVICE NAME
systemctl enable SERVICENAME
systemctl disable SERVICE_NAME
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汉只只

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值