进程可以理解为正在运行中的程序,都有自己的地址空间,并占用一定的系统资源,任何程序包括系统命令都至少包含一个进程。 例如,ls命令也有进程,不过它执行的很快,执行完了,进程就关闭了,我们很难观察到它。
进程管理的主要工作包括
查看服务器的健康状况查看系统中的任意进程杀死指定进程top [选项] -d 指定状态更新的周期,默认是3s
top命令的交互模式可以执行的命令 ?或h 显示帮助 P 以CPU使用率排序,默认就是此项,注意大小写 M 以内存的使用率排序 N 以PID来排序 q 退出
top命令执行后,在顶部会有5行统计信息,其中比较重要的有:
第一行,load average,系统在之前1分钟,5分钟,15分钟 的平均负载。对于单核CPU来说,认为小于1时,负 载较小。如果大于1,系统已经超出负荷。第二行,是进程的统计第三行,CPU信息,主要关注99.7%id,空闲CPU的CPU百分比第四行,内存信息,主要关注53840k free,空闲的物理内存数量第五行,交换分区信息ps aux //查看系统中所有进程,包含其他使用者的进程,使用BSD操作系统格式,注意这种格式的选项没有“-”。a显示所有前台进程,x显示所有后台进程,u显示用户信息 ps -le //查看系统中所有进程,使用Linux标准命令格式。l长格式,显示详细信息,e显示所有进程。
显示参数的含义:
USER:该进程是由哪个用户产生的;PID:进程的ID号;%CPU:该进程占用CPU资源的百分比,占用越高,进程 越耗费资源;%MEM:该进程占用物理内存的百分比,占用越高,进程 越耗费资源;VSZ:该进程占用虚拟内存的大小,单位KB;RSS:该进程占用实际物理内存的大小,单位KB;TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表 本地控制台终端,tty1-tty6是本地的字符界面终端,tty7 是图形终端。pts/0-255代表虚拟终端。STAT:进程状态。常见的状态有:R:运行、S:睡眠 、T:停止状态、s:包含子进程、+:位于后台START:该进程的启动时间TIME:该进程占用CPU的运算时间,注意不是系统时间 COMMAND:产生此进程的命令名案例:
根据 CPU 使用来升序排序 $ ps -aux –sort -pcpu | less根据 内存使用 来升序排序 $ ps -aux –sort -pmem | head 20pstree [选项]
选项: -p: 显示进程的PID -u: 显示进程的所属用户
注意:
init(1),是所有进程的父进程有的中的8*,表示有8个子进程kill –l //查看可用的进程信号
进程信号很多,常用的有
1 sighup 该信号让进程立即关闭,然后重新读取配置文件之后重启9 sigkill 用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。 一般用于强制终止进程。15 sigterm 正常结束进程的信号,kill命令的默认信号。有时如果进程已经发生问题,这个信号是无法正常终止进程的,我们才会尝试信号9。案例:
kill -1 22354 //重启进程,好多进程的restart其实也是调用它kill -9 22368 //强制杀死进程killall [选项][信号] 进程名 //按照进程名杀死进程
选项: -i: 交互式,询问是否要杀死某个进程 -I: 忽略进程名的大小写
pkill [选项] [信号] 进程名 //按照进程名终止进程
选项: -t 终端号: 按照终端号踢出用户
例如: w //使用w命令查询本机已经登录的用户 pkill -9 -t pts/1 //强制杀死从pts/1虚拟终端登录的进程
killall和pkill与kill的区别在于,它能按照进程名杀死一类进程,pkill和killall的区别,在于可以提出终端用户
两种方式:&和ctrl + z
tar -zcf etc.tar.gz /etc & top //在top命令执行的过程中,按下ctrl+z快捷键
这两种方式的区别在于,&放入后台的程序,还在运行,但是ctrl + z放入后台的程序会暂停运行
注意: vim, top等命令不能放入到后台运行,因为他们运行的目的就是和用户交互的,放到后台并且运行,对于他们来说没有意义。但是打包、压缩、查找这些命令是可以放入后台执行的。
查看后台的工作 jobs [-l] 选项: -l: 显示工作的PID
注意: “+”号代表最近一个放入后台的工作,也是工作恢 复时,默认恢复的工作。“-”号代表倒数第二个放入后台的工作。
将后台暂停的工作恢复到前台执行 fg %工作号 参数: %工作号: %号可以省略,但是注意工作号和PID的区别
把后台暂停的工作恢复到后台执行 bg %工作号
注意:后台恢复执行的命令,是不能和前台有 交互的,否则不能恢复到后台执行,例如vim
vmstat [刷新周期 刷新次数] 这是top命令的简化版,主要用来查看剩余内存和CPU的占用情况
dmesg | grep -i cpu 忽略大小写
dmesg用来显示内核环缓冲区(kernel-ring buffer)内容,内核将各种消息存放在这里。在系统引导时,内核将与硬件和模块初始化相关的信息填到这个缓冲区中。内核环缓冲区中的消息对于诊断系统问题 通常非常有用。例如,如果发现硬盘性能低下,可以使用dmesg来检查它们是否运行在DMA模式。
开机信息亦保存在/var/log/dmesg的文件中。
free [-b|-k|-m|-g] //查看内存使用状态,选项是显示的单位,默认为kb
缓冲区和缓存的区别和联系
联系,都是内存中的一个区域,只是作用不同,理论基础是,内存的速度要远高于硬盘区别,缓存cache是用来加速读取硬盘的,缓冲区buffer是用来加速写入硬盘的查看cpu信息
top命令的第一行,时间、开机时长、用户数、平均负载等 uptime/top/w都可以看到这些信息
查看系统及内核的相关信息 uname -a //查看系统所有相关信息 file /bin/ls //判断当前系统的位数 lsb_release -a //查看系统的发行版本
lsof [选项] //列出进程调用或打开的文件的信息
选项:
-c 字符串: 只列出以字符串开头的进程打开的文件-u 用户名: 只列出某个用户的进程打开的文件-p pid: 列出某个PID进程打开的文件lsof abc.txt 显示开启文件abc.txt的进程 lsof -c abc 显示abc进程现在打开的文件 lsof -p 1234 列出进程号为1234的进程所打开的文件
Linux默认安装和提供的定时任务管理工具,一般不需要启动和重启 service crond restart chkconfig –list | grep crond 查看服务
crond对应的配置文件在/etc/crontab
crontab [选项] 选项: -e: 编辑crontab定时任务 -l: 查询crontab任务 -r: 删除当前用户所有的crontab 任务
任务的格式: * * * * * 执行的任务
第一个“*” 一小时当中的第几分钟 0-59第二个“*” 一天当中的第几小 时 0-23第三个“*” 一个月当中的第几 天 1-31第四个“*” 一年当中的第几月 1-12第五个“*” 一周当中的星期几 0-7(0和7都代表星期日)注意:10 * * * * 表示每个小时的第10个分钟,而不是每隔十分钟,如果要用每隔十分钟需要配合特殊符号 */10
特殊符号:
* 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。, 代表不连续的时间。比如“0 8,12,16 * * * 命令”, 就代表在每天的8点0分,12点0分,16点0分都执 行一次命令- 代表连续的时间范围。比如“0 5 * * 1-6命令”, 代表在周一到周六的凌晨5点0分执行命令*/n 代表每隔多久执行一次。比如“*/10 * * * * 命 令”,代表每隔10分钟就执行一遍命令案例:
45 22 * * * 命令 在22点45分执行命令0 17 * * 1 命令 每周1 的17点0分执行命令0 5 1,15 * * 命令 每月1号和15号的凌晨5点0分执行命令40 4 * * 1-5 命令 每周一到周五的凌晨4点40分执行命令*/10 4 * * * 命令 每天的凌晨4点,每隔10分钟执行一 次命令0 0 1,15 * 1 命令 每月1号和15号,每周1的0点0分都会 执行命令。注意:星期几和几号同时出现代表or的条件,而不是and条件,但是最好不要同时出现,因为他们定义的都是天,非常容易让管理员混乱。注意: date +%y%m%d 表示格式化日期显示,但是这个命令放在crondtab中会报错,%需要转义,date +\%y\%m\%d