进程管理与计划任务
内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、 安全功能等
Process: 运行中的程序的一个副本,是被载入内存的一个指令集合
进程ID (Process ID ,PID )号码被用来标记各个进程
UID 、GID 、和SELinux 语境决定对文件系统的存取和访问权限,
task struct :Linux 内核存储进程信息的数据结构格式
task list:多个任务的的task struct 组成的链表
nice 值:-20 到19 ,对应 系统优先级100-139 或99
O(1), O(logn), O(n) 线性, O(n^2) 抛物线, O(2^n)
Page Frame: 页框,用存储页面数据,存储Page 4k
LRU :Least Recently Used 近期最少使用算法, 释放内存物理地址空间和线性地址空间
MMU :Memory Management Unit 负责转换线性和物理地址
TLB:Translation Lookaside Buffer 翻译 后备 缓冲器, 用于保存虚拟地址和物理地址映射关系的缓存
3.IPC: Inter Process Communication
同一主机: signal: 信号,进程与进程之间不能直接访问内存空间,
shm: shared memory 找一块共享内存空间,共享
semaphore: 信号量,一种计数器,两个进程不能同时访问,一个访问后加上lock
不同主机:rpc: remote procedure call
守护进程: daemon, 在系统引导过程中启动的进程, 和终端无关进程
停止态:stopped, 暂停于内存,但不会被调度,除非手动启动
Linux 系统状态的查看及管理工具:pstree, ps, pidof,pgreb, top, htop, glance, pmap, vmstat, dstat, kill,pkill, job, bg, fg, nohup
Linux 系统各进程的相关信息均保存在/proc/PID 目录下的各文件中
u 显示进程所有者、PID、cpu、内存、VSZ、RSS 等信息
o 属性… 选项显示定制(u里的选项,所以不和u连用)的信息
pid 、comm 、%cpu 、%mem 、state 、tty 、[e]user(生效) 、ruser(发起)
VSZ: Virtualmemory SiZe ,虚拟内存集,线性内存
RSS: ReSident Size, 常驻内存集,真实内存
例:ps axo pid,cmd,psr,ni,pri,rtprio
1.nice 值 -20—19 ps o ni[ce]可以查看
nice -n 优先级 cmd 例:nice -n 10 ping 127.1
renice 优先级 PID 例:renice -10 3213 超过-20—19,用-20或19
-u : effective user ,生效者 例:pgrep -u root
-U : real user ,真正发起运行命令者 例:pgrep -U root
-t terminal: 与指定终端相关的进程 例:pgrep -t pts/0
-a: 显示完整格式的进程名 例:pgrep -a ping
-P pid: 显示指定进程的子进程 例:pgrep-P 2314
pidof进程名 查询进程名对应的进程号,如果能查询出来echo $? 为0值,查不出值为1
pidof httpd &> /dev/null || systemctl restarthttpd
(1)uptime 显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1 、5 、10 分钟的平均负载,一般不会超过1)值越大,负载越大
在工作中,uptime查询,显示系统已启动的时间太长,别乱碰,机器很老,很容易故障
② 通常每个CPU 内核的当前活动进程数不大于3,那么系统的性能良好。 如果每个CPU 内核的任务数大于5, 那么此主机的性能有严重问题
③ 如果linux 主机是1个双核CPU,当Load Average,比内核大的超过3,不太好,为6的时候说明机器已经被充分
第二行 tasks任务: 总数 在运行 睡眠的 stop 僵尸态
第三行栏位信息简介:cpu dd if=/dev/zeroof=/dev/null 纯粹占用cpu,用于实验
第五行swap信息: 总数 空闲内存数 已经占用的 缓存buff
dd if=/dev/zero of=/dev/null bs=3G count=1纯粹耗费swap,用于实验
2. top :有许多内置命令(认为干预):(打开后直接按下面的选项)
修改刷新时间间隔:s(默认3秒一刷新) s 10 10秒一刷新
终止指定进程:k k 进程号 kill信号 例:k 4123 9
4.htop 更花哨的top工具,默认没有安装,需从EPEL源中安装yum -y install htop
F1 help F2 选择格式(按空格) F3搜索 F4过滤 F5显示 F6 排序 F9kill
① procs:
so:从内存交换至磁盘的数据速率(kb/s) 测试dd if=/dev/zero of=/dev/null bs=3G count=1
bi :从块设备读入数据到系统的速率(kb/s) 测试dd if=/dev/sda of=/dev/null
bo: 保存数据至块设备的 速率 测试dd if=/dev/zeroof=/app/f1
us:Time spent running non-kernel code
sy: Time spent running kernel code
id: Time spent idle. Linux 2.5.41 前, 包括IO-waittime.
wa: Time spent waiting for IO. 2.5.41 前,包括in idle.
st: Time stolen from a virtual machine.2.6.11 前, unknown.
#:指定刷新时间间隔,并不退出 例:vmstat1 一秒刷新一次
# #:指定刷新时间间隔和刷新几次 例:vmstat1 10 一秒刷新一次,刷10次退出
每秒钟读取多少K的数据量 每秒钟写多少K的数据量 总的读的数据量 总的写
#:指定刷新时间间隔,并不退出 例:iostat1 一秒刷新一次
# #:指定刷新时间间隔和刷新几次 例:iostat1 10 一秒刷新一次,刷10次退出
(3)pmap命令:进程对应的内存映射,占用哪部分真正的内存空间
pmap [options] pid [...] 查看是否有内存泄漏问题,只存不释放,发现内存不断的增大,有问题
glances [-bdehmnrsvyz1] [-B bind] [-c server] [-Cconffile] [-p port] [-P password] [--password] [-t refresh] [-f file] [-ooutput]
a Sort processes automatically l Show/hide logs
c Sort processes by CPU% b Bytes or bits for network I/O
m Sort processes by MEM% w Delete warning logs
p Sort processes by name x Delete warning and critical logs
i Sort processes by I/O rate 1 Global CPU or per-CPU stats
d Show/hide disk I/O stats h Show/hide this help screen
f Show/hide file system stats t View network I/O as combination
n Show/hide network stats u View cumulative network I/O
s Show/hide sensors stats q Quit (Esc and Ctrl-C also work)
-f /path/to/somefile: 设定输入文件位置
(5)dstat命令:系统资源统计, 相对较新的命令,代替vmstat,iostat
dstat [-afv] [options..] [delay [count]]
1.向进程发送控制信号,以实现对进程管理, 每个信号对应一个数字,信号名称以SIG 开头(可省略 ), 不区分大小写
2) SIGINT: 中止正在运行的进程;相当于Ctrl+c
(1) 信号的数字标识:1, 2, 9 例:kill -1 PID
(2) 信号完整名称:SIGHUP 例:kill -SIGHUP PID
(3) 信号的简写名称:HUP 例:kill -HUP PID
按名称:killall [-SIGNAL] com… killall -9 bash (全杀) killall httpd
按模式:pkill [options] pattern pkill -9 "bash"支持正则
-u uid: effective user 生效者 suid特殊权限
后台作业:可通过终端启动,但启动后即转入后台运行(释放终端)
后台作业虽然被送往后台运行,但其依然与终端相关;退出终端,将关闭后台作业。如果希望送往后台后,剥离与终端的关系
(3)并行运行
{ ping -c 3 127.1 ; ping 127.2 ; }& { ping -c 3 127.3 ; ping 127.4 ; }&
rpm -ql at 看到有servie,就想到查询服务是否开启
centos 7
systemctl status atd[.service] 查询服务状态
service atdstatus
① 常用选项: 队列信息的配置文件在 /var/spool/at目录下
-l:列出指定队列中等待运行的作业;相当于atq 例:at -l
-f路径 :从指定的文件中读取任务 例:at -f at.txt 12:12
因为是交互式的,所以可以事先把计划任务写到脚本里,再用管道实现非交互,<,-f
注意:作业执行命令的结果中的标准输出和错误以邮件通知给相关用户,为了减少生成垃圾邮件,可以加上 &> /dev/null
noon(12:00), midnight(00:00), teatime (4pm)
now+#{minutes,hours,days,OR weeks}
HH:MM 在今日的 HH:MM 进行,若该时刻已过,则明天此时执行任务
HH:MM YYYY-MM-DD 02:00 2016-09-20 规定在某年某月的某一天的特殊时刻进行该项任务
HH:MM[am|pm] [Month] [Date] 例:04pm March 例:17:20 tomorrow
HH:MM[am|pm] + number [minutes|hours|days|weeks] 在某个时间点再加几个时间后才进行该项任务
1)交互式 2)输入重定向 例:at12:12: 2017-12-12 < at.txt 3)at –f 文件
-
/etc/at.{allow,deny} 控制用户是否能执行at 任务
黑名单:/etc/at.deny 默认存在,拒绝该文件中用户执行at 命令
没at.allow,at.deny只有root才有权限执行at
没allow有deny deny中用户不能执行,其他用户默认允许
cronie: 主程序包,提供crond 守护进程及相关辅助工具
cronie-anacron :cronie 的补充 程序,用于 监控cronie任务执行 状况,如cronie 中的任务在过去该运行的时间点未能正常运行,则anacron 会随后启动一次此任务
② 时间表示法:
@reboot Run once after reboot.
系统的计划任务:
/etc/cron.d 目录 vim /etc/cron.d/0hourly
/etc/cron.d/ 配置文件
date -d "yesterday" +%F 创建昨天的时间的文件
date -d "-2 day" +%F 创建前天的时间的文件 date -d "-/+# day" +%F
crontab 命令定义,每个用户都有专用的cron 任务文件:
相当于vi 打开的,没有颜色,export EDITOR=vim 用vim打开,写到配置文件/etc/profile.d/*.sh
crontab [-u user] [-l | -r | -e] [-i]
-e: 编辑任务;改任务 crontab -e 写自己的计划任务
-u user: 仅root 可运行,指定用户管理cron 任务
控制用户执行计划任务 :
没at.allow,at.deny只有root才有权限执行at
没allow有deny deny中用户不能执行,其他用户默认允许
注意:对于cron 任务来讲,% 有特殊用途;如果在命令中要使用%, ,则需要转义,将%
4.秒级 sleep 0.5 支持小数点 usleep 以微秒为单位 10^6微秒 为 1秒
* * * * * root ls;sleep 20;pwd;sleep 20;...
4.anacron 系统 ,运行计算机关机时cron不运行的任务,因为企业不常关机,所有不常用
运行计算机关机时cron不运行的任务,CentOS6 以后版本取消anacron 服务,由crond 服务管理
对笔记本电脑、台式机、工作站、偶尔要关机的服务器及其它不一直开机的系统很重要对很有用
配置文件:/etc/anacrontab ,负责执行/etc/ cron.daily/etc/cron.weekly /etc/cron.monthly 中系统任务。
当执行任务时,更新/var/spool/anacron/cron.daily 文件的时间戳
CentOS6 使用/etc/cron.daily/tmpwatch 定时清除临时文件
CentOS7 使用systemd-tmpfiles-setup 服务实现
systemd-tmpfiles –clean|remove|createconfigfile
转载于:https://blog.51cto.com/13017865/1966019