linux-5. 系统管理(进程,前后台,系统资源,定时任务)

1. 进程管理

1.1 查看系统中所有进程

  1. 显示所有进程
ps aux # 查看系统中所有进程, 使用BSD操作系统格式
# a: 查看所有前台进程
# x:查看所有后台进程
# u:显示这个进程是由哪个用户产生的
# 输出
# USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
# USER: 该进程是由哪个用户产生的;
# PID: 进程的ID号;
# %CPU: 该进程占用CPU资源的百分比,占用越高,进程越耗费资源;
# %MEM: 该进程占用物理内存的百分比,占用越高,进程越耗费资源;
# VSZ: 该进程占用虚拟内存的大小,单位KB;
# RSS: 该进程占用实际物理内存的大小,单位KB;
# TTY: 该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,
# tty7是图形终端。pts/0-255代表虚拟终端(远程登录终端)。ALT+F1-F7:可切换终端tty1-tty7;
# STAT: 进程状态。常见的状态有:R: 运行、S: 睡眠、T: 停止状态、s: 包含子进程、+: 位于后台;
# START: 该进程的启动时间;
# TIME: 该进程占用CPU的运算时间,注意不是系统时间;
# COMMAND: 产生此进程的命令名。

ps -le # 查看系统中所有进程, 使用Linux标准命令格式
# -l:显示更加详细的信息
# -e:显示所有进程
  1. 查看进程树
pstree [option]
-p: 显进程的PID
-u: 显示进程的所属用户

1.2 查看系统健康状态

top [option]
# -d: 指定top命令每隔几秒更新。默认是3s

在top命令的交互模式当中可以执行的命令:
?/h: 显示交互模式的帮助
P: 以CPU使用率排序,默认就是此项
M: 以内存的使用率排序
N: 以PID排序
q: 退出top

输出:

top - 10:19:02 up 13:23, 3 users, load average: 0.00, 0.00, 0.00
Tasks: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0
si, 0.0 st KiB Mem: 4046536 total, 562324 used, 3484212 free,
5092 buffers KiB Swap: 1045500 total, 59248 used, 986252 free.
424300 cached Mem

第一行信息为任务队列信息
第二行为进程信息
第三行为CPU信息
第四行为物理内存信息
第五行为交换分区信息

内容 说明
10:19:02 系统当前时间
up 13:23 系统的运行时间,本机已经运行13小时23分钟
3 users 当前登录了3个用户
load average: 0.00, 0.00, 0.00 系统在之前1分钟,5分钟,15分钟的平均负载,一般(单核)认为小于1时,负载较小,如果大于1,系统已经超出负荷
Tasks: 105 total 系统中的进程总数
1 running 正在运行的进程数
104 sleeping 睡眠的进程
0 stopped 正在停止的进程
0 zombie 僵尸进程,如果不是0,需要手工检查僵尸进程
0.0 us 用户模式占用的CPU百分比
0.0 sy 系统模式占用的CPU百分比
0.0 ni 改变过优先级的用户进程占用的CPU百分比
100.0 id 空闲CPU的CPU百分比(注意看这项)
0.0 wa 等待输入/输出的进程的占用CPU百分比
0.0 hi 硬中断请求服务占用的CPU百分比
0.0 si 软中断请求服务占用的CPU百分比
0.0 st Steal time 虚拟时间百分比,就是当有虚拟机时,虚拟CPU等待实际CPU的时间百分比
4046536 total 物理内存的问题,单位KB
562324 used 已经使用的物理内存数量
3484212 free 空闲的物理内存数量
5092 buffers 作为缓冲的内存数量
1045500 total 交换分区(虚拟内存)的总大小
59248 used 已经使用的交换分区的大小
986252 free 空闲交换分区的大小
424300 cached Mem 作为缓存的交换分区的大小

1.3 终止进程

  1. kill 命令
kill -l # 查看可用的进程信号
# kill 常用的信息是常用的是1,9,15,默认不写是15
kill -1 22354 # 重启进程
kill -9 22368 # 强制杀死进程
kill 22369 # 正常杀死进程 
kill -15 22369 # 正常杀死进程

在这里插入图片描述
2. killall 命令:按照进程名杀死进程

# killall [option][信号]进程名
# -i:交互式,询问是否要杀死某个进程
# -I:忽略进程名的大小写
killall -9 httpd # 将httpd进程杀死
  1. pkill命令:按照进程名杀死进程
# pkill [option][信号]进程名
# -t:按照终端号踢出用户
pkill -9 httpd # 和killall -9 httpd 功能一样
# 与killall不同的是,pkill可以按照终端号踢出用户

w # 使用命令w查询本机已经登录的用户
pkill -t -9 pts/1 # 强制杀死从pts/1虚拟终端登录的进程

2. 工作管理

# 把进程放入后台的方法
# 1. 在进程最报加入&, 此种方法放入后台的命令,命令还在执行
tar -zcf etc.tar.gx /etc &
# 2.在命令执行的过程中,按下Ctrl+z快捷键,此种方法放入后台的命令,命令暂停运行
top

# 查看后台的工作
jobs -l
# -l: 显示工作的PID
# "+"号代表最近一个放入后台的工作,也是工作恢复时,默认恢复的工作。“-”号代表倒数第二个放入后台的工作

# 将后台暂停的工作恢复到前台执行
fg %工作号
# %工作号: %号可以省略,但是注意工作号和PID的区别

# 将后台暂停的工作恢复到后台执行
bg %工作号
# 后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行

3. 系统资源查看

  1. vmstat命令监控系统资源
# vmstat [刷新延时][刷新次数]
vmstat 1 3  # 每隔1s刷新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
 0  0  57768 3482520   6008 424732    0    1     2     2   11   17  0  0 99  0  0
 0  0  57768 3482496   6008 424764    0    0     0     0   55   89  0  0 100  0  0
 0  0  57768 3482504   6008 424764    0    0     0     0   31   53  0  0 100  0  0
  1. dmesg开机时内核检测信息
dmesg | grep CPU # 查看CPU信息
dmesg | grep etho # 查看网上信息
  1. free命令查看内存使用状态
# free [-b|-k|-m|-g]
# -b:以字节为单位显示
# -k:以KB为单位显示,默认就是以KB为单位显示
# -m: 以MB为单位显示
# -g: 以GB为单位显示
free -m 
# 输出
             total       used       free     shared    buffers     cached
Mem:          3951        554       3396          1          6        415
-/+ buffers/cache:        133       3818
Swap:         1020         54        966

# used的大小是包含了buffers和cached的大小
# 缓存和缓冲的区别
# 缓存(cache):用来加速数据从硬盘中“读取”的
# 缓冲(buffers):用来加速数据“写入”硬盘的
  1. 查看CPU信息
# CPU更加详细的信息:/proc/cpuinfo
cat /proc/cupinfo
  1. uptime命令
# 显示系统的启动时间和平均负载,也就是top命令的第一行,w命令也可以看到这个数据
uptime
  1. 查看系统与内核相关信息
# uname [option]
# -a: 查看系统所有相关信息
# -r: 查看内核版本
# -s: 查看内核名称
  1. 判断当前系统的位数
# 没有直接的命令来查看, 通过file 外部命令来查看
file /bin/ls
# 从输出中可以看出是64-bit
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=a0823e17cafbe5b2296346216445566840fdfd88, stripped
  1. 查询当前Linux系统的发行版本
lsb_release -a
  1. 列出进程打开或使用的文件信息
# lsof [option]
# -c 字符串: 只列出以字符串开头的进程打开的文件
# -u 用户名: 只列出某个用户的进程打开的文件
# -p pid:列出某个PID进程打开的文件
lsof -p 6119 # 查看6119进程打开的文件
lsof -c init 

4. 系统定时任务

crond服务管理与访问控制(debian )

启动:/etc/init.d/cron start
关闭:/etc/init.d/cron stop
重启:/etc/init.d/cron restart
        有的系统可能init.d目录下没有 cron 而只有 crond,其实也一样,只不过把cron换为crond:
启动:/etc/init.d/crond start
关闭:/etc/init.d/crond stop
重启:/etc/init.d/crond restart

# 安装
apt-get install cron
# crond 启动命令
service cron restart 
# 或者
/etc/init.d/cron restart 
# 检查状态
service cron status

# 将cron变成自启动命令
chkconfig cron on 

crontab [option]
# -e: 编辑crontab定时任务
# -l:查询crontab任务
# -r: 删除当前用户所有的crontab任务
项目 含义 范围
第一个“*” 一个小时当中的第几分钟 0-59
第二个“*” 一天当中的第几小时 0-23
第三个“*” 一个月当中的第几天 1-31
第四个“*” 一年当中的第几个月 1-12
第五个“*” 一周当中的星期几 0-7(0和7都代表星期日)

特殊符号

特殊符号 含义
* 代表作保时间。比如第一个“*”就代表一个小时中每分钟都执行一次的意思
, 代表不连续的时间。比如“0 8, 12, 16 * * * 命令” , 就代表在每天的8点0分,12点0分,16点0分都执行一次命令
- 代表连续的时间范围。比如“0 5 * * 1-6 命令“ ,代表在周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次。比如"*/10 * * * * 命令 ",代表每隔10分钟就执行一遍命令
# 举例
*/5 * * * * /bin/echo "hello world"  >> /tmp/test # 每隔5分钟将"hello world"追加到/tmp/test"
5 5 * * 2 /sbin/shutdown -r now # 每周二的5点5分关机
# 每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。
# 非常容易让管理员混乱
0 0 1,15 * 1 命令
发布了140 篇原创文章 · 获赞 44 · 访问量 12万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章