Linux进程管理 --学习笔记

1、进程管理的作用

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

2、进程的查看

      ps

       ·ps -aux
        #查看系统中所有进程

参数:

ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程

au(x) 输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

USER: 行程拥有者
PID: 进程ID号
%CPU: 占用的 CPU 使用率
%MEM: 占用的内存使用率
VSZ: 占用的虚拟内存大小
RSS: 占用的内存大小
TTY: 改进程是在那个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字 
     符界面终端,tty7是图形终端。pts/0-255代表虚拟终端
STAT: 该行程的状态:
      D: 无法中断的休眠状态 (通常 IO 的进程)
      R: 正在执行中
      S: 静止状态(睡眠)
      s: 包含子进程
      T: 暂停执行
      Z: 不存在但暂时无法消除
      W: 没有足够的记忆体分页可分配
      +: 位于后台
      <: 高优先序的行程
      N: 低优先序的行程
      L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令

top命令  --判断系统健康状态

[root@localhost ~]# top [-选项]

[选项]
    -d 秒数 :指定top命令每隔几秒更新。默认为3秒
    -b :使用批处理模式呼入。一般和"-n"选项合用,可以用来将 top 的结果输出到档案内
    -n 次数:指定top命令执行的次数。一般和"-b"选项合用
    -p 进程ID:显示进程号为139的进程信息,CPU、内存占用率等
[top交互模式中的命令]
    ?或h :显示交互模式的帮助
    P :以CPU使用率排序,默认就是该项
    M :以内存的使用率排序
    N :以PID排序
    q :退出top


单纯使用top 只能看到使用率前几的进程,要想看到全部进程的进程信息,cpu,内存占用率可以使用批处理并输出到文件
[root@localhost ~]# top -b -n 1 > top.log

上图显示的含义:
第一行:
    当前系统时间为 08:40:27
    当前运行时间为 50min     (例: up 1 day, 10:25 表示本机已经运行1天10小时25分钟)
    当前计算机登录用户数 1    (1 users)
    系统在五分钟、十分钟、十五分钟之前的平均负载分别为 0.00 0.01 0.03 (主要指标)
    (load average :0.00,0.01,0.03   一般认为小于cpu核数时,负载较小;如果大于cpu核数,表示系统已经超出负荷)
第二行:
    系统中的进程总数为 94 正在运行的进程数为 1  睡眠的进程数为 93 正在停止的进程数为 0 僵尸进程为 0
    (Tasks: 94 total,1 runing ,93 sleeping ,0 stopped ,0 zombie)
第三行:
    用户模式占用的cpu百分比                0.0 us
    系统模式占用的cpu百分比                0.2 sy
    改变过优先级的用户进程占用的cpu百分比    0.0 ni
    空闲cpu的百分比                       99.8 id (主要指标)
    等待输入输出的进程的占用的cpu百分比      0.0 wa
    硬中断请求服务占用的cpu百分比           0.0 hi
    软中断请求服务占用的cpu百分比           0.0 si
    虚拟cpu等待实际cpu的时间的百分比        0.0 st
    (%Cpu(s): 0.0 us , 0.2 sy , 0.0 ni , 99.8 id , 0.0 wa , 0.0 hi , 0.0 si , 0.0 st )
第四行:
    单位KB
    物理内存的总量              629984 total
    空闲的物理内存数量           144808 free (主要指标)
    已经使用的物理内存数量       246276 used
    作为缓冲的内存总量           238900 buff/cache
    (KiB Mem:  629984 total, 144808 free, 246276 used, 238900 buff/cache)
第五行:
    交换分区(虚拟内存)总量        1023996 total
    空闲交换分区的总量            1023996 free
    已经使用的交换分区的总量       0 used
    可用交换取总量                279788 avail Mem
    (KiB Swap: 1023996 total, 1023996 free, 0 used.  279788 avail Mem)
    

 【有计划的重启,是服务器维护的原则】

3、杀死进程

     ① kill命令    (杀死单一进程)

[root@localhost ~]# kill -l
#查看可用的进程信号

[root@localhost ~]# kill [选项][信号] 进程ID


[信号]
 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   程序终止信号,用于终止前台进程。相当于输出ctrl+c快捷键
8)  SIGFPE   在发生致命的算术运算错误时发出
9)  SIGKILL  用来立即结束程序的运行,本信号不能被阻塞、处理和忽略。一般用于强制终止进程
15) SIGALRM  正常结束进程的信号,kill命令的默认信号。如果进程已经发生问题,该信号无法正常终止 
             进程,我们才尝试SIGKILL信号,即信号9
18) SIGCONT  该信号可以让暂停的进程回复执行,本信号不能被阻断
19) SIGSTOP  该信号可以暂停前台进程,相当于输入ctrl+z快捷键。本信号不能被阻断

② pkill 命令

[root@localhost ~]# pkill [选项][信号] 进程名
#按照进程名终止一组进程

[选项]
    -t 终端号: 按照终端号踢出用户
    -o:仅向找到的最小(起始)进程号发送信号;
    -n:仅向找到的最大(结束)进程号发送信号;
    -P:指定父进程号发送信号;
    -g:指定进程组;
    -t:指定开启进程的终端。

w命令: 查看当前登录用户名
[root@localhost ~]# w
 03:44:45 up 33 min,  2 users,  load average: 0.00, 0.01, 0.04
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.68.1     03:11    5.00s  0.01s  0.00s w
root     pts/1    192.168.68.1     03:44   33.00s  0.00s  0.00s -bash

[root@localhost ~]# pkill -9 -t pts/1 
踢出远程登录 pts/1

4、进程优先级

        Linux操作系统是一个多用户、多任务的操作系统,Linux系统中通知运行着非常多的进程。但是CPU在同一个时钟周期内只能运算一个指令(现在的 CPU 采用了多线程、多核心技术,所以在一个时钟周期内可以运算多条指令。 但是同时运算的指令数也远远小于系统中的进程总数)。进程优先级决定了每个进程处理的先后顺序。

[root@localhost ~]# ps -el
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0     1     0  0  80   0 - 10299 ep_pol ?        00:00:01 systemd
1 S     0     2     0  0  80   0 -     0 kthrea ?        00:00:00 kthreadd
1 S     0     3     2  0  80   0 -     0 smpboo ?        00:00:00 ksoftirqd/0
1 S     0     5     2  0  60 -20 -     0 worker ?        00:00:00 kworker/0:0H
1 S     0     7     2  0 -40   - -     0 smpboo ?        00:00:00 migration/0
1 S     0     8     2  0  80   0 -     0 rcu_gp ?        00:00:00 rcu_bh
...


#PRI 代表Priority,NI代表Nice。这俩个值都是优先级,数字越小代表该进程优先级越高。但是,PRI值是由内核动态调整的,用户不能直接修改。所以我们只能通过修改 NI 值来影响 PRI 值,间接地调整进程优先级。


PRI(最终值) = PRI(初始值) + NI


修改 NI 值时有几个注意事项:
NI 范围是 -20~19。
普通用户调整 NI 值的范围是 0~19,而且只能调整自己的进程。
普通用户只能调高 NI 值,而不能降低。如原本 NI 值为 0,则只能调整为大于 0。
只有 root 用户才能设定进程 NI 值为负值,而且可以调整任何用户的进程。

 

nice和renice命令

[root@localhost ~]# renice [优先级] PID

#renice命令是修改已经存在进程的NI值的命令

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值