打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
14、进程和计划任务

计划任务

进程和计划任务

如何产生一个进程:

1)执行程序或者是命令

2)计划任务

如何终止一个进程:

1)程序或者是命令执行完毕,自动终止

2)强制终止进程

进程管理

一.程序和进程的关系

程序:可执行的代码和数据

进程:运行中的程序代码

父子进程:进程创建的进程为子进程

1.静态查看进程的统计信息;

(1)ps :

a:显示终端下所有进程信息,包括其他用户的进程

u:显示进程的拥有者

x:显示当前用户所在终端下的进程信息,和a一起用,显示所有进程

-e:显示系统内所有进程信息

-l:长格式显示

-f:完整的格式显示

# /etc/init.d/httpd start

# ps -ef | grep httpd

UID PID PPID C STIME TTY TIME CMD

root 5088 1 2 14:35 ? 00:00:00 /usr/sbin/httpd

apache 5091 5088 0 14:35 ? 00:00:00 /usr/sbin/httpd

apache 5092 5088 0 14:35 ? 00:00:00 /usr/sbin/httpd

进程的拥有者 进程号 父进程号 cpu使用的资源百分比 开始时间 运行进程的终端名字 进程运行的时间 命令

pts:伪终端、虚拟终端

tty1--tty6: 字符终端

ps -aux 显示结果

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.1 19348 1332 ? Ss Aug02 0:02 /sbin/init

root 2 0.0 0.0 0 0 ? S Aug02 0:00 [kthreadd]

root 3 0.0 0.0 0 0 ? S Aug02 0:02 [migration/0]

拥有者 进程号 占用cpu百分比 占用内存百分比 占用的虚拟内存的大小 驻留内存大小 终端 进程状态 开始时间 运行时间 命令

STAT:进程状态

R:该进程正在运行

S:休眠进程

Z:僵尸进程,实际上该进程已经终止,但是它的父进程却无法正常终止它,造成僵尸进程的状态

T:该进程正在跟踪或者已经停止

(2)pstree:树形结构查看进程信息

-a:显示完整信息

-u:列出名字

-p:列出PID号

# pstree

init─┬─abrtd

├─acpidclear

├─atd

├─automount───4*[{automount}]

├─bonobo-activati───{bonobo-activat}

init进程是所有进程的父进程

二、动态查看进程

top:实时查看系统运行状态 h 帮助 M 按照内存使用排序 P 按照CPU排序 q 退出

top - 15:07:52 up 2 days, 7:10, 9 users, load average: 0.00, 0.01, 0.00

系统时间 运行时长 当前9个用户登录系统 系统在1分钟、5分钟、15分钟的平均负载情况

Tasks: 192 total, 1 running, 191 sleeping, 0 stopped, 0 zombie

总共192个进程 1个正在运行 191个休眠 0个停止的 0个僵尸进程

Cpu(s): 1.5%us, 0.2%sy, 0.0%ni, 98.1%id, 0.2%wa, 0.0%hi, 0.0%si, 0.0%st

按数字1,展开CPU

Mem: 1016516k total, 914012k used, 102504k free, 100136k buffers

Swap: 2097144k total, 7220k used, 2089924k free, 374972k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

23539 root 20 0 149m 25m 7040 S 4.3 2.5 4:40.87 Xorg

24019 root 20 0 308m 16m 9556 S 2.7 1.7 2:54.35 gnome-terminal

5521 root 20 0 336m 15m 11m S 0.7 1.6 0:01.83 gnome-panel

1598 root 20 0 165m 2588 2132 S 0.3 0.3 3:43.59 vmtoolsd

5636 root 20 0 15032 1284 932 R 0.3 0.1 0:00.11 top

23679 root 20 0 403m 11m 8376 S 0.3 1.1 0:12.13 metacity

23706 root 20 0 446m 21m 11m S 0.3 2.2 3:20.17 vmtoolsd

------------------------

仅动态查看某个进程的状态

# top -p 23539 //其中23539是进程号

------------------------

2.top动态查看进程:

-P:顺序查看

3.pgrep:查看pid

-l:显示进程名

-U:指定用户

-t:指定终端

1、前台运行:

直接在终端运行命令

# firefox 172.16.254.251

会发现该程序一直占用终端,其他命令不能够再在这个终端运行

2、后台运行

1)命令执行的时候,直接将其放置于后台运行

# firefox 172.16.254.251 &

[1] 6222

后台运行不会占用执行命令的终端,用户仍然可以使用这个终端做操作

2)对于一个已经运行的命令,如何将其放置于后台

# firefox 172.16.254.251

^Z[1] Done firefox 172.16.254.251 //按下ctrl+z

[2]+ Stopped firefox 172.16.254.251

ctrl+z将前台进程放置于后台,但是该进程在后台是停止的状态

# jobs //查看后台进程运行状态

[2]+ Stopped firefox 172.16.254.251

# fg 2 //激活后台进程

[2]+ firefox 172.16.254.251 &

# jobs

[2]+ Running firefox 172.16.254.251 &

bg 任务编号 :指定任务在后台运行

fg 任务编号 : 将后台运行的命令变成前台运行

# fg 2

firefox 172.16.254.251

注意:不管你是前台运行,还是后台运行,只要终端一关闭,进程就停止了。

那么如何让一个命令或者程序脱离终端?

使用nohup命令。

# nohup firefox 172.16.254.251 &

[1] 6537

# nohup: ignoring input and appending output to `nohup.out' //按回车

IPC:Interconnect Process Communication 进程间通信

进程间通信的三种方式:

1、信号 signal

2、消息 message

3、共享内存 shared memory

信号是类unix系统中的一种通信机制,它用来中断运行的进程执行某些操作

常用的信号:

查看信号的列表

# kill -l

1) SIGHUP:重置进程的配置,即不停止服务的情况下,重新读取配置文件

kill -1 PID 或者kill -HUP PID

2) SIGINT:中断(interrupt),相当于执行了ctrl+c

一个标签执行:

# firefox 172.16.254.251

另一个标签执行

# ps -ef | grep firefox

root 6855 6630 4 16:16 pts/0 00:00:01 /usr/lib64/firefox/firefox 172.16.254.251

root 6911 6898 0 16:17 pts/1 00:00:00 grep firefox

# kill -2 6855 //发现第一个标签的命令被终止了

9) SIGKILL:强制杀死进程、无条件杀死

# firefox 172.16.254.251

Killed

# ps -ef | grep firefox

root 6982 6630 7 16:22 pts/0 00:00:01 /usr/lib64/firefox/firefox 172.16.254.251

root 7029 6898 0 16:23 pts/1 00:00:00 grep firefox

# kill -9 6982

15) SIGTERM:终止进程,进程不一定会死

20) SIGTSTP:相当于按下ctrl+z的时候发送的信号

# ps -ef | grep firefox

root 7104 6630 13 16:29 pts/0 00:00:01 /usr/lib64/firefox/firefox 172.16.254.251

root 7146 6898 0 16:29 pts/1 00:00:00 grep firefox

# kill -20 7104

# firefox 172.16.254.251

[1]+ Stopped firefox 172.16.254.251

pkill:按照进程的属性结束进程

按照进程名字杀死进程

# pkill gnome-panel

按照用户名杀死进程

# su - test

$ vim /etc/passwd

# pkill -U test

killall:

killall 命令名字 //杀死全部的同名进程

xkill:杀死图形化资源

当执行了xkill之后,鼠标会变成“x”形,点到任何图形资源,就会终止该资源的运行

谦让值:nice

作用:指定或者调整用户进程的nice值

nice值越高,该进程抢占资源的能力越弱

nice值越低,该进程抢占资源的能力越强

范围:-20~19

1、相关命令

nice:运行时直接设置nice值

格式:nice -n 数字 command

renice:对于已经运行的,调整nice值

格式:renice 数字 PID

2、例子

# cat loop.sh

#!/bin/bash

while true

do

echo hello > /dev/null

done

# cp loop.sh loop1.sh

# chmod +x loop*

1)在程序执行时,直接指定nice值

# nice -n 7 ./loop.sh &

[1] 8890

# nice -n 14 ./loop1.sh &

[2] 8896

# top

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

8937 root 27 7 103m 1192 1028 R 94.4 0.1 0:43.74 loop2.sh

8890 root 27 7 103m 1196 1028 R 81.4 0.1 2:58.99 loop.sh

8896 root 34 14 103m 1196 1028 R 16.9 0.1 2:12.98 loop1.sh

从上实验看出,nice越大,获得的资源越少,反之则反。

2)使用renice调整运行中的进程的nice值

# renice 19 8890

8890: old priority 7, new priority 19

# top

# ps -ef | grep loop

root 8890 7656 80 09:37 pts/0 00:06:26 /bin/bash ./loop.sh

root 8896 7656 49 09:38 pts/0 00:03:49 /bin/bash ./loop1.sh

root 8937 7656 91 09:40 pts/0 00:05:09 /bin/bash ./loop2.sh

root 9044 7656 0 09:45 pts/0 00:00:00 grep loop

# killall loop.sh

# killall loop1.sh

[1] Terminated nice -n 7 ./loop.sh

# killall loop2.sh

[2]- Terminated nice -n 14 ./loop1.sh

[3]+ Terminated nice -n 7 ./loop2.sh

进程的调度:

ctrl+Z:转入后台并且停止

jobs:查看处于后台的任务

fg:将后台的进程恢复前台运行,可指定任务号

ctrl+c:中断正在执行的命令

kill:终止PID -9 强制终止

pkill:根据 特定条件终止进程

-t:停止终端进程

-U:按用户名终止进程

服务控制:

1、开机是否启动

chkconfig --list httpd 查看httpd服务开启情况

chkconfig --level 3 httpd on(off)

2、立刻调好服务:

可是使用启动脚本绝对路径 /etc/rc.d/init.d/httpd start

使用service 命令 service iptables stop

三.计划任务:

1.at: 一次性计划任务

at [HH:MM] [yy-mm-dd]

>command

>(ctrl+d)

atq:查看任务

atrm:删除任务 后边指定要删除的任务号

2.crontab 周期性计划任务

crontab命令----crond服务

全局设定的配置文件:/etc/crontab

*任意 ,多个不连续 - 连续 /间隔频率

系统默认的设置:/etc/cron.*

用户自定义的配置文件:/var/spool/cron/user_name

使用:

编辑任务:

crontab -e [-u user_name]

查看任务:

crontab -l [-u user_name]

删除任务:

crontab -r [-u user_name]

补充:

PRI :进程优先权,代表这个进程可被执行的优先级,其值越小,优先级就越高,越早被执行

NI :进程Nice值,代表这个进程的优先值

%nice :改变过优先级的进程的占用CPU的百分比 (呵呵,这句好难理解是吧,不急慢慢来^_^)

PRI是比较好理解的,即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,此值越小进程的优先级别越高。那NI呢?就是我们所要说的nice值了,其表示进程可被执行的优先级的修正数值。如前面所说,PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice。由此看出,PR是根据NICE排序的,规则是NICE越小PR越前(小,优先权更大),即其优先级会变高,则其越快被执行。如果NICE相同则进程uid是root的优先权更大。

在LINUX系统中,Nice值的范围从-20到+19(不同系统的值范围是不一样的),正值表示低优先级,负值表示高优先级,值为零则表示不会调整该进程的优先级。具有最高优先级的程序,其nice值最低,所以在LINUX系统中,值-20使得一项任务变得非常重要;与之相反,如果任务的nice为+19,则表示它是一个高尚的、无私的任务,允许所有其他任务比自己享有宝贵的CPU时间的更大使用份额,这也就是nice的名称的来意。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
对中级 Linux 用户非常有用的 20 个命令
Pgrep
关闭程序进程sh脚本
Linux中Kill进程的N种方法
Linux kill, killall, kill
ps | grep app 命令不显示grep app本身进程的几种方式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服