时光匆匆,王老师代两周的课就这样结束了,刚适应王老师的讲课风格。王老师讲课进度非常快,能按照自己的思路把上课的内容每一个地方都贯彻下去。我觉得这样是非常好的,但是笔记方面还是南老师做的详细,各有各的风格吧。今天我们将要给大家介绍进程与计划任务,对我们的以后工作有非常大的帮助,因为我们以后工作尽可能的都自动化管理,不需要我们每天都去敲那些命令。所以我相信今天的内容对大家还是有用的。
一、进程的优先级
系统优先级:0——139 数字越小优先级越高(centos4、5)各有140个运行队和过期队
0——99 数字越小优先级越高(centos6、7)
实时优先级:99——0 数字越大优先级越高
nice优先级:-20——19 数字越小优先级越高,对应系统的优先级100——139
用图让大家看的更家清晰:
二、进程的类型和状态
进程的类型:守护进程(与终端无关)
前台进程(与终端有关)
进程的状态:运行态running
就绪态ready
睡眠状态:可中断interruptable 不可中断uninterruptable
停止状态:stopped(暂停与内存,但不会被调动,除非手动启动)
僵死状态zombie(结束进程,父进程结束前,子进程不关闭)建议有了就重启服务
三、ps命令
UNIX风格 短格式如-a
BSD风格 格式如:a
GUN风格 格式如: – -help
a 选项包括所有终端中的进程
x 选项包括不链接终端的进程
u 选项显示进程所有者的信息
f 选项显示进程的父进程
k|–sort 属性 对属性排序
o 属性… 选项显示定制的信
user显示执行命令的用户
ruser 显示真正的执行用户
常用格式:
ps -C 脚本 有利于监控脚本
ps -ef显示所有进程完整格式程序信息
ps -eFH 显示更完整的以进程层级格式显示进程相关信息
ps aux 显示所有进程完整信息
例如:1、ps axo pid,cmd,%cpu,%mem k%mem 只显示pid,cmd,%cpu,%mem然后以内存(%mem)进行排序
四、nice
更改优先级:renice # pid
可以直接指定优先级:nice -n 10 ping 127.0.0.1
五、pgrep(搜索进程)
-u user 显示生效者
-U user 查看真正发起运行命令者
-t pts/0 查看指定终端相关的进程
-l: 显示进程名
-a: 显示完整格式的进程名 (支持正则表达式)
-P pid: 显示指定进程的子进程
六、pidof (可以查看一个进程对应的编号)
可以监控一个服务是否正常开启,如果没有开启就将其开启
例如:pidof httpd &> /dev/null || systemctl restart httpd
七、uptime
显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1、5、10分钟的平均负载,一般不会超过1)如果是双核CPU,那么如果数字接近6,说明机器已经被成分使用
八、top、htop(动态监控进程)
分别代表:us 用户空间 sy 系统空间 ni 优先级优化空间 id 空闲空间 wa等待空间 hi硬中断 si 软中断 st被偷走的时间片
排序: P:以占据的CPU百分比排序
M:占据内存百分比排序
T:累积占据CPU时长排序
首部信息l:对最上面的一行隐藏或者不隐藏
t:tasks及cpu信息
1(数字1):cpu分别显示
m:memory信息,(内存信息)
q:退出
s:修改刷新时间间隔
k:终止指定进程
W:保存文件
-d #:指定刷新时间间隔,默认为3秒
-b:全部显示所有进程
-n #:刷新多少次后退出
htop(动态查看进程,yum仓库有epel源才能安装)
-d #: 指定延迟时间;
-u UserName: 仅显示指定用户的进程
-s COLUME: 以指定字段进行排序
子命令: s: 跟踪选定进程的系统调用
l: 显示选定进程打开的文件列表
a:将选定的进程绑定至某指定CPU核心
t: 显示进程树
htop 相对于 top有颜色,不过看大家自己的喜欢风格了。
九、内存工具
1、vmstat
r可运行
b处于不可中断睡眠态的进程
swpd 交换内存的使用总量
free 空闲物理内存总量
buffer 用于缓冲的内存总量
cache 用于缓存的内存总量
si 从磁盘交换进内存的数据速率
so 从内存到磁盘的数据速率
bi 从块设备读入数据到系统的速率
bo 保存数据到块设备的速率
in 中断速率
cs 进程切换速率
us 用户空间
sy 系统空间
id 空闲空间
wa 等待空间
st 被虚拟机偷走的时间片
vmstat -s 显示内存的统计数据
2、iostat 显示CPU和设备IO信息
3、pmap(显示进程对应的内存映射,有利于监控内存是否只占用不释放)
pmap 进程号 查看某个进程的内存状态
pmap -x 1 显示信息更加详细
4、内存监控工具
glances(需要配置yum仓库中的epel源才能安装)
-b: 以Byte为单位显示网卡数据速率
-d: 关闭磁盘I/O模块
-f /path/to/somefile: 设定输入文件位置
-o {HTML|CSV}:输出格式
-m: 禁用mount模块
-n: 禁用网络模块
-t #: 延迟时间间隔
-1:每个CPU的相关数据单独显
glances主要功能 远程服务器监控
服务器模式:glances -s -B ip地址 (ip地址指明监听的本机哪个地址)
客户端模式: glances -c ip地址 (IP地址指明要连入的服务器段地址)
5、dstat(系统资源统计)
-c: 显示cpu相关信息
-C #,#,…,total
-d: 显示disk相关信息
-D total,sda,sdb,…
-g:显示page相关统计数据
-m: 显示memory相关统计数据
-n: 显示network相关统计数据
-p: 显示process相关统计数据
-r: 显示io请求相关的统计数据
-s: 显示swapped相关的统计数
–top-cpu:显示最占用CPU的进程
–top-io: 显示最占用io的进程
–top-mem: 显示最占用内存的进程
–top-latency: 显示延迟最大的进程
十、kill(给进程发送控制信号)进程管理工具
一些常见的选项:
1 SIGHUP: 无须关闭进程而让其重读配置文件
2 SIGINT: 中止正在运行的进程;相当于Ctrl+c
3 SIGQUIT:相当于ctrl+\
9 SIGKILL: 强制杀死正在运行的进程 (有些是顽强的进程,杀不死,第一个进程杀不死,但是会影响系统)
15 SIGTERM:终止正在运行的进程 (默认是15)
18 SIGCONT:继续运行
19 SIGSTOP:后台休眠
kill -l 查看所有信号
kill -0 检查某个进程是否正常工作,正常工作是0,非正常工作是非0
killall -9 进程名称 按名称杀死所有的进程
pkill 按模式给进程发信号和pgrep的一些用法一样
-u uid: 生效者
-U uid 真正发起运行命令者
-P pid: 显示指定进程的子进程
十一、作业管理(前台执行或者后台执行)
1、前台执行的在后面加个&的就可以放后台执行 例如ping 172.17.0.1 &
2、前台和后台一些转换:
jobs 查看作业编号
fg 作业号 将后台执行的放到前台工作
bg 作业号 将后台休眠的启动起来放在后台运行
killall -18 进程名 将后台休眠的使其在后台运行
killall -19 进程名 将后台运行的使其在后台休眠
kill %作业编号 将其杀掉
3、让其在后端运行,并且不显示在终端:
nohup ping 127.0.0.1 &> /dev/null &
输入screen后 然后进入一个终端,然后执行命令后退出,该命令会放在后台运行
screen -ls 查看screen 会话
screen -r 回到screen终端
4、并行运行:(提高效率)
方法1:vim all.sh
f1.sh &
f2.sh &
方法2:(f1.sh&);(f2.sh&);(f3.sh)
方法3:{ f1.sh& f2.sh& f3.sh& }
例如:{ ping -c 3 127.1 ; ping 127.2 ; }& { ping -c 3 127.3 ; ping 127.4 ; }&先执行1,3 后执行2,4
十二、at(在未来的某一时间执行一次任务,一但设定了放在/var/spool/at里面)
at [选项] TIME
-V 显示版本信息
-l 列出指定队列中等待运行的作业
-d 删除制定的作业
-c 查看具体作业任务
-f 跟上文件 从指定的文件中读取任务
-m 当任务被完成之后,将给用户发送邮件,即使没有标准输出
at的时间定义格式:HH:MM 、HH:MM YYYY-MM-DD、HH:MM[am|pm] [Month] [Date] 、HH:MM[am|pm] + number [minutes|hours|days|weeks]
白名单:/etc/at.allow 默认不存在,只有该文件中的用户才能执行at命令
黑名单:/etc/at.deny 默认存在,拒绝里面的用户执行at命令
如果两个文件都不存在,只有root可以执行at命令
十三、crond(周期性任务计划)
(1)系统维护作业放在:/etc/crontab中 只能管理员才能用
例如:*/5 * * * * root tar cvf /app/etc.tar.xz /etc/ &> /dev/null
每5分钟以root的身份执行打包命令
例如:晚上9点10分运行echo命令
10 21 * * * root /bin/echo “Howdy!”
例如:每3小时echo和wall命令
0 */3 * * * root /bin/echo “howdy”;/usr/bin/wall “welcome to Magedu!”
时间的表示法:
1、特定值
2、* 每。。
3、离散取值 #,#
4、连续取值#-#
5、步长 /#
6、@reboot=========== Run once after reboot.
7、@yearly===========0 0 1 1 *
8、@annually===========0 0 1 1 *
9、@monthly===========0 0 1 * *
10、@weekly===========0 0 * * 0
11、@daily=========== 0 0 * * *
12、@hourly===========0 * * * *
但是要注意一点:对于cron任务来讲,%有特殊用途;如果在命令中要使用%, 则需要转义,将%放置于单引号中,则可不用转义
(2)普通用户任务:crontab
-e 编辑任务(默认是以vi打开,想要带颜色需要在/etc/profile.d/里面创建一个文件写入变量 export EDITOR=vim就能以vim方式打开)
-l 列出所有任务
-r 移除所有任务
-u user 仅root可以运行,指定用户管理任务
-i -r 交互式删除,问一下是否要删除
管理员可以在/var/spool/cron/里面看到每个用户的计划任务,或者crontab -l -u user
如果以后不小心删除计划任务了,可以查看日志/var/log/cron,恢复计划任务
如何每几秒执行一次:需要用到sleep usleep(微妙执行)
例如:* * * * * for min in 0 1 2; do echo “hi”; sleep 20;
以上就是我对进程和计划任务的全部总结,希望能够帮助到大家!!!
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/86670