Linux进程和计划任务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux进程和计划任务相关的知识,希望对你有一定的参考价值。
内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、 安全功能等
进程管理:
系统优先级:数字越小,优先级越高
实时优先级: 99-0,值最大优先级最高
nice值:-20 到19 ,对应系统优先级100-139或99
Linux 内核:抢占式多任务
进程类型:
守护进程: daemon, 在系统引导过程中启动的进程,和终端无关进程
前台进程:跟终端相关,通过终端启动的进程
注意:两者可相互转化
进程状态:
运行态:running
就绪态:ready
睡眠态:
可中断:interruptable
不可中断:uninterruptable
停止态:stopped, 暂停于内存,但不会被调度,除非手动启动
僵死态:zombie,结束进程,父进程结束前,子进程不关闭
进程和线程的区别:
一个进程可以有多个线程,一个CPU只能运行一个进程,
线程可以共享资源,包括网络资源,内存资源
进程管理工具:
pstree -p : 查看进程树 -p 查看pid
ps : 查看终端信息
默认显示当前终端中的进程
? a 选项包括所有终端中的进程
? x 选项包括不链接终端的进程
? u 选项显示进程所有者的信息
? f 选项显示进程的父进程
? o 属性… 选项显示定制的信息
pid 、comm 、%cpu 、%mem 、state 、tty 、euser 、ruser
pidof command : 查看运行命令的pid
stat:进程状态
R S D T Z L N <
可中断休眠 停止 僵尸进程 多线程 高优先级
常用组合:-ef
-e: 显示所有进程
-f: 显示完整格式程序信息
常用组合:-eFH
-F: 显示更完整格式的进程信息
-H: 以进程层级格式显示进程相关信息
nice命令:
nice 10 pid
renice -n 10 pid 调整进程优先级
uptime : 显示当前时间,和系统平均负载
top命令:
-d # :指定刷新时间间隔,默认为3秒
-b :以批次方式 (就是一次显示一个页面)
-n # :显示多少批次(比如显示3次页面就退出的意思)
排序:
P :以占据的CPU 百分比,%CPU
M :占据内存百分比,%MEM
T :累积占据CPU 时长,TIME+
首部信息显示:
uptime 信息: l 命令
tasks 及cpu 信息: t 命令
cpu 分别显示: 1 ( 数字)
memory 信息: m 命令
退出命令: q
修改刷新时间间隔: s
终止指定进程: k
保存文件: W
top栏位信息简介;进程查看对比就方便记住了
htop 命令:需从Fedora-EPEL 源安装 yum -y install htop
vmstat: 虚拟内存信息
vmstat 2 5 : 每2秒显示一次,显示五次结束
iostat: 统计CPU 和设备IO 信息
iostat 2 5 :
系统监测工具:
glance:
服务器模式:
glances -s -B IPADDR
IPADDR: 指明监听的本机哪个地址
客户端模式:
glances -c IPADDR
IPADDR: 要连入的服务器端地址
dstat:, 代替vmstat,iostat;功能很强大
-c: 显示cpu 相关信息
-d: 显示disk 相关信息
-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
(2) 信号的简写名称:HUP
例如:kill -9 PID kill -1 pid
作业管理:
Linux 的作业控制
前台作业:通过终端启动,且启动后一直占据终端;
后台作业:可通过终端启动,但启动后即转入后台运行(释放终端)
? 如何让作业运行于后台?
(1) 运行中的作业: Ctrl+z (此操作会使进程休眠)
(2) 尚未启动的作业:# COMMAND & (此操作后台运行)
? 后台作业虽然被送往后台运行,但其依然与终端相关;退出终端,将关闭
后台作业。如果希望送往后台后,剥离与终端的关系
# nohup COMMAND & #screen;COMMAND
? 查看所有作业:
# jobs
? 作业控制: 后台作业都会有一个编号,直接指定编号也行
# fg [[%]JOB_NUM] :把指定的后台作业调回前台
# bg [[%]JOB_NUM] :让送往后台的作业在后台继续运行
# kill [%JOB_NUM] :终止指定的作业
并行运行:
方法1 (写三个脚本,放到一个脚本运行,每个脚本后用&)
vi all.sh
f1.sh&
f2.sh&
f3.sh&
? 方法2
(f1.sh&);(f2.sh&);(f3.sh&)
? 方法3
{ f1.sh& f2.sh& f3.sh& }
任务计划:
Linux 任务计划、周期性任务执行
? 未来的某时间点执行一次任务
at
batch :系统 自行选择空闲时间去执行此处指定的任务
? 周期性运行某任务
cron
at: 依赖软件包,考试时候类似的包都会挖坑,需要手动启动服务,否则做完不生效
rpm -q at :查询软件包名称
rpm -ql at : 查询安装包路径
service atd status :查看当前服务是否启动 start和stop,临时启动
chkconfig –list atd :查看是否开机启动的
chkconfif –level 5 atd on/off :在模式5设置开机启动或者关闭 –help 查看帮助
centos7 :
systemctl is-enabled atd :查看atd下次启动是否自动启动
systenctl enabled atd : 下次启动自动启动
systenctl disable atd : 下次启动不自动启动
at time :命令格式,后面跟时间,ctrl+d 结束
at -l : 查看计划任务
at -d #: 删除指定的计划任务编号
at -c #: 查看任务计划内容, 目录在 /var/spool/at/
at -f *.text time: 把多个任务计划写到文件调用
at -m : 当任务 被完成之后,将给用户发送邮件,即使没有标准输出
计划任务结果以邮件形式发送,建议使用重定向解决 >/dev/null
同时间的计划任务支持并行运行。
at.deny 和at.allow /et/at.deny 默认/etc/at.allow 不存在
at.deny 黑名单,要生效的前提,at.allow不存在,白名单的优先级最高
at.allow 白名单,只有白名单的用户才可能执行at,默认不存在,如果存在,at.deny失效,优先级高
如果都不存在,只有root可以执行at
如果 两个文件都不存在有 ,只有 root 行 可以执行 at 命令
周期性任务计划:
cron : 和at一样,需要先查询清楚路径和是否启动服务,或者开机启动
rpm -qa cron* : 可以用通配符搜索;
确保crond 守护处于运行状态:
CentOS 7:
systemctl status crond
CentOS 6:
service crond status
? 计划周期性执行的任务提交给crond ,到指定时间会自动运行
系统cron 任务:系统维护作业
/etc/crontab
用户cron 任务:
crontab 命令
? 日志:/var/log/cron
周期性计划对符号敏感,比如%,所以建议调用脚本,否则需要加单引号;
vim /etc/crontab
时间表示法:
? (1) 特定值
给定时间点有效取值范围内的值
? (2) *
给定时间点上有效取值范围内的所有值
表示 “每…”
? (3) 离散取值
#,#,#
? (4) 连续取值
#-#
? (5) 在指定时间范围上, 定义步长
/#: #即为步长
? 示例:每3小时echo 命令
0 */3 * * * centos /bin/echo “howdy!”
一般来说,几月几号和周几一般不同时出现,如果都出现,表示或者的关系,都会执行
@reboot Run once after reboot :表示下次开机运行
? @yearly 0 0 1 1 *
? @annually 0 0 1 1 *
? @monthly 0 0 1 * *
? @weekly 0 0 * * 0
? @daily 0 0 * * *
? @hourly 0 * * * *
系统的计划任务:
/etc/crontab
/etc/cron.d/ 配置文件
/etc/cron.hourly/ 脚本
/etc/cron.daily/ 脚本
/etc/cron.weekly/ 脚本
/etc/cron.monthly/ 脚本
以上是关于Linux进程和计划任务的主要内容,如果未能解决你的问题,请参考以下文章