1.ps:查看进程

该命令用于列出命令执行时刻的进程快照,如果想要动态的显示进程信息,可以使用top命令。

参数 说明
a(常用) 显示与终端相关的所有进程,包含每个进程的完整路径
x(常用) 显示与终端无关的所有进程
u(常用) 显示进程的用户信息
-e(常用) 显示所有进程
-f(常用) 额外显示UID、PPID、C与STIME栏位

示例:

1)ps命令常用组合(一)输出每个进程的信息

  1. [root@boxiaoyuan ~]# ps -ef
  2. UID PID PPID C STIME TTY TIME CMD
  3. root : ? :: /sbin/init
  4. root : ? :: [kthreadd]
  5. root : ? :: [migration/]
  6. root : ? :: [ksoftirqd/]
  7. root : ? :: [stopper/]
  8. root : ? :: [watchdog/]
  9. root : ? :: [migration/]
  10.  
  11. [root@boxiaoyuan ~]# ps aux | grep ssh #查找具体进程
    root 2546 0.0 0.0 66236 1148 ? Ss 08:31 0:00 /usr/sbin/sshd
    root 8708 0.0 0.1 102084 3544 ? Ss 09:34 0:02 sshd: root@pts/3
    root 22423 0.0 0.0 103332 864 pts/3 S+ 13:03 0:00 grep ssh

说明:

UID:该进程被该UID所拥有。

PID:进程的标识号。

PPID:进程的父进程的标识号。

C:CPU使用的资源百分比。

STIME:进程开始的时间。

TTY:该进程是在哪个终端机上运行,如果与终端机无关,则显示?,tty1-tty6是本机上面的登入者进程,pts/0是由网络连接进主机的进程。

TIME:进程所使用的总的CPU时间。

CMD:正在执行的命令行。

2)ps命令常用操作组合(二)显示每个进程信息

  1. [root@boxiaoyuan ~]# ps aux
  2. USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  3. root 0.0 0.0 ? Ss : : /sbin/init
  4. root 0.0 0.0 ? S : : [kthreadd]
  5. root 0.0 0.0 ? S : : [migration/]
  6. root 0.0 0.0 ? S : : [ksoftirqd/]
  7. root 0.0 0.0 ? S : : [stopper/]

说明:

USER:该进程属于的用户。

PID:该进程的进程号。

%CPU:该进程使用的CPU资源百分比。

%MEM:该进程使用的物理内存资源百分比。

VSZ:该进程使用掉的虚拟内存量(KB)。

RSS:该进程占用的固定内存量(KB)。

TTY:该进程是在哪个终端机上运行,如果与终端机无关,则显示?,tty1-tty6是本机上面的登入者进程,pts/0是由网络连接进主机的进程。

STAT:该进程目前的状态。R表示正在运行或可以运行;S表示正在终端睡眠中;D表示不可中断睡眠;T表示正在侦测或者是停止了;Z:表示已经终止,但是父进程无法正常终止它,变成僵尸进程;+表示前台进程;1表示多线程进程;N表示低优先级进程;<表示高优先级进程;s表示进程领导者;L已将页面锁定到内存中。

START:该进程被出发启动的时间。

TIME:该进程实际使用CPU运作的时间。

COMMAN:该进程的实际命令。

2.kill:终止进程

该命令可以终止希望停止的进程。

该命令的常用参数为-s,表示指定要发送的信号。

常用信号:

信号 说明
HUP(1) 挂起,通常因终端掉线或用户退出而引发
INT(2) 中断,通常为按下Ctrl+C组合键发出该信号
QUIT(3) 退出,通常为按下Ctrl+\组合键发出该信号
KILL(9) 立即结束进程的运行
TERM(15) 终止,通常在系统关机时发送
TSTP(20) 暂停进程的运行,通常是按下Ctrl+Z组合键发出该信号

kill默认使用的信号是15,用于结束进程,如果进程忽略此信号,可以使用信号9强制终止进程。

一般是先通过ps等命令获取到要终止的进程,然后直接使用kill 进程号就行。

  1. [root@boxiaoyuan ~]# ps aux| grep mysql
  2. root 0.0 0.0 ? S : : /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
  3. mysql 0.0 1.2 ? Sl : : /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
  4. root 0.0 0.0 pts/ S+ : : grep mysql
  5. [root@boxiaoyuan ~]# kill 2676 # 默认使用信号15,这种格式最为常用
  6. [root@boxiaoyuan ~]# ps aux| grep mysql
  7. root 0.0 0.0 ? S : : /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
  8. mysql 0.0 1.2 ? Sl : : /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
  9. root 0.0 0.0 pts/ S+ : : grep mysql
  10. [root@boxiaoyuan ~]# kill -s 2676 # 强制终止进程
  11. [root@boxiaoyuan ~]# ps aux| grep mysql
  12. mysql 0.0 1.2 ? Sl : : /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
  13. root 0.0 0.0 pts/ S+ : : grep mysql
  14. [root@boxiaoyuan ~]# kill -s
  15. [root@boxiaoyuan ~]# ps aux| grep mysql
  16. root 0.0 0.0 pts/ S+ : : grep mysql

3.pkill:通过进程名终止进程

使用kill命令终止进程需要先获取pid,有点繁琐,pkill可以通过进程名杀死指定进程及其所有子进程。

参数 说明
-u(常用) 终止指定用户的进程
-t(常用) 杀死指定终端的进程

示例:

1)通过进程名杀死指定进程

  1. [root@boxiaoyuan ~]# /etc/init.d/crond status
  2. crond (pid ) 正在运行...
  3. [root@boxiaoyuan ~]# pkill crond
  4. [root@boxiaoyuan ~]# /etc/init.d/crond status
  5. crond 已死,但是 subsys 被锁

2)通过终端名终止进程

  1. [root@boxiaoyuan ~]# w
  2. :: up :, users, load average: 0.90, 0.87, 0.60
  3. USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
  4. root pts/ 192.168.13.1 : .00s .20s .11s vim
  5. root pts/ 192.168.13.1 : .00s .34s .00s w
  6. [root@boxiaoyuan ~]# pkill -t pts/

4.top:实时显示系统中各个进程的资源占用状况

该命令可以实时的对系统处理器状态进行监控,能够实时显示系统各个进程的资源占用情况,可以按照CPU的使用,内存的使用和执行时间对任务进程进行排序,同时还可以通过交互式命令进行设定和显示。

示例

1)显示进程信息

  1. [root@boxiaoyuan ~]# top # 通常top命令不接任何参数
  2. top - :: up :, users, load average: 0.36, 0.23, 0.23
  3. Tasks: total, running, sleeping, stopped, zombie
  4. Cpu(s): 0.2%us, 0.3%sy, 0.0%ni, 99.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
  5. Mem: 1906280k total, 1608152k used, 298128k free, 28828k buffers
  6. Swap: 8388604k total, 48316k used, 8340288k free, 281380k cached
  7.  
  8. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
  9. git 1494m 363m S 0.7 19.5 :15.90 ruby
  10. gitlab-r S 0.3 0.3 :03.50 redis-server
  11. root 285m S 0.3 0.4 :22.24 docker
  12. jenkins 3002m 401m S 0.3 21.6 :34.39 java
  13. root R 0.3 0.1 :00.15 top

说明:

第一行:任务队列信息,和uptime命令的执行结果一样。

16:00:46  当前系统时间

up 7:30   系统已经运行了7个小时3分钟

2 users   当前两个用户登录系统

load average: 0.36, 0.23, 0.23 1min,5min,15min的系统平均负载

第二行:Tasks: 183 total 1 running, 182 sleeping, 0 stopped, 0 zombie  为任务数,当前共183个进程,其中182个休眠,1个运行,0个停止,0个僵死。

第三行:Cpu(s): 0.2%us(用户空间占用CPU百分比), 0.3%sy(系统空间占用CPU百分比), 0.0%ni(修改过优先级的进程占用CPU百分比), 99.5%id(空闲CPU百分比), 0.0%wa(I/O等待占用CPU百分比), 0.0%hi(硬中断占用CPU百分比), 0.0%si(软中断占用CPU百分比), 0.0%st(虚拟机占用CPU百分比)

第四行:Mem: 1906280k total(物理内存总量), 1608152k used(使用中的内存总量), 298128k free(空闲内存总量), 28828k buffers(缓冲的内存量)

第五行:Swap: 8388604k total(交换区总量), 48316k used(使用的交换区总量), 8340288k free(空闲的交换区总量), 281380k cached(缓存的内存量)

计算真正的可用的内存数为:第四行的free+第四行的buffers+第五行的cached。

在对内存进行监控时,要关注swap的used,如果这个值在不断的变化,说明内核正在不断进行内存和swap的数据交换,说明内存不够了或者运行程序内存溢出了。

第七行:PID(进程ID) USER(进程所有者)  PR(进程优先级)  NI(nice值,负值为高优先级,正值为低优先级) VIRT(进程使用的虚拟内存总量)  RES(进程使用的,未被换出的物理内存大小)  SHR(共享内存大小) S(进程状态) %CPU(占用CPU时间百分比) %MEM(进程使用的物理内存百分比) TIME+(进程使用的CPU时间总计)  COMMAND(进程名称)  

5. runlevel:输出当前运行级别

该命令用于输出当前Linux系统的运行级别。

  1. [root@boxiaoyuan ~]# runlevel
  2. N
  3. [root@boxiaoyuan ~]#

说明:0表示停机;1表示单用户模式;2表示无网络的多用户模式;3表示多用户模式;4未使用;5表示带图形界面的模式;6表示重启。

6.init:初始化linux进程

该命令是linux初始化工具,init进程是所有linux进程的父进程,它的进程号是1,init命令的主要任务是依据配置文件/etc/inittab创建linux进程。

  1. [root@boxiaoyuan ~]# init # 关机
  2. [root@boxiaoyuan ~]# init # 重启

7.service:管理系统服务

该命令用于对系统服务进行管理,比如启动(start),停止(stop),重启(restart),重新加载配置(reload),查看状态(status)等,该命令在Centos7中被systemctl取代。

示例:

1)查看当前服务状态

  1. [root@boxiaoyuan ~]# service --status-all # 显示所有服务状态
  2. abrt-ccpp hook is installed
  3. abrtd (pid ) 正在运行...
  4. abrt-dump-oops 已停
  5. acpid (pid ) 正在运行...
  6. atd (pid ) 正在运行...
  7. auditd (pid ) 正在运行...
  8. automount (pid ) 正在运行...
  9. 用法:/etc/init.d/bluetooth {start|stop}

2)管理系统服务

  1. [root@boxiaoyuan ~]# service crond
  2. 用法:/etc/init.d/crond {start|stop|status|restart|condrestart|try-restart|reload|force-reload}
  3. [root@boxiaoyuan ~]# service crond stop
  4. 停止 crond [确定]
  5. [root@boxiaoyuan ~]# service crond start
  6. 正在启动 crond [确定]
  7. [root@boxiaoyuan ~]# service crond restart
  8. 停止 crond [确定]
  9. 正在启动 crond [确定]
  10. [root@boxiaoyuan ~]# service crond status
  11. crond (pid ) 正在运行...

实际的工作中,推荐使用/etc/init.d/crond start/stop/restart/status这种格式管理服务,因为这种方式可以使用tab键自动补全。

8.nohup:用户退出系统进程继续工作

该命令可以将程序以忽略挂起信号的方式运行起来,被运行程序的输出信息将不会显示到终端。

无论是否将nohup命令的输出重定向到终端,输出都会写入到当前目录的nohup.txt文件中,如果当前目录的nohup.txt文件不可写,则会重定向到$HOME/nohup.txt文件中。

示例:

1)让直行的命令在当前会话终止后继续保存运行。

正常情况下,如果用户退出登录或者会话终止,则用户正在执行的并可持续一段时间的命令会自动终止,使用nohup命令,可以在用户退出或当前会话终止后继续保存运行。

  1. [root@centos76 ~]# nohup ping www.baidu.com
  2. nohup: ignoring input and appending output to nohup.out

然后关闭XShell标签,重新登录,发现命令仍然在运行。

  1. [root@centos76 ~]# ps -ef | grep ping
  2. root : ? :: ping www.baidu.com
  3. root : pts/ :: grep --color=auto ping
  4. root Apr06 ? :: /usr/libexec/gsd-housekeeping
  5. [root@centos76 ~]# tail -f nohup.out
  6. bytes from 61.135.169.125 (61.135.169.125): icmp_seq= ttl= time=20.4 ms
  7. bytes from 61.135.169.125 (61.135.169.125): icmp_seq= ttl= time=20.6 ms
  8. bytes from 61.135.169.125 (61.135.169.125): icmp_seq= ttl= time=19.9 ms
  9. bytes from 61.135.169.125 (61.135.169.125): icmp_seq= ttl= time=27.2 ms
  10. bytes from 61.135.169.125 (61.135.169.125): icmp_seq= ttl= time=25.9 ms
  11. bytes from 61.135.169.125 (61.135.169.125): icmp_seq= ttl= time=21.1 ms
  12. bytes from 61.135.169.125 (61.135.169.125): icmp_seq= ttl= time=24.1 ms
  13. bytes from 61.135.169.125 (61.135.169.125): icmp_seq= ttl= time=23.6 ms
  14. bytes from 61.135.169.125 (61.135.169.125): icmp_seq= ttl= time=21.4 ms
  15. bytes from 61.135.169.125 (61.135.169.125): icmp_seq= ttl= time=21.0 ms
  16. bytes from 61.135.169.125 (61.135.169.125): icmp_seq= ttl= time=21.7 ms
  17. bytes from 61.135.169.125 (61.135.169.125): icmp_seq= ttl= time=20.4 ms
  18. bytes from 61.135.169.125 (61.135.169.125): icmp_seq= ttl= time=20.2 ms
  19. bytes from 61.135.169.125 (61.135.169.125): icmp_seq= ttl= time=21.0 ms
  20. bytes from 61.135.169.125 (61.135.169.125): icmp_seq= ttl= time=25.4 ms
  21. ^C
  22. [root@centos76 ~]# kill
  23. [root@centos76 ~]# ps -ef | grep ping
  24. root : pts/ :: grep --color=auto ping
  25. root Apr06 ? :: /usr/libexec/gsd-housekeeping

说明:在实际工作中,我们一般会配合&运行nohup,表示让程序在后台运行。

注:本文内容为《跟老男孩学linux运维 核心系统命令实践》的学习笔记。

linux命令之进程管理命令的更多相关文章

  1. 12个Linux进程管理命令介绍(转)

    12个Linux进程管理命令介绍 [日期:2015-06-02] 来源:Linux中国  作者:Linux [字体:大 中 小]   执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的 ...

  2. [转帖]十二 个经典 Linux 进程管理命令介绍

    https://www.cnblogs.com/swordxia/p/4550825.html 接了 http referer 头 没法显示图片 可以去原始blog 里面去查看.   随笔- 109  ...

  3. Linux进程管理(第二版) --进程管理命令

    进程管理命令 一.查看用户信息.5.15 分钟内的系统的,优先值越小,优先权越大 ] 1.nice 指定程序运行的优先级 格式 nice -n command 例如 nice -5 myprogrem ...

  4. Linux就业技术指导(五):Linux运维核心管理命令详解

    一,Linux核心进程管理命令 1.1 ps:查看进程 1.1.1 命令解释 功能说明 ps命令用于列出执行ps命令的那个时刻的进程快照,就像用手机给进程照了一张照片.如果想要动态地显示进程,就需要使 ...

  5. 云计算:Linux运维核心管理命令详解

    云计算:Linux运维核心管理命令详解 想做好运维工作,人先要学会勤快: 居安而思危,勤记而补拙,方可不断提高: 别人资料不论你用着再如何爽那也是别人的: 自己总结东西是你自身特有的一种思想与理念的展 ...

  6. Linux系列教程(五)——Linux链接命令和权限管理命令

    前一篇博客我们讲解了Linux文件和目录处理命令,还是老生常淡,对于新手而言,我们不需要完全记住命令的详细语法,记住该命令能完成什么功能,然后需要的时候去查就好了,用的多了我们就自然记住了.这篇博客我 ...

  7. Linux系列教程(七)——Linux帮助和用户管理命令

    上篇博客我们介绍了Linux文件搜索命令,其中find是用的最多的也是功能最强大的文件或目录搜索命令,和另一个搜索命令locate的区别是,find命令是全盘搜索,刚创建的文件也能搜索的到,而loca ...

  8. Linux常用命令之链接命令和权限管理命令

    目录 1.链接命令 一.生成链接文件命令:ln 2.权限管理命令3.总结 一.更改文件或目录权限命令:chmod 二.改变文件或目录所有者命令:chown 三.改变文件或目录所属组命令:chgrp 四 ...

  9. Linux系列教程(五)——Linux常用命令之链接命令和权限管理命令

    前一篇博客我们讲解了Linux文件和目录处理命令,还是老生常淡,对于新手而言,我们不需要完全记住命令的详细语法,记住该命令能完成什么功能,然后需要的时候去查就好了,用的多了我们就自然记住了.这篇博客我 ...

随机推荐

  1. shell编程——内部变量

    常用的内部变量有:echo, eval, exec, export, readonly, read, shift, wait, exit 和 点(.) echo:将变量名指定的变量显示到标准输出 [r ...

  2. MongoDB常用增删改查语句

    数据库database 创建及查看库 1.有则使用这个数据库,没有就创建 use DATABASE_NAME 2. 查看当前选择的数据库,默认是test db 3.查看数据库,默认有admin.loc ...

  3. 正则表达式在java程序中的使用

    package com.boco; import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;im ...

  4. Spark之 SparkSql、DataFrame、DataSet介绍

    SparkSql SparkSql是专门为spark设计的一个大数据仓库工具,就好比hive是专门为hadoop设计的一个大数据仓库工具一样. 特性: .易整合 可以将sql查询与spark应用程序进 ...

  5. 16-多线程爬取糗事百科(python+Tread)

    https://www.cnblogs.com/alamZ/p/7414020.html   课件内容 #_*_ coding: utf-8 _*_ ''' Created on 2018年7月17日 ...

  6. VS2017在Release下编译错误C1001

    在使用VS2017编译C程序时,Debug模式下编译链接执行都没有问题,但是一转到Release模式下就出现下列编译链接错误(IDE:VS2017 /VC++/MFC程序,目标平台x86+Win32位 ...

  7. Solidity智能合约调用智能合约

    来源:https://medium.com/@blockchain101/calling-the-function-of-another-contract-in-solidity-f9edfa921f ...

  8. leetcode - database - 177. Nth Highest Salary (Oracle)

    题目链接:https://leetcode.com/problems/nth-highest-salary/description/ 题意:查询出表中工资第N高的值 思路: 1.先按照工资从高到低排序 ...

  9. EXTI—外部中断事件控制器

    外部中断概述 STM32F4的每个IO都可以作为外部中断输入. STM32F4的中断控制器支持22个外部中断/事件请求: 从上面可以看出,STM32F4供IO使用的中断线只有16个,但是STM32F4 ...

  10. jenkins+maven+svn实现简单的一键发布

    前言      在安装之前,我想说明一下本文的目的,jenkins的一款持续集成工具,      它可以做的事情很多,其中一个主要的功能就是简化部署流程          回想一下我们的发布流程:   ...