1 进程的概念
内核的功用
进程管理 文件系统 网络功能 内存管理 驱动程序 安全功能
进程
运行中的程序的副本,被载入到内存的指令集合进程ID(process ID,pid)号码来标记各个进程uid,gid,selinux环境决定对文件系统的存取和访问权限通常从执行进程的用户来继承
linux 的进程类型
守护进程 系统启动时启动的进程 与终端无关
用户进程 跟终端有关 不过是终端启动的进程
注意 不过也可以将前台启动的进程送到后台 以守护进程的模式来运行
进程的优先级
系统优先级 数字越小 优先级越高
0-139 centos5 各有140个运行对列和过期对列
0-98,99 centos 6
实时优先级 99-0 值越大优先级越高
nice值 -20到19 对应系统优先级100-139或99
进程间通信 IPC Inter Process Communication
同一主机
signal 信号
shm shared memory
sepaphore 旗语
不同主机
rpc remote process call
socket IP:Port
进程的状态
运行状态 running
就绪状态 ready
睡眠状态 sleep
可中断睡眠 interruptable
不可中断睡眠 uninte
rruptale
停止态 stop 暂停于内存中 不会被调度
僵尸态 zombie 没有父进程
进程的分类
CPU-Bound cpu 密集型 如压缩
IO-Bound IO密集型
USER:运行命令的用户
PID:此进程的PID号
%CPU 进程占用的cpu时间片
%MEM 进程占用的内存
VSZ Vitual memory SiZe 虚拟内存集
RSS ReSident Size 常驻内存集
TTY 当前运行进程所在的终端 守护进程 没有是个?
STAT 进程状态
常见的进程状态
R running
S interruptable sleeping
D uninterruptable sleeping
T stopped
Z zombie
+ 前台进程
l 多线程进程
N 低优先级进程
< 高优先级进程
s session leader 会话
toatal sys
usr 用户
sys 系统
idl 空闲
wai 等待
hiq 硬中断
siq 软中断
dsk/total 磁盘读写
read 从
write 写
system 系统
int 每一秒系统的中断数
csw 每一秒系统的上下文切换
作业的管理
linux 的作业控制
前台作业 通过中断启动 且启动后一直占据的终端
后台作业 可通过终端启动 但启动后即可以转入到后台
让作业转入到后台
1 运行中的作业 ctrl + z
2 未运行的作业 command &
后台作业虽然被放到后台运行,但是还是与当前的终端有关
剥离与当前终端的关系
nohub command &>/dev/null &
screen;command
作业控制:
fg [[%]JOB_NUM] :把指定的后台作业调回前台
bg [[%]JOB_NUM] :让送往后台的作业在后台继续运行
kill [%JOB_NUM]: : 终止指定的作业
at 一次性作业任务
依赖于atd服务 系统需要开启服务,否则将不会运行
/etc/at.{allow,deny} 控制用户能否执行at任务
白名单/etc/at.allow 默认不存在,只要存在该文件 就只有这上的用户可以执行at任务
黑名单 /etc/at.deny 默认存在 拒绝用户执行at任务在文件中的用户不可以执行at任务
注意 白名单和黑名单同时存在时,会执行白名单
如果两个文件都不存在,只有root可以执行at任务
cron 周期性任务
依赖于crond守护进程,同时也要有cronie补充程序,用于监控cron任务没有在规定时间内运行,再次启动cron任务
系统周期任务
在/etc/crontab 及 /etc/cron.d/ 定义
用户的周期性任务/var/spool/cron中每一个用户一个文件
练习
1 每4小时备份一次/etc至目录/backup中,保存的文件名格式名为etc-yyyy-mm-dd.tar.xz
0 */4 * * * /usr/bin/tar -Jxf /backup/etc-`date +%F`.tar.xz /etc
2 每周2,4,7备份/var/log/message 文件备份至/logs目录中 文件名如 messages-yyyymmdd
0 0 * * 2,4,7 /usr/bin/cp -a /var/log/message /logs/message-`date +%Y%m%d`
3 每两小时取出当前系统/proc/meminfo文件以S或M开头的信息追加至/tmp/meminfo.txt文件
0 */2 * * * /usr/bin/grep -E "^[S|M]" /proc/meminfo >> /tmp/meminfo.txt
4 工作日时间内 每一个小时执行一次'ip addr show' 命令
0 * * * 1-5 /usr/sbin/ip addr show &> /dev/null