Linux笔记 Chapter 5#
PREV 4.x 用户管理 | NEXT 6.x 系统文件构成
5.1 程序和进程的概念#
程序是静态概念,本身作为一种软件资源长期保持
进程是程序执行的过程,它是动态的,是有一定的生命周期的,是动态产生和消亡的
一个程序可以有多个进程共用,一个进程在活动中有可顺序地执行若干个程序,它们没有任何对应关系
在Linux系统中,分为前台进程和后台进程
前台进程:当一个命令执行的过程中,不允许其它的命令执行,只能等待该命令执行完毕后(也就是该进程结束后)才能执行其它命令。比如查找一个文件:
find / -name init
在这个命令执行中是不可以进行其它命令执行的。后台进程:允许多个进程一起同步执行:只需要在最后加上“&”即表示为后台进程(注意后台进程不能是交互执行的,比如ping命令等)。
find / -name init > /home/init.sh &
5.2.1 进程管理命令#
w(who):查看用户信息
13:50:31 up 49 min, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 :0 05:02 8:49m 13.24s 13.24s /usr/bin/Xorg :0 -br -ve
root pts/1 192.168.100.162 05:04 0.00s 0.54s 0.02s w
TTY:表示以什么方式登录这台计算机(pts/0远程登录)
FROM:表示从什么位置登录的
LOGIN@:表示登录时间
IDLE:表示用户闲置的时间
JCPU:表示当前这个用户执行的所有进程所耗时的总和
PCPU:表示执行程序耗费的时间
load avegage:表示系统的负载值,分别显示过去的1、5、15分钟系统的负载程度
如果想知道系统的平均负载,三者之和除3即可
最终结果如果在0.8以下,表示系统正常
如果达到几十或上百,那么系统负载非常高,可能无法响应任何命令
WHAT:表示当前执行的什么任务
5.2.2 进程查看命令#
ps(process status)
-a
:显示所有用户的进程-l
:长格式显示ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 3230 3226 0 80 0 - 27089 do_wai pts/1 00:00:00 bash 4 R 0 3861 3230 10 80 0 - 27036 - pts/1 00:00:00 ps
STAT:当前状态s休眠D不可中断的休眠状态R运行状态Z僵死状态T停止
UID:表示当前启动进程的用户
PID:进程号
PPID:父进程号
TTY:进程启动的终端
NI:进程的优先级
TIME:进程启动以来占用的实际时间
CMD:进程的命令
其它选项
-u
:显示用户名和启动时间-x
:显示没有控制终端的进程-e
:显示所有进程,包括没有控制终端的进程-w
:宽行显示,可以使用多个w进行加宽显示
进程查看命令
ps -el
:查看所有的进程,包括没有终端的进程ps -aux
:显示当前进程占用CPU(%CPU)和内存的百分比(%MEM)ps -el --sort pid
:进行对进程PID排序,也可使用其它字段排序ps -aux | grep rpc
:对进程结果进行过滤
5.2.3 杀死进程#
该进程占用了过多的CPU时间
该进程锁住了一个终端,使用其它前台进程无法运行
运行时间过长,没有预期的效果
成为了系统负载的主要负担
无法正常退出…
命令:
kill [进程号]
:关闭进程,kill 1234
kill -9 [进程号]
:强制关闭进程,kill -9 1234
kill -1 [进程号]
:重启进程,kill -1 1234
xkill
:关闭图形程序killall
:结束所有进程pgrep [服务名称]
:查找服务进程号pkill [进程名称]
:关闭进程,pkill redis
5.2.4 进程常用命令#
nohup program &
:使进程在用户退出登录后仍旧继续执行ctrl+c:终止一个程序的运行
ctrl+z:挂起一个程序的运行
jobs
:放在后台执行的进程可以使用进行查看把任务恢复到前台继续执行
fg [任务编号]
把任务恢复到后台继续执行
bg [任务编号]
top
:进程状态显示和进程控制,每5秒钟自动刷新次(动态显示)d:指定刷新的时间间隔
c:显示整个命令行的详细信息
u:可以查看指定用户的进程
k:终止正在执行的进程
5.3.1 任务计划#
任务计划的命令
at:安排作业在某一时刻执行一次
cron:安排周期性运行的作业
5.3.2 一次性任务计划#
at [-f 文件名] 时间
:安排一个或多个命令在指定的时间运行一次(ctrl+d保存任务退出)绝对计时方法:
HH:MM YYYY-MM-DD
相对计时方法:
now + n minutes
,now + n hours
,now + n days
at now+2 minutes at> /usr/bin/wall < /home/at-test.sh
at -d
oratrm
:删除队列中的任务at -l
oratq
:查看队列中的任务如果
/etc/at.allow
存在,则在里面的用户可以使用at执行计划如果
/etc/at.deny
存在,则在里面的用户都不可以使用at执行计划如果文件都不存在,则只有root可以使用at执行计划
find /etc/ -name at.allow find /etc/ -name at.deny
5.3.3 周期性任务计划#
crontab {-l|-r|-e}
:用于生成cron进程所需要的crontab文件
-l
:显示当前的crontab-r
:删除当前的crontab-e
:使用编辑器编辑当前的crontab
计划命令的时间格式:
分钟 | 小时 | 天 | 月 | 星期 | 命令/脚本 |
---|---|---|---|---|---|
0 | 4 | * | * | * | |
0 | 18 | * | * | 2,5 | |
0 | 18 | * | 1-3 | 2,5 |
注意:
时间选项都不能为空,不知道的值统一用*,表示任何时间
每个时间字段都可以指定多个值,不连续的值用“,”分隔,连续的值用“-”分隔
命令应该使用绝对路径,用户必须有运行对应命令的权限
如果crontab程序没有启动,则需要手工启动:
ps -el | grep crond
/etc/rc.d/init.d/crond start
crontab文件建好后,可以到
/var/spool/cron
目录确认crontab -e */1 * * 1-12 * /usr/bin/wall < /home/at-test.sh