进程
- 每个进程都有唯一的编号,在/proc下可以看到,每个文件夹就代表一个进程,
- { }中的进程表示线程,每个进程有一个或者多个线程
- 每个线程独立工作,线程共享磁盘空间
- 父进程被杀,子进程自动消失
- 图形界面比较占资源,建议关闭图形界面,用时开启切换
- 如果一个进程占用的内存资源一致在增长,那么说明该程序开发有问题
Process :程序运行起来就叫进程,运行程序的一个副本,是被载入内存的一个指令集合
进程ID(process ID ,PID)号码被用来标记各个进程
UID,GID,SELINUX决定对文件系统的存取和访问权限
通常从执行进程的用户来继承
进程存在生存周期
CENTOS6中第一个进程为 init (进程号为1),其余都为init的子进程
CENTOS7中第一个进程为 system (进程号为1),其余的为system的子进程
进程创建:父子进程
进程都由其父进程创建
开启一个子进程,只有当子进程发生数据更改时,则在内存中开辟一块空间(COW写时复制)
进程优先级
系统优先级:数字越小,优先级越高(0-99)
实时优先级:数值越大,优先级越高
Nice值:值越高,优先级越小,可以手动调整(-20—-19)
Renice -n # :可以调整nice优先级(程序在运行状态调整nice值)
指定以#优先级运行程序
Nice -n 5 ping 127.0.0.1
Pri:priority 优先级
Psr:processor CPU编号
Rtprio:实时优先级
例:ps axo cmd,pid,ni,pri,rtprio
进程类型
守护进程:daemon,开机自动启动,和终端无关,不需要用户登录即可启动
前台进程:和终端有关,需要用户登录启动
守护进程和前台进程可以相互转化
进程状态
运行状态,就绪状态,睡眠状态,停止状态,僵死状态
R:运行或就绪状态
D:不可中断的睡眠
S:可中断的睡眠
T:停止状态
Z:僵死状态(该状态太多会影响系统性能,重启之后恢复)
<:高优先级进程
N:低优先级进程
t:前台进程组中的进程
l:多线程进程
s:会话(子进程)发起者
+:前台进程
进程命令
Pstree:显示树状进程(进程树)
-p:显示进程pid
-p user:显示该用户的进程
-ps #:查看和自己有父子关系的进程,包括自己,自己的父进程和子进程(centos7可用)
-H:高亮显示(没有颜色)
Ps:process stats 显示当前进程状态
显示当前终端下的进程
三种风格选项
Unix -options
BSD options 直接跟选项
GNU –options 长选项
BSD选项
a :显示所有和终端相关的进程
x :和终端无关的进程(?表示)
u :显示进程所有者的信息
Ps auxf :以树状显示进程
o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem
k|–sort 属性 对属性排序,属性前加- 表示倒序(centos7上好用)
L:显示支持的属性列表
UNIX风格选项
-C:cmdlist指定命令,多个命令用,隔开(相当于过滤)
-L:显示线程
-e:显示所有进程,相当于-A
-f:显示完整格式的程序信息
-F:显示更完整格式的进程信息
-H:以进程层级格式显示进程的相关信息
-u:userlist 指定有效用户ID或名称
-U:指定真正的用户ID或名称(SUID)
-g:gid或grouplist 指定有效的gid或组名称
-G:指定真正的gid或者组名(SGID)
-p:显示指定pid的进程
–ppid pid :显示属于pid的子进程
例:ps -x 查询你拥有的所有进程(哪个用户登录,就显示哪个用户的进程)有效用户
Ps -fU username|UID :显示指定用户(RUID)的进程(发起者的进程,有效用户也会显示)
Ps -fu username|UID :显示指定用户(EUID)的进程(不显示 有效用户的进程,如psswd不会显示)
Ps -fG groupname:列出该组名所拥有的所有进程
Ps -fg groupname:列出有效组名所拥有的有效进程
Ps -fp pid 通过进程ID来显示所属的进程
Ps -f –ppid uid:以父进程ID 来显示其下所有的进程
Ps -ft 终端:按照终端来显示所属进程
Ps -e –forest:以进程树显示系统中的进程如何互相链接
Ps -f –forest -C 进程名称:以进程树显示指定的进程
查找占用最多内存和CPU的进程:
ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%mem | head
ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%cpu | head
Pgrep
pgrep [options] pattern (表达式)
-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程 (只显示进程ID,配合-l使用)
-l: 显示进程名
-a: 显示完整格式的进程名
-P pid: 显示指定进程的子进程
Pidof 查看进程名
Pidof 进程名
例:pidof bash |httpd
Uptime 负载
显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1、5、10分钟的平均负载,一般不会超过1)
Top 动态查看进程状态
-d #:指定刷新时间间隔,默认为3秒
-b:全部显示,所有进程
-n #:刷新多少次后退出
栏位信息简介
us:用户空间
sy:内核空间
ni:调整nice时间
id:空闲
wa:等待IO时间
hi:硬中断
si:软中断(模式切换)
st:虚拟机偷走的时间
M:根据驻留内存大小排序
P: 根据cpu使用百分比进行排序(默认就是cpu排序)
T: 根据累计时间进行排序
l:是否显示平均负载和启动时间
t:是否显示进程和cpu状态相关信息
m:是否显示内存相关信息
c :是否显示完整的命令行信息
q:退出top
k:终止某个进程
W:保存文件
z:添加颜色
Htop(top升级版自带颜色,需要epel安装)
-d #:指定延迟时间
-u username:仅显示指定用户的进程
-s colume:以指定字段进行排序
子命令
s : 跟踪选定进程的系统调用
l : 显示选定进程打开的文件列表
a :将选定的程序绑定至某指定的CPU核心
t : 显示进程树
Lsof -i :+端口号 :查看哪个进程使用该端口号
Vmstat: 虚拟内存信息
-s:显示内存的统计数据
procs:
r:可运行(正运行或等待运行)进程的个数,和核心数有关
b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)
memory:
swpd: 交换内存的使用总量
free:空闲物理内存总量
buffer:用于buffer的内存总量
cache:用于cache的内存总量
swap:
si:从磁盘交换进内存的数据速率(kb/s)
so:从内存交换至磁盘的数据速率(kb/s)
io:
bi:从块设备读入数据到系统的速率(kb/s)
bo: 保存数据至块设备的速率
system:
in: interrupts 中断速率,包括时钟
cs: context switch 进程切换速率
cpu:
us:Time spent running non-kernel code 用户空间
sy: Time spent running kernel code 内核空间
id: Time spent idle. Linux 2.5.41前,包括IO-wait time. 空闲
wa: Time spent waiting for IO. 2.5.41前,包括in idle. 等待io时间
st: Time stolen from a virtual machine. 2.6.11前, unknown. 被偷走的时间
Iostat:统计cpu和设备的IO信息
查看哪块磁盘的压力大
例 :iostat 1 10 每一秒执行此,执行10次以后推出
Pmap:查看进程和内存的映射关系
Pmap options pid
-x:显示详细格式的信息
Glances:epel源 远程监控主机状态
常用选项:
-b: 以Byte为单位显示网卡数据速率
-d: 关闭磁盘I/O模块
-f /path/to/somefile: 设定输入文件位置
-o {HTML|CSV}:输出格式
-m: 禁用mount模块
-n: 禁用网络模块
-t #: 延迟时间间隔
-1:每个CPU的相关数据单独显示
C/S模式下运行glances命令
v服务器模式:
glances -s -B IPADDR
IPADDR: 指明监听的本机哪个地址
v客户端模式:
glances -c IPADDR
IPADDR:要连入的服务器端地址
dstat命令:系统资源统计,代替vmstat,iostat
dstat [-afv] [options..] [delay [count]]
-c: 显示cpu相关信息
-C #,#,…,total
-d: 显示disk相关信息
-D total,sda,sdb,…
-g:显示page相关统计数据
-m: 显示memory相关统计数据
-n: 显示network相关统计数据
-p: 显示process相关统计数据
-r: 显示io请求相关的统计数据
-s: 显示swapped相关的统计数据
–tcp
–udp
–unix
–raw
–socket
–ipc
–top-cpu:显示最占用CPU的进程
–top-io: 显示最占用io的进程
–top-mem: 显示最占用内存的进程
–top-latency: 显示延迟最大的进程
Iotop : 用来监视磁盘I/O使用状况的top类工具
iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。可查看每个进程是如何使用IO
iotop输出
第一行:Read和Write速率总计
第二行:实际的Read和Write速率
第三行:参数如下:
线程ID(按p切换为进程ID)
优先级
用户
磁盘读速率
磁盘写速率
swap交换百分比
IO等待所占的百分比
线程/进程命令
options
-o, –only只显示正在产生I/O的进程或线程。除了传参,可以在运行过程中按o生效。
v-b, –batch非交互模式,一般用来记录日志。
v-n NUM, –iter=NUM设置监测的次数,默认无限。在非交互模式下很有用。
v-d SEC, –delay=SEC设置每次监测的间隔,默认1秒,接受非整形数据例如1.1。
v-p PID, –pid=PID指定监测的进程/线程。
v-u USER, –user=USER指定监测某个用户产生的I/O。
v-P, –processes仅显示进程,默认iotop显示所有线程。
v-a, –accumulated显示累积的I/O,而不是带宽。
v-k, –kilobytes使用kB单位,而不是对人友好的单位。在非交互模式下,脚本编程有用
-t, –time 加上时间戳,非交互非模式
-q, –quiet 禁止头几行,非交互模式,有三种指定方式
Kill命令
不能kill -9 1 ,虽然杀不死,但是会重伤,可能会影响一些程序的正常运行
向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开头(可省略),不区分大小写
显示系统可用信号: kill -l 或者 grap -l
信号分类
0、测试信号,查看该进程是否在存在
- SIGHUP:无须关闭进程而让其重读配置文件
- SIGINT:中止正在运行的进程,相当于ctrl+c
- SIGQUIT:相当于ctrl+\
- SIGKILL:强制杀死正在运行的进程
- SIGTERM:终止正在运行的进程(正常终止)(默认信号)
- SIGCONT:继续运行
19、SIGSTOP:后台休眠
指定信号的方法:
(1) 信号的数字标识:1, 2, 9
(2) 信号完整名称:SIGHUP (3) 信号的简写名称:HUP
用法 ,options
按PID:kill [-SIGNAL] pid …
kill –n SIGNAL pid;
kill –s SIGNAL pid
例:kill -# pid
Killall 按名称:killall [-SIGNAL] comm…
Killall -9 sleep:杀掉所有sleep进程
按模式:pkill [options] pattern
-SIGNAL :仅pkill可用
-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名(pgrep可用)
-a: 显示完整格式的进程名(pgrep可用)
-P pid: 显示指定进程的子进程
作业管理
前台作业:通过终端启动,且启动后一直占据终端;
后台作业:可通过终端启动,但启动后即转入后台运行(释放终端)
让作业运行于后台(作业放到后台,默认为休眠状态)
运行中的作业:ctrl+z
尚未运行的作业:command &
查看当前终端放在后台的所有作业:jobs
Fg (jobs—num作业号):把后台作业调回前台(%可省略)
Bg (jobs—num作业号):让送往后台的作业在后台继续运行(%可省略)
Kill (jobs—num作业号):终止指定的作业(必须有%)
后台作业虽然被送往后台运行,但其依然与终端相关;退出终端,将关闭后台作业。如果希望送往后台后,剥离与终端的关系
nohup COMMAND &>/dev/null &
screen;COMMAND
(远程执行大的任务建议开启screen或者nohup,以防止断网引起任务终止)
前后台作业切换图示
并行任务
方法1
vi all.sh
f1.sh&
f2.sh&
f3.sh&
方法2
(f1.sh&);(f2.sh&);(f3.sh&)
方法3
{ f1.sh& f2.sh& f3.sh& }
任务计划
Centos6查看任务启动:chkconfig –list 服务名
设置开机启动:chkconfig 服务名 on
Centos7查看任务启动:systemctl is-enabled 服务名
设置开机启动:systemctl enable 服务名
与服务器同步时间
Ntpdate 服务器IP
At:适用于一次性任务(ctrl+d 退出任务)
- At命令依赖于atd服务,需要启动服务才可以运行
- 任务执行完成后,任务自动删除
- 在任务计划中,所有标准输出,默认在屏幕上不输出
- 在/var/spool/at目录下也可以看到at的任务计划
-v:显示版本信息
-l:列出等待运行的计划作业,相当于atq
-d:删除指定的作业,相当于atrm
-c:查看具体的作业任务
-f /path/from/somefile :从指定的文件中读取任务
-m:当任务被完成之后,发送邮件给用户,一个空邮件
At黑白名单
/etc/at.deny:at任务黑名单,在该名单中的用户,不允许创建at任务,系统创建
/etc/at.allow:at任务白名单,在该名单中的用户,允许创建at任务,需要手动创建
如果同一个用户,同时存在于黑白名单中,那么白名单的优先级高于黑名单,白名单中的用户生效
如果存在白名单,那么在白名单之外的用户,将全部被拒绝创建at任务
如果黑白名单文件都不存在,所有用户全部被拒绝,只用root可以创建
Cron 周期性执行任务计划
- 建议将任务计划放置于/etc/cron.d/下,创建文本,有利于管理
- /etc/cron.{allow,deny}用法和权限限制都和at 一致
查看crond运行状态
Centos7 : systemctl status crond
Centos6 : service crond status
cron日志存放位置: /var/log/cron
Cron 任务计划:系统维护作业
/etc/crontab 在该文件中定义cron计划任务
格式:
# Example of job definition:
# .—————- minute (0 – 59)
# | .————- hour (0 – 23)
# | | .———- day of month (1 – 31)
# | | | .——- month (1 – 12) OR jan,feb,mar,apr …
# | | | | .—- day of week (0 – 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
30 2 * * * yan backup
每天的2:30 yan用户执行backup任务
注:
- 每月的几号和每周的星期几,是或者的关系,除此之外都是并且的关系
- 在/etc/crontab中定义任务,用使用命令是,注意有些特殊符号需要转义
用户cron任务:crontab命令
- 每个用户都有专用的cron任务文件:/var/spool/cron/username
- 用户创建任务计划,默认打开的是vi不是vim,需要自己定义,加入命令export ENDTOR=vim
Crontab命令
Crontab -u user [ options ]
-l:列出所有任务
-e:编辑任务
-r:移除所有任务
-i:同-r一同使用,以交互式模式移除指定任务(给出提示是否删除)
-u user :仅root可运行,指定用户管理cron任务
时间表示法:
- (1) 特定值
给定时间点有效取值范围内的值
- (2) *
给定时间点上有效取值范围内的所有值
表示“每…”
- (3) 离散取值
#,#,#
- (4) 连续取值
#-#
- (5) 在指定时间范围上,定义步长
/#: #即为步长
控制用户执行计划任务
/etc/cron.{allow,deny}
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/90459