Linux-4-系统管理

1、进程管理

进程可以理解为正在运行中的程序,都有自己的地址空间,并占用一定的系统资源,任何程序包括系统命令都至少包含一个进程。
例如,ls命令也有进程,不过它执行的很快,执行完了,进程就关闭了,我们很难观察到它。

进程管理的主要工作包括

  1. 查看服务器的健康状况
  2. 查看系统中的任意进程
  3. 杀死指定进程

1.1 top

top [选项]
-d 指定状态更新的周期,默认是3s

top命令的交互模式可以执行的命令
?或h 显示帮助
P 以CPU使用率排序,默认就是此项,注意大小写
M 以内存的使用率排序
N 以PID来排序
q 退出

top命令执行后,在顶部会有5行统计信息,其中比较重要的有:

  1. 第一行,load average,系统在之前1分钟,5分钟,15分钟 的平均负载。对于单核CPU来说,认为小于1时,负 载较小。如果大于1,系统已经超出负荷。
  2. 第二行,是进程的统计
  3. 第三行,CPU信息,主要关注99.7%id,空闲CPU的CPU百分比
  4. 第四行,内存信息,主要关注53840k free,空闲的物理内存数量
  5. 第五行,交换分区信息

1.2 ps

ps aux //查看系统中所有进程,包含其他使用者的进程,使用BSD操作系统格式,注意这种格式的选项没有“-”。a显示所有前台进程,x显示所有后台进程,u显示用户信息
ps -le //查看系统中所有进程,使用Linux标准命令格式。l长格式,显示详细信息,e显示所有进程。

显示参数的含义:

  1. USER:该进程是由哪个用户产生的;
  2. PID:进程的ID号;
  3. %CPU:该进程占用CPU资源的百分比,占用越高,进程 越耗费资源;
  4. %MEM:该进程占用物理内存的百分比,占用越高,进程 越耗费资源;
  5. VSZ:该进程占用虚拟内存的大小,单位KB;
  6. RSS:该进程占用实际物理内存的大小,单位KB;
  7. TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表 本地控制台终端,tty1-tty6是本地的字符界面终端,tty7 是图形终端。pts/0-255代表虚拟终端。
  8. STAT:进程状态。常见的状态有:R:运行、S:睡眠 、T:停止状态、s:包含子进程、+:位于后台
  9. START:该进程的启动时间
  10. TIME:该进程占用CPU的运算时间,注意不是系统时间
  11. COMMAND:产生此进程的命令名

案例:

  1. 根据 CPU 使用来升序排序
    $ ps -aux –sort -pcpu | less
  2. 根据 内存使用 来升序排序
    $ ps -aux –sort -pmem | head 20

1.3 pstree

pstree [选项]

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

注意:

  1. init(1),是所有进程的父进程
  2. 有的中的8*,表示有8个子进程

1.4 kill

kill –l //查看可用的进程信号

进程信号很多,常用的有

  1. 1 sighup 该信号让进程立即关闭,然后重新读取配置文件之后重启
  2. 9 sigkill 用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。 一般用于强制终止进程。
  3. 15 sigterm 正常结束进程的信号,kill命令的默认信号。有时如果进程已经发生问题,这个信号是无法正常终止进程的,我们才会尝试信号9。

案例:

  1. kill -1 22354 //重启进程,好多进程的restart其实也是调用它
  2. kill -9 22368 //强制杀死进程

1.5 killall

killall [选项][信号] 进程名 //按照进程名杀死进程

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

1.6 pkill

pkill [选项] [信号] 进程名 //按照进程名终止进程

选项:
-t 终端号: 按照终端号踢出用户

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

killall和pkill与kill的区别在于,它能按照进程名杀死一类进程,pkill和killall的区别,在于可以提出终端用户

2、工作管理

2.1 把进程放入后台

两种方式:&和ctrl + z

tar -zcf etc.tar.gz /etc &
top //在top命令执行的过程中,按下ctrl+z快捷键

这两种方式的区别在于,&放入后台的程序,还在运行,但是ctrl + z放入后台的程序会暂停运行

注意: vim, top等命令不能放入到后台运行,因为他们运行的目的就是和用户交互的,放到后台并且运行,对于他们来说没有意义。但是打包、压缩、查找这些命令是可以放入后台执行的。

2.2 jobs

查看后台的工作
jobs [-l] 选项:
-l: 显示工作的PID

注意: “+”号代表最近一个放入后台的工作,也是工作恢 复时,默认恢复的工作。“-”号代表倒数第二个放入后台的工作。

2.3 fg

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

2.4 bg

把后台暂停的工作恢复到后台执行
bg %工作号

注意:后台恢复执行的命令,是不能和前台有 交互的,否则不能恢复到后台执行,例如vim

3、系统状态查看

3.1 vmstat

vmstat [刷新周期 刷新次数]
这是top命令的简化版,主要用来查看剩余内存和CPU的占用情况

3.2 dmesg

dmesg | grep -i cpu 忽略大小写

dmesg用来显示内核环缓冲区(kernel-ring buffer)内容,内核将各种消息存放在这里。在系统引导时,内核将与硬件和模块初始化相关的信息填到这个缓冲区中。内核环缓冲区中的消息对于诊断系统问题 通常非常有用。例如,如果发现硬盘性能低下,可以使用dmesg来检查它们是否运行在DMA模式。

开机信息亦保存在/var/log/dmesg的文件中。

3.2 free

free [-b|-k|-m|-g] //查看内存使用状态,选项是显示的单位,默认为kb

缓冲区和缓存的区别和联系

  1. 联系,都是内存中的一个区域,只是作用不同,理论基础是,内存的速度要远高于硬盘
  2. 区别,缓存cache是用来加速读取硬盘的,缓冲区buffer是用来加速写入硬盘的

3.3 cat /proc/cpuinfo

查看cpu信息

3.4 uptime命令

top命令的第一行,时间、开机时长、用户数、平均负载等
uptime/top/w都可以看到这些信息

3.5 uname/file ls命令文件/ lsb_release

查看系统及内核的相关信息
uname -a //查看系统所有相关信息
file /bin/ls //判断当前系统的位数
lsb_release -a //查看系统的发行版本

3.6 lsof

lsof [选项] //列出进程调用或打开的文件的信息

选项:

  1. -c 字符串: 只列出以字符串开头的进程打开的文件
  2. -u 用户名: 只列出某个用户的进程打开的文件
  3. -p pid: 列出某个PID进程打开的文件

lsof abc.txt 显示开启文件abc.txt的进程
lsof -c abc 显示abc进程现在打开的文件
lsof -p 1234 列出进程号为1234的进程所打开的文件

4、定时任务

4.1 启动定时服务

Linux默认安装和提供的定时任务管理工具,一般不需要启动和重启
service crond restart
chkconfig –list | grep crond 查看服务

crond对应的配置文件在/etc/crontab

4.2 crontab

crontab [选项]
选项:
-e: 编辑crontab定时任务
-l: 查询crontab任务
-r: 删除当前用户所有的crontab 任务

任务的格式:
* * * * * 执行的任务

  1. 第一个“*”
    一小时当中的第几分钟
    0-59
  2. 第二个“*”
    一天当中的第几小 时
    0-23
  3. 第三个“*”
    一个月当中的第几 天
    1-31
  4. 第四个“*”
    一年当中的第几月
    1-12
  5. 第五个“*”
    一周当中的星期几
    0-7(0和7都代表星期日)

注意:10 * * * * 表示每个小时的第10个分钟,而不是每隔十分钟,如果要用每隔十分钟需要配合特殊符号 */10

特殊符号:

  1. * 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。
  2. , 代表不连续的时间。比如“0 8,12,16 * * * 命令”, 就代表在每天的8点0分,12点0分,16点0分都执 行一次命令
  3. - 代表连续的时间范围。比如“0 5 * * 1-6命令”, 代表在周一到周六的凌晨5点0分执行命令
  4. */n 代表每隔多久执行一次。比如“*/10 * * * * 命 令”,代表每隔10分钟就执行一遍命令

案例:

  1. 45 22 * * * 命令
    在22点45分执行命令
  2. 0 17 * * 1 命令
    每周1 的17点0分执行命令
  3. 0 5 1,15 * * 命令
    每月1号和15号的凌晨5点0分执行命令
  4. 40 4 * * 1-5 命令
    每周一到周五的凌晨4点40分执行命令
  5. */10 4 * * * 命令
    每天的凌晨4点,每隔10分钟执行一 次命令
  6. 0 0 1,15 * 1 命令
    每月1号和15号,每周1的0点0分都会 执行命令。注意:星期几和几号同时出现代表or的条件,而不是and条件,但是最好不要同时出现,因为他们定义的都是天,非常容易让管理员混乱。

注意:
date +%y%m%d 表示格式化日期显示,但是这个命令放在crondtab中会报错,%需要转义,date +\%y\%m\%d

你可能感兴趣的:(Linux,服务器,linux)