PID 进程号,用来标记各个进程;CentOS6中起始的第一个进程为init
7中为systemd
进程优先级:
系统优先级:数字越小,优先级越高
0-139(4,5中)
各有140个运行队列和过期队列
0-98,99(6中)
实时优先级:99-0:值越大优先级越高
nice值:-20到19,对应系统优先级100-139或99
进程状态:
运行:running;就绪:ready; 睡眠:可中断——interruotable
不可中断——uninterruptable
停止:stopped,暂停与内存,但不会被调度,除非手动启动;僵死:zombie,结束进程,父进程结束前,子进程不关闭
Linux内核:抢占式多任务(多任务同时进行,交叉运行)
进程类型:
守护进程:daemon,在系统引导过程中启动的进程,和终端无关进程
前端进程:跟终端相关,通过终端启动的进程
注意:两者之间可以相互转化
pstree -p(能查看编号) {}的为线程(thread)线程之间共享资源
ps 用来查看进程信息
支持三种选项:
UNIX选项 如 -A -e
BSD选项 a
GUN –help
默认显示当前终端中的进程:
a 包含所有终端中的进程
x 包括不链接终端的进程
u 显示进程所有者的信息
f 显示进程的父进程
o 属性… 显示定制的信息 —— xao pid|%cpu|%mem|euid|ruid|ni(nice值)|pri(priority)|psr(processorCPU编号)|rtprio(实时优先级)
aux(常用)
进程优先级
nice 命令
nice [option] [COMMAND [ARG]…]
nice -n 10 command
nice –6 command 赋予-6优先级
renice命令
renice [-n] priority pid …
renice -9 pid 赋予-9优先级
搜索进程
预定义模式:pgrep
[option] pattern
-u uid : 生效者
-U uid :真正发起运行命令者
-t terminal :与指定终端相关的进程
-l :显示进程名
-a :显示完整格式的进程名
-P pid :显示指定进程的子进程
pidof command 直接查看进程号
uptime 显示当前系统时间、运行时间、几个用户登录、平均负载(1、5、10分钟的负载,一般不超过1)
top 相当于windows的任务管理器,实时监控
-b 全部显示
-d #:指定刷新时间间隔
-n # :刷新多少次后退出
首部信息的显示:
uptime 信息 —— l
tasks及CPU信息 —— t
CPU信息单独显示 —— 1
us 用户空间 sy 内核空间 ni 调整nice时间 id 空闲 wa 等待IO时间 hi 硬中断 si 软中断 st 虚拟机偷走的时间
k 终止进程 由自己输入想要终止的进程的进程号
w 将信息存到指定文件中——root下的.toprc
s 指定刷新时间间隔
htop 命令 更加方便
-d #:指定延迟时间
-u username:仅显示指定用户的进程
-s colume:以指定的字段进行排序
子命令
s:跟踪选定进程的系统调用
l:显示选定进程打开的文件列表
a:将选定的进程绑定至某指定CPU核心
t:显示进程树
vmstat命令:虚拟内存信息 vmstat 1 10 隔1s刷新 刷新10次停止
si :相对于内存来说的,从磁盘读数据交换到内存的数据速率
so :相对于内存来说的,从内存交换到磁盘的速率 ,内存不够时调用swap
-s :显示统计信息
iostat:统计CPU和设备IO信息
pmap: 进程对应的内存映射
-x:显示详细格式的信息
另外一种实现:cat /proc/PID/maps
glances C/S模式下运行glances命令
服务器模式:
glances -s -B
IPADDR
IPADDR:指明监听的本机的哪个地址
客户端模式:
glances -c IPADDR
IPADDR:要连入的服务器端地址
dstat :系统资源统计
-c:显示CPU相关信息
-C#,#,…,total
-d:显示disk相关信息
-D total,sda,sdb,…
-g:显示page相关统计数据
-m:显示memory相关统计数据
-n;显示network相关统计数据
-p:显示process相关统计数据
-r:显示io请求相关的统计数据
-s:显示swapped相关的统计数据
kill命令:
向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开头(可省略),不区分大小写
显示当前系统可用信号: kill -l , trap -l
常用信号:man 7
signal
1)SIGHUP:无须关闭进程而让其重读配置文件
2)SIGINT:终止正在进行的进程;相当于Ctrl+c
3)SIGQUIT:相当于ctrl+\
9)SIGKILL:强制杀死正在进行的进程
15)SIGTERM:终止正在进行的进程
18)SIGCONT:继续运行
19)SIGSTOP:后台休眠
指定信号的方法:
(1)信号的数字标识:1,2,9等 kill -1 pid
(2)信号完整名称:例如——SIGHUP
(3)信号的简写名称:HUP
按PID:kill [-SIGNAL] pid …
kill -n SIGNAL pid ; kill -s SIGNAL pid
按名称 : killall [-sigal] comm…
按模式:pkill [options] pattern
-SIGNAL
-u uid : 生效者
-U uid : 真正发起运行命令者
-t terminal : 与指定终端相关的进程
-l :显示进程名
-a : 显示完整格式的进程名
-P pid :显示指定进程的子进程
后台运行命令:
运行中的作业 : Ctrl +z
尚未启动的作业:
COMMAND & ;
后台作业虽然被送往后台运行,但其仍然与终端相关;退出终端,将关闭后台作业。如果希望送往后台后,剥离与终端的关系:
nohup COMMAND
&
screen;COMMAND
查看当前终端所有作业:
jobs ——可以看到JOB_NUM
作业控制 :
fg JOB_NUM:把指定的后台作业调回前台
bg JOB_NUM :让送往后台的作业在后台继续运行
kill %JOB_NUM :终止指定的作业
同时运行多个进程,提高效率
方法1:
vim all.sh
f1.sh &
f2.sh &
f3.sh &
方法2:
(f1.sh &);(f2.sh &);(f3.sh &)
方法3:
{f1.sh& f2.sh& f3.sh&}
at 任务
在7中——systemctl is-enabled atd 查看at服务是否开机自动启动
systemctl status
atd 目前是否处于启动状态
在6中——chkconfig –list atd 可用来查看不同模式下的状态
service atd status
查看目前状态
at 时间
at> 输入指定命令
at>……
at> Ctrl +d 退出
ll /app 下是否生成了at.log文件
执行成功
输入的指令的标准输出不会在界面输出,会以邮件的方式通知,但是广播不会发送邮件,直接广播通知
会生成下图中的绿色文件,退出终端、重启机器,计划任务依旧会存在,执行完成后,删除文件
常用选项:
-V:显示版本信息
-l:列出指定列队中等待运行的作业;相当于atq
-d #(atq 查看的编号或者at -l):删除指定的作业;相当于atrm
-c:查看具体作业任务
-f /path/from/somefile
:从指定的文件中读取任务
-m:当任务被完成后,将给用户发送邮件,没有标准输出
注意:作业执行命令的结果中的标准输出和错误以邮件通知给相关用户
time:定义出什么时候进行at这项任务
HH:MM(小时:分钟)
noon , midnight ,teatime(4pm),tomorrow
now+#{minutes,hours,days,weeks}
执行方式:
1、交互式 2、输入重定向 3、at -f 文件
/etc/at.{allow,deny}控制用户是否能执行at任务
白名单:/etc/at.allow 默认不存在,只有改文件中的用户才能执行at命令
黑名单:/etc/at.deny 默认存在,拒绝改文件中的用户执行at命令,而没有在at.deny文件中的使用者则可以执行
at.allow :优先级高,有此文件,deny无效,只有此文件里的用户可以使用at
at.deny:优先级低
如果都没有,普通用户全都拒绝使用at
周期性执行任务 cron计划周期性执行的任务提交给crond,到指定时间会自动运行
相关的你程序包:
cronie:主程序包,提供crond守护进程及相关辅助工具
cronie-anacron:cronie的补充程序,用于监控cronie任务执行状况,如cronie中的任务在过去该运行的时间点未能正常运行,则anacron会随后启动一次此任务
crontabs:包含CentOS提供系统维护服务
系统cron任务:系统维护作业
/etc/crontab
man 5 crontab 查看帮助
用户cron任务:
crontab命令
日志:/var/log/cron
vim /etc/crontab (系统计划任务)
每个不同时间之间 空格隔开彼此
时间表示法:
1、特定值
给定时间点有效取值范围内的值
2、* 给定时间点上有效取值范围内的所有值,表示“每…”
3、离散取值: # # #
4、连续取值 : #—#
5、在指定时间范围上,定义步长
/# :#即为步长 例如:在分钟 */2 表示为每2分钟
日期与星期:
* * 10,20 * 0,6 之间的关系是或的关系,即每月的10号,20号,或者周六周日执行,且的关系时,可以用脚本来过滤星期
* * 10,20 * * 此为每月的10号和20号
关键字:
@reboot 重启之后执行
@yearly 0 0 1 1 *
@annually 0 0 1 1 *
@monthly 0 0 1 * *
@weekly 0 0 * * 0
@daily 0 0 * * *
@hourly 0 * * * *
示例:每3小时echo和wall命令
0 */3 * * * root
/bin/echo “howdy”; /usr/bin/wall “welcome to magedu!”
注意:运行结果的标准输出和错误以邮件通知各相关用户
1、COMMAND > /dev/null ;2、COMMAND
&> /dev/null(或者 > /dev/null 2>&1)
对于cron任务来说,%有特殊用途;如果在命令中要使用%,则需要转义,将%放置于单引号中,则可不用转义
系统的计划任务:
/etc/crontab
/etc/cron.d/ 配置文件
/etc/cron.hourly/ 脚本
/etc/cron.daily/ 脚本
/etc/cron.weekly/ 脚本
/etc/cron.monthly/ 脚本
普通用户的计划命令存放位置:
/var/spool/cron/
anacron系统:
/etc/anacrontab 配置文件,负责执行/etc/cron.daily /etc/cron.weekly/
/etc/cron.monthly 中的系统任务
字段1、如果在这些日子里没有运行这些任务…..
字段2、在重新引导后等待这么多分钟后运行它
字段3、任务识别器,在日志文件中识别
字段4、要执行的任务
由/etc/cron.hourly/0anacron执行
当执行任务时,更新/var/spool/anacron/cron.daily文件的时间戳
管理临时文件:
CentOS6 使用/etc/cron.daily/tmpwatch 定时清除临时文件
CentOS7 使用systemd-tmpfiles-setuo服务实现
配置文件:
/etc/tmpfiles.d/*.conf
/run/tmpfiles.d/*.conf
/usr/lib/tmpfiles/*.conf
/usr/lib/tmpfiles.d/tmp.conf
d /tmp 1777 root root 10d
d /var/tmp 1777 root root 30d
命令:
systemd-tmpfiles-clean|remove|create configfile
crontab 命令定义,每个用户都有专用的cron任务文件:
/var/spool/cron/USERNAME
crontab 命令;
-l :列出所有任务;
-r:移除所有任务
-i:同-r一同使用,以交互式模式移除指定任务
-u user : 仅root用户可运行,指定用户管理cron任务
创建、编辑计划任务 : crontab -e (-u wang 以wang用户的身份执行,不谢就以自身执行)
不用写用户,直接写时间和命令
e EDITOR 默认使用vi 可以用export EDITOR=vim 则编辑的时候为vim编辑器
vipw 相当于 vi /etc/passwd
控制用户执行计划任务:
/etc/cron.{allow,deny}
之前已经设置的某用户的任务,将用户放在deny中,该任务依旧执行
若是不小心删除,恢复 可在 /etc/log/cron的日志中查看 执行的命令
任务执行实现秒级:
* * * * * for min
in 0 1 2 ; do echo “hi” ; sleep 20 ; done 实现每20s执行一次
sleep命令:
sleep # s/m/h/d (秒/分钟/小时/天)
默认为s
cat sysstat 系统自定义的生成的日志
原创文章,作者:Immortals、zcy,如若转载,请注明出处:http://www.178linux.com/75574