进程
一个程序被加载到内存当中运作,那么在内存内的那个数据就被称为进程(process)。
内核的功用:
进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等
进程编号:pid,来标记各个进程
task seruct:进程结构
task list :数据结构方式 链表
第一个祖宗进程 init 1
进程优先级:
系统优先级:数字越小,优先级越高 (0-139)centos 5
各有140个运行队列和过期队列
0-98.99()centos6
实时优先级:99-0 值越大优先级越高
nice值:-20到19.对应系统优先级100-139或99
进程内存:
page frame 页框 储存页面数据 page 4k
LRU Least Recently Used 近期最少使用 算法,释放内存 物理地址空间和线性地址空间 MMU:Memory Management Unit负责转换线性和物理地址 TLB:Translation Lookaside Buffer 翻译后备缓冲器,用于 保存虚拟地址和物理地址映射关系的缓存
进程的查看和小工具:
pstree, ps, pidof, pgrep, top, htop,
glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup 等
pstree:树状进程信息左侧为父进程 右侧子进程。 有的父进程杀了 子进程会重新找新父进程
[root@centos7 ~]#pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager─┬─dhclient
│ └─2*[{NetworkManager}]
├─VGAuthService
├─2*[abrt-watch-log]
├─abrtd
├─accounts-daemon───2*[{accounts-daemon}]
├─agetty
├─alsactl
├─atd
├─auditd─┬─audispd─┬─sedispatch
│ │ └─{audispd}
│ └─{auditd}
├─automount───4*[{automount}]
├─avahi-daemon───avahi-daemon
├─chronyd
├─colord───2*[{colord}]
├─crond
[root@centos7 ~]#pstree -p <== 显示程序识别码
systemd(1)─┬─ModemManager(660)─┬─{ModemManager}(691)
│ └─{ModemManager}(718)
ps
显示进程状态快照
linux系统个进程的相关信息保存在/proc/pid目录下的各个文件中
ps aux :查看系统的所有的进程信息
ps -lA 所有系统的数据
ps axjf 进程树状态
-A 所有进程
-a 不与terminal 相关的进程
-u 有效用户
x 跟a一起使用
l pid
j 工作的格式
-f 更完整的输出。
常见选项:
-C cmdlist 指定命令,多个命令用,分隔
-L 显示线程
-e: 显示所有进程,相当于-A
-f: 显示完整格式程序信息
-F: 显示更完整格式的进程信息
-H: 以进程层级格式显示进程相关信息
-u userlist 指定有效的用户ID或名称
-U userlist 指定真正的用户ID或名称
-g gid或groupname 指定有效的gid或组名称
-G gid或groupname 指定真正的gid或组名称
-p pid 显示指pid的进程
--ppid pid 显示属于pid的子进程
-M 显示SELinux信息,相当于Z
[root@centos7 ~]#ps -l <== 仅显示与自己相关的进程 与自己bash相关的
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1468 1191 0 80 0 - 29611 do_wai pts/1 00:00:00 bash
0 R 0 5913 1468 0 80 0 - 38300 - pts/1 00:00:00 ps
上面对应的标示符号讲解:
F:进程标示 权限号码:4为root 1为这个子进程可以进行复制 无法实际执行。
S:进程的状态:R 进程运行中,S 该进程在睡眠,可唤醒。D 不可被唤醒的睡眠状态,可能在等待io设备的情况。T 停止状态,可能在工作控制台(后台暂停)或出错的状态
Z 僵尸状态 结束的进程 五大被删除出内存外
UID/PID/PPID:此进程被该id所拥有/进程的pid号码/此进程的父进程pid号码。
C:代表cpu的使用率
PRL/NI:代表此进程的执行优先级,数值越小表示该进程越快的被cpu处理
ADDR/SZ/WCHAN:与内存有关,
addr kernel function:指出该进程在内存的哪个部分,如果是个running的进程,一般显示-。
SZ:代表此进程用掉多少内存
/WCHAN 表示该进程是否在运行,若为 - 表示在运行。
TTY: 登陆者的终端位置,远程登陆则使用动态端口接口 pts/n
TIME :使用掉的cpu时间 此进程花费cpu的时间
CMD: command缩写 造成此程序的触发进程的命令为何。
杀进城:
[root@centos7 ~]#killall ping <==关闭这个进程ping
计划任务
并行运行
并行命令:
一种:
im下编辑 每行命令 后面加&
二中:
[root@centos7 bin]#{ ping 127.1 & ping 127.2 & ping 127.3 & }
[1] 2814
[2] 2815
[3] 2816
同时运行多个进程,提高效率
方法1 vi all.sh f1.sh& f2.sh& f3.sh&
方法2 (f1.sh&)?f2.sh&)?f3.sh&)
方法3 { f1.sh& f2.sh& f3.sh& }
三:并行执行
{
echo "11111111"
echo "222222222“
}&
{
echo "3333333"
echo "44444444"
}
at
建立一个计划任务:
at
-V 显示版本号
-t 时间格式
-L 列出指定列队中等待运行的作业;想打韩国与 相当于atq
-d 删除指定的作业任务
-c 查看作业内容
-f /path/file 制定的文件中读取任务
-m 当任务完成时 给用户发邮件
*重启并不影响计划任务执行 已经保存的文件里
at任务
TIME:定义出什么时候进行 at 这项任务的时间 HH:MM [YYYY-mm-dd] noon, midnight, teatime(4pm) tomorrow now+#{minutes,hours,days, OR weeks}
at时间格式
HH:MM 02:00 在今日的 HH:MM 进行,若该时刻已过,则明天此时执行任务
HH:MM YYYY-MM-DD 02:00 2016-09-20 规定在某年某月的某一天的特殊时刻进行该项任务 HH:MM[am|pm] [Month] [Date] 04pm March 17 17:20 tomorrow
HH:MM[am|pm] + number [minutes|hours|days|weeks]
在某个时间点再加几个时间后才进行该项任务 now + 5 min 02pm + 3 days
at任务
执行方式: 1)交互式 2)输入重定向 3)at –f 文件
依赖与atd服务,需要启动才能实现at任务
at队列存放在/var/spool/at目录中
/etc/at.{allow,deny}控制用户是否能执行at任务
白名单:/etc/at.allow 默认不存在,只有该文件中的用户才能执行at命令
黑名单:/etc/at.deny 默认存在,拒绝该文件中用户执行at命令,而没有在 at.deny 文件中的使用者则可执行 如果两个文件都不存在,只有 root 可以执行 at 命令
[root@centos7 ~]#at 21:00 <== 定义时间
at> shutdown -h now <== 写命令
at> <EOT> <== 退出保存 按ctrl +d键 +c不保存
job 1 at Tue Oct 30 21:00:00 2018 <== 生效时间
[root@centos7 ~]#at -l <== 查看等待执行的计划任务
1 Tue Oct 30 21:00:00 2018 a root <== 1代表作业编号
[root@centos7 bin]#at -c 2 <== 查看第二个计划任务 的详细信息
确认at服务已经启动:
[root@centos7 bin]#systemctl is-enabled atd
enabled <== enabled 表示该服务启动ok
centos6 确认方法:
[root@centos7 bin]#chkconfig --list atd