Linux初学者学习笔记

20170822 进程和计划任务

2017-08-27  本文已影响28人  哈喽别样
  • 进程相关概念
  • 系统进程管理工具
  • 任务计划

一、进程相关概念

二、系统进程管理工具

(一)pstree:打印进程树

(二)ps(process state):显示当前进程状态

(三)nice & renice:调整进程优先级

(四)pgrep:搜索进程

-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名
-a: 显示完整格式的进程名
-P pid: 显示指定进程的子进程

以指定终端/dev/pts/1搜索相关进程,以指定PIN2874搜索其子进程

在hellopeiyang账户下执行passwd命令。passwd命令发起者为hellopeiyang,但生效者为root用户,此时-U选项下有passwd进程,而-u选项下没有passwd进程。

(五)uptime

当前系统运行正常

(六)top:linux进程实时监控

(七)内存监控工具

(1)vmstat命令:虚拟内存信息

vmstat 2 5 间隔2秒扫描一次,一共进行5次

(2)iostat:统计CPU和设备IO信息
iostat 2 5 间隔1秒扫描一次,一共进行3次

(3)pmap命令:进程对应的内存映射

(八)系统监控工具

(1)glances:系统监控,可跨主机监控

a     //默认进程排序
c     //按照CPU占用对进程排序 
m     //按照内存占用对进程排序
p     //按照名称对进程排序
i     //按照I/O使用对进程排序 
d     //显示/隐藏I/O统计
f     //显示/隐藏文件系统统计
n     //显示/隐藏网络统计
s     //显示/隐藏传感器统计 
y     //显示/隐藏硬盘缓存统计
l     //显示/隐藏日志
b     //以Byte或bit为单位显示网络I/O
w     //删除报警日志
x     //删除报警和危险日志
1     //显示全局CPU或CPU每个核心统计
h     //显示/隐藏帮助
t     //查询网络I/O总体统计
u     // 查询网络I/O累计统计
q     //退出,也可以使用Esc或Ctrl+C
-b                       //以Byte为单位显示网卡数据速率
-d                       //关闭磁盘I/O模块
-f /path/to/somefile     //设定输入文件位置
-o {HTML|CSV}            //输出格式
-m                       //禁用mount模块
-n                       //禁用网络模块
-t #                     //延迟时间间隔
-1                       //每个CPU的相关数据单独显示

(2)dstat:系统资源统计,代替vmstat, iostat

-c:显示cpu相关信息
-d:显示disk相关信息
-g:显示page相关统计数据
-m:显示memory相关统计数据
-n:显示network相关统计数据
-p:显示process相关统计数据
-r:显示io请求相关的统计数据
-s:显示swap相关的统计数据
--top-cpu:显示最占用CPU的进程
--top-io: 显示最占用io的进程
--top-mem: 显示最占用内存的进程
--top-latency: 显示延迟最大的进程

(九)kill, killall, pkill:进程管理工具

(1)kill:向进程发送信号,按PID标识进程

  1. SIGHUP:无须关闭进程而让其重读配置文件
  2. SIGINT:中止正在运行的进程;相当于Ctrl+c
  3. SIGQUIT:相当于ctrl+\
  4. SIGKILL:强制杀死正在运行的进程
  5. SIGTERM:终止正在运行的进程
  6. SIGCONT:继续运行
  7. SIGSTOP:后台休眠

(2)killall:向进程发送信号,按名称标识进程

killall -0 httpd  //信号0的作用为检查进程是否正常运行,之后可以echo $?判断
killall -0 httpd || service httpd restart //若httpd进程没有正常运行,则重启httpd服务

(3)pkill:向进程发送信号,按模式标识进程

(十)作业管理

使用Ctrl+Z将前台作业切换至后台睡眠模式,使用bg命令使后台作业继续运行,可以看到这个过程中icmp_seq是连续的,证明后台作业只是曾经睡眠,没有终止

后台作业运行后,显示运行过程,但仍可以向终端中输入命令,如图中红框表示:计划输入命令fg 1,执行fg 1后作业转至前台,终端被占用而无法输入命令,最终Ctrl+C结束本作业

nohup COMMAND &> /dev/null &

screen
COMMAND 
断开终端
screen -ls 
screen -r 

在screen下开启ping进程后,查看进程树发现ping进程在screen进程下

screen2.png

断开终端后,重新恢复终端连接,查看进程树发现screen进程没有消失,而是自行变成了初始进程的子进程,而且PID没有变化,证明原ping进程没有消失

此时通过screen命令重新进入ping进程,通过icmp_seq的数字也说明进程在终端断开期间没有被关闭

三、任务计划

(一)at:未来规定时间点执行一次任务

-V:显示版本信息
-l:列出指定队列中等待运行的作业
-d:删除指定的作业
-c:查看具体作业任务
-f:/path/from/somefile:从指定的文件中读取任务
-m:当任务被完成之后,将给用户发送邮件,即使没有标准输出

红框中邮件内容,显示at定义于当天16:10进行的ntpdate同步时间任务成功完成

(2) 输入重定向,例如
echo "echo haha" | at TIME
at TIME << eof

(3) 从文件导入,at -f FILE TIME

(二)cron:周期性执行任务

第1位: minute         取值:0-59
第2位: hour           取值:0-23
第3位: day of month   取值:1-31
第4位: month          取值:1-12 (or names)
第5位: day of week    取值:0-7 (0 or 7 is Sun, or use names)

编辑/etc/crontab文件如上图

从日志文件可以看到,/etc/crontab文件保存后服务进行了reload重载操作,此时计划任务生效

设置系统默认编辑器为vim:export EDITOR=vim
编辑任务:crontab -e,任务描述格式与/etc/crontab文件格式类似,取消了用户名

/var/spool/cron目录下有以用户名命名的任务文件

当在/etc/cron.deny文件中添加hellopeiyang用户后,hellopeiyang用户无法再使用crontab命令,但过去的计划任务文件仍旧在/var/spool/cron目录下,且可以继续按计划执行

  1. at和crontab运行结果中的标准输出和错误会以邮件通知给相关用户,使用重定向技术阻止邮件发送至用户: COMMAND &> /dev/null

  2. 对于cron任务来讲,%有特殊用途;如果在命令中要使用%,则需要转义,将%放置于单引号中,则可不用转义

上一篇下一篇

猜你喜欢

热点阅读