title: linux基础_9.linux系统管理date: 2020-10-10 11:03:26
tags: linux
categories: linux基础

进程管理

进程查看

进程

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

猜猜ls运行会产生进程吗 ~

进程管理作用

判断服务器健康状态(主)

win下查看内存占用和利用率
linux基础-9-linux系统管理 - 图1

正常进程占用过高—终止

非法进程—判断进程,找到病毒主体,手工/杀软删除。单纯杀死不推荐

linux

  1. top [选项]
  2. -d #指定更新间隔秒数
  3. ?或h #显示交互模式帮助
  4. P #以CPU使用率排序,默认
  5. M #以内存使用率排序
  6. N #以PID排序
  7. q #退出

linux基础-9-linux系统管理 - 图2

每3s更新,Cpu占用率高-靠上

  • 第一行 系统
    系统当前时间19:39:52 开机已2h07m 用户数量 系统在1m/5m/15m前的平均负载(<1,一般认为较小(单核),多核(eg.8)超过8可视为高负载)

  • line2 进程
    系统总进程数 正在运行的进程数 睡眠进程 正在停止进程 僵尸进程(正在终止,还未完全停止,长时间存在证明卡死,判断后手工终止)

  • line3 CPU
    用户模式占用率us 系统占用sy 改变过优先级的用户进程占用百分比ni 空闲id 等待输入/出wa hi硬中断占用 si软中断占用 st虚拟cpu占用

  • line4 真实物理内存
    物理内存总大小(KB) 已使用 空闲 缓冲

  • line5 交换分区
    交换分区(虚拟内存)总大小 已使用 空闲 缓存

默认按Cpu占用率排序

查看系统中所有进程

win下
linux基础-9-linux系统管理 - 图3

linux

ps aux        #BSD格式查看系统所有进程(unix)
ps -le        #Linux标准命格式查看

linux基础-9-linux系统管理 - 图4

每行代表一个系统进程

  • USER:进程由哪个用户产生

  • PID:进程ID,/usr/lib或/sbin/init(软链)是系统启动运行的第一个进程,PID永远是1

linux基础-9-linux系统管理 - 图5

  • CPU:占用CPU资源百分比

  • MEM:占用物理内存百分比

  • VSZ:占用虚拟内存百分比,KB

  • RSS:占用实际物理内存大小,KB

  • TTY:在那个终端进行,?不是由终端调用,由进程直接调用
    tty1-tty7:本地终端(tty1-tty6本地字符界面,tty7是图形终端)
    pts0-255:虚拟终端,远程

linux基础-9-linux系统管理 - 图6

  • STAT:进程状态,R允许,S休眠,T停止,s包含子进程,+位于后台
  • START:启动时间,超过24h显示月日
  • TIME:占用CPU时间,时间越长代表进程越耗资源
  • COMMEND:产生进程的命令

tree查看目录树,pstree查看进程树

pstree    [选项]
-p    PID
-u    所属用户

linux基础-9-linux系统管理 - 图7

杀死进程 kill

使用场景:正常终止失效(eg.service stop 服务)

终止进程

kill -l    PID        #查看可用的进程信号

linux基础-9-linux系统管理 - 图8

kill -1 PID        重启
kill -9 PID        终止
  • PID查询ps aux, 不认识的进程避免随意终止可能引起系统崩溃

杀死父进程,子进程被杀; 杀死子进程,不影响父进程

linux基础-9-linux系统管理 - 图9 linux基础-9-linux系统管理 - 图10

-l 重启之后子进程PID改变

killall [选项][信号] 进程名
                -i        交互式,询问是否要杀死某个进程
                -I        忽略进程名的大小写
killall -9 httpd
pkill  [选项] [信号] 进程名
                -t 终端号            按照终端号踢出用户
其余用法同killall

# w 查询用户

linux基础-9-linux系统管理 - 图11

kill虽然可以中止命令,但不是标准正常终止,正常service stop 服务

工作管理

把进程放入后台(2)

类似win下最小化

方法1

命令+&

tar -zcf etc.tar.gz /etc &

方法2

执行命令过程中,ctrl+z

区别:
方法1放入后台继续运行,ctrl+z后台中止

查看后台工作

jobs -l        #-l显示PID

linux基础-9-linux系统管理 - 图12

(ctrl+z top)

  • +代表最后一个放入后台的工作,-表示倒数第二个.恢复时首先恢复+,再-

linux基础-9-linux系统管理 - 图13

恢复后台暂停的工作

到前台

fg %工作号

到后台

bg % 工作号

linux基础-9-linux系统管理 - 图14

linux基础-9-linux系统管理 - 图15

top命令是系统健康状态,必须在前台与用户交互,后台不能正常运行.类似的还有vi.

后台执行的命令一般是打包,查找

linux基础-9-linux系统管理 - 图16

bg,fg使用时可省略%,jobs 工作号可查询对应工作的运行状态

系统资源查看

vmstat-监控系统资源

vmstat[刷新延时 刷新次数]

linux基础-9-linux系统管理 - 图17

dmesg-开机时内核检查信息

dmesg
输出过多,添加grep过滤
dmesg|grep CPU

linux基础-9-linux系统管理 - 图18

free-查看内存使用状态

free [-b-k-m-g]
选项可不加,调整显示单位[字节(默认)/KB/MB/GB]

linux基础-9-linux系统管理 - 图19

used=缓冲和缓存buff/cache(只能被内核直接调用)+free

cache和buff区别

cache: 加速数据从”硬盘”读取,

buff: 加速数据写入硬盘

查看CPU信息

cat /proc/cpuinfo

dmesg看到的是cpu的启动基本信息,cpuinfo中保存的更加详细的信息,每次开机检测写入,断电释放

uptime-显示系统启动时间和平均负载

linux基础-9-linux系统管理 - 图20

top命令和w第一行

查看系统和内核相关信息

uname
uname []
            -a        系统所有相关信息
            -r        内核版本
            -s        内核名称

linux基础-9-linux系统管理 - 图21

系统位数
file /bin/ls

使用file命令查看一个系统外部命令,就会顺带显示位数

linux基础-9-linux系统管理 - 图22

查询当前linux发行版本
lsb_release -a

linux基础-9-linux系统管理 - 图23

进程调用文件
lsof []
            -c 字符串            只列出字符串开头的进程打开的文件
            -u 用户名            只列出某个用户的进程打开的文件
            -p pid                列出某个PID进程打开的文件

linux基础-9-linux系统管理 - 图24

linux基础-9-linux系统管理 - 图25

系统定时任务

类似win下任务计划

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

/sbin/service crond start
/sbin/service crond stop
/sbin/service crond restart
/sbin/service crond reload
或者
systemctl restart crond.service  
systemctl status crond.service        #状态检查

systemctl enable crond.service        #自启动设置
或者setup 内+*
systemctl is-enabled crond.service        #状态查询

linux基础-9-linux系统管理 - 图26

crontab设置定时任务

crontab [选项]
                -e        编辑crontab定时任务
                -l        查询
                -r        删除当前用户的所有crontab任务,删一行可用vim
格式:
* * * * * command
|_|_|_|_|____|________一小时中的第几分钟0-59
    |_|_|_|____|________一天当中的第几小时0-23
        |_|_|____|________一个月当中的第几天1-31
            |_|____|________一年当中的第几月1-12
                |____|________一周当中的星期几0-7,0&7均代表星期日
                 |________定时任务/命令
即
分钟 小时 天 月 周 命令

特殊符号

*        指任意
,        不连续时间,eg."0 8,12,16 * * * 命令"指每天8:00,12:00,16:00执行
-        连续时间    0 5 * * 1-6 命令        周一-周6的5:00执行
*/n        每隔多久执行
  • 注意像表示整点执行的时候第一位需写0,否则写*表示每分钟执行

例子

10 * * * * 命令            每小时第10分钟
45 22 * * * 命令        22:45分执行命令
0 17 * * 1 命令            每星期一17:00执行命令
0 5 1,15 * * 命令        每月1号和15号5:00执行
40 4 * * 1-5 命令        周一-周5 4:40执行
*/10 4 * * * 命令        每天凌晨4点,每10分钟执行
0 0 1,15 * 1 命令        每月1号和15号,每周1的00:00执行命令

*/5 * * * /bin/echo "ll" >> /tmp/test        每5分钟写"ll"入文件test
5 5 * * 2 /sbin/shutdown -r now                    每周2 05:05重启
0 5 1,10,15 * * /root/sh/autobak.sh            每月1,10,15号05:00执行脚本
  • aurobak.sh linux基础-9-linux系统管理 - 图27
    crontab中%有特殊含义,故脚本中转义 %y%m%d年月日
    脚本将日期,文件大小写入配置文件,进入备份目录下,将备份文件和日志文件压缩(输出丢入回收站),删除日志文件

  • 注意像eg7,星期几和每月几号(建议)最好不要再同一个定时任务中出现,容易使管理员混淆

  • 定时任务最小识别单位分钟

  • 定时任务会判断系统是否繁忙,可能不会立刻执行