Linux进程管理

来源:互联网 发布:warframe淘宝买白金 编辑:程序博客网 时间:2024/06/05 19:59

一、进程的概念

1、进程和程序的区别

1)程序是静态的概念,本身作为一种软件资源长期保存,而进程是程序的执行过程,它是动态概念,有一定的生命周期,是动态产生和消亡的

2)程序和进程无一一对应关系,一个程序可以由多个进程共用;另一方面,一个进程活动中可以顺序地执行若干程序

2、父进程与子进程

1)子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程

2)在Linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境

3)父进程终止,子进程自然终止

3、前台进程和后台进程

1)在Shell提示处输入命令后,创建一个子进程,运行命令,Shell等待命令退出,然后返回到对用户给出提示符。这条命令与Shell异步运行,即在前台运行,用户在它完成之前不能执行其他命令

[root@bogon ~]# find /etc -name init/etc/kdump-adv-conf/kdump_initscripts/init/etc/webmin/init/etc/init/etc/sysconfig/init[root@bogon ~]#

2)在Shell提示处输入命令后,若后随一个&,Shell创建的子进程运行此命令,但不等待命令退出,而直接返回到对用户给出提示。这条命令与Shell同步运行,即在后台运行,后台进程必须是非交互式的。

[root@bogon ~]# find /etc -name init > /tmp/init.find &[1] 1656[root@bogon ~]# 

1656为处理该命令的子进程ID

4、进程状态

1)就绪:进程已经分配到资源,但因为其他进程正占用CPU,所以暂时不能运行而等待分配CPU的状态

2)等待:因等待某种事件而暂时不能运行的状态

3)运行:进程分配到CPU,正在处理器上运行

5、查看所有登录用户信息 w

[root@bogon ~]# w 22:05:30 up 56 min,  2 users,  load average: 0.00, 0.00, 0.00USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHATroot     tty1     -                21:10   54:31   0.05s  0.05s -bashroot     pts/0    192.168.0.101    21:11    0.00s  0.09s  0.01s w[root@bogon ~]# 

1)JCPU:以终端号区分,该终端所有相关的进程执行时,所消耗的CPU时间会显示在这里

2)PCPU:CPU执行程序耗费的时间

3)WHAT:用户正在执行的操作

4)load average:分别显示系统在过去的1、5、15分钟内的平均负载程度

5)FROM:显示用户从何处登录

6)IDEL:用户闲置时间

7)查看个别用户登录信息:w 用户名

6、查看系统中的进程 ps

常用选项:

a:显示所有用户的进程

u:显示用户名和启动时间

x:显示没有控制终端的进程

e:显示所有进程,包括没有控制终端的进程

l:长格式显示

w:宽行显示

1)查看隶属于自己的进程

[root@bogon ~]# ps  PID TTY          TIME CMD 1581 pts/0    00:00:00 bash 1606 pts/0    00:00:00 ps[root@bogon ~]#

2)查看隶属于自己进程的详细信息ps -u or -l

[root@bogon ~]# ps -uWarning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQUSER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMANDroot      1473  0.0  0.0   2004   484 tty2     Ss+  21:24   0:00 /sbin/mingettyroot      1475  0.0  0.0   2004   480 tty3     Ss+  21:24   0:00 /sbin/mingettyroot      1477  0.0  0.0   2004   480 tty4     Ss+  21:24   0:00 /sbin/mingettyroot      1479  0.0  0.0   2004   480 tty5     Ss+  21:24   0:00 /sbin/mingettyroot      1481  0.0  0.0   2004   508 tty6     Ss+  21:24   0:00 /sbin/mingettyroot      1552  0.0  0.1   8016  1652 tty1     Ss+  21:24   0:00 -bashroot      1581  0.0  0.1   6736  1612 pts/0    Ss   21:30   0:00 -bashroot      1607  2.0  0.1   6548  1040 pts/0    R+   21:33   0:00 ps -u[root@bogon ~]#

3)查看系统中指定进程信息

[root@bogon ~]# ps -le | grep sshd5 S     0  1331     1  0  80   0 -  2131 -      ?        00:00:00 sshd4 S     0  1579  1331  0  80   0 -  2903 -      ?        00:00:00 sshd[root@bogon ~]#
[root@bogon ~]# ps -ef | grep sshdroot      1331     1  0 21:24 ?        00:00:00 /usr/sbin/sshdroot      1579  1331  0 21:30 ?        00:00:00 sshd: root@pts/0 root      1624  1581  0 21:46 pts/0    00:00:00 grep sshd[root@bogon ~]#

7、kill—杀死进程

1)关闭进程:kill 进程号

2)kill -9 进程号(强行关闭)

3)kill -l 进程号(重启进程)

4)关闭图形程序 xkill

5)结束所有进程 killall 进程名称

6)查找服务进程号 pgrep 服务名称

7)关闭进程:pkill 进程名称

8、指定程序的运行优先级

1)nice 指定程序的运行优先级

格式:nice -n command

例如:nice -5 myprogram

2)renice 改变一个正在运行的进程的优先级

格式:renice n pid

例如:renice -5 777

3)优先级取值范围(-20,19)

9、nohup

使进程在用户退出登录后仍旧继续执行,nohup命令将执行后的数据信息和错误信息默认存储到文件nohup.out中

格式: nohup program &

[root@bogon ~]# nohup find /etc -name init* > /root/find.init.20121225 &

10、进程的挂起和恢复

1)进程的中止(挂起)和终止

挂起:Ctrl+Z

终止:Ctrl+C

2)进程的恢复

恢复到前台继续运行 fg

恢复到后台继续运行 bg

3)查看被挂起的进程 jobs

[root@bogon ~]# jobs[1]+  Stopped                 find / -name inittab[root@bogon ~]# 

调到前台执行:fg 编号

[root@bogon ~]# fg 1find / -name inittab/etc/webmin/inittab/etc/inittab/backup/etc/inittab

调到后台执行 bg 编号

[root@bogon ~]# bg 1

11、top

进程状态显示和进程控制,每5秒钟自动刷新一次(动态显示)

常用选项:(在top执行后使用)

d:指定刷新的时间间隔

c:显示真个命令行而不仅仅显示命令名

u:查看指定用户的进程

k:终止执行中的进程

h or ?:获得帮助

r:重新设置进程优先级

W:将当前设置写入~/.toprc文件中

 

二、计划任务

1、计划任务的命令

1)at 安排作业在某一时刻执行一次

安排一个或多个命令在指定时间运行一次

at的命令格式及参数:

at [-f 文件名] 时间

at命令指定时间的方式:

绝对计时方法:

midnight noon teatime

hh:mm [today]

hh:mm: tomorrow

hh:mm 星期

hh:mm MM/DD/YY

相对计时方法:

now + n minutes

now + n hours

now + n days

指定在今天下午18:00执行某命令,假设现在时间是下午15:00,2013年1月2日

命令格式如下:

at 6:00pm

at 18:00

at 18:00 today

at now + 3 hours

at now + 180 minutes

at 18:00 2.1.13

at 18:00 1/2/13

交互方式执行:比如在5分钟后把/etc/motd 中的内容广播出去

[root@localhost ~]# at now +5 minutesat> /usr/bin/wall < /etc/motdat> <EOT>job 1 at 2013-01-01 21:01[root@localhost ~]#

输入完命令后,按Ctrl+d保存,时间一到,就会把内容广播出去了

使用命令文件方式

把要执行的命令写在脚本文件at.script中,然后使用下面的命令

[root@localhost ~]# at -f at.script 21:20 1/2/13job 2 at 2013-01-02 21:20[root@localhost ~]# 

at -l or atq 查看队列中的任务

[root@localhost ~]# at -l2       2013-01-02 21:20 a root[root@localhost ~]# 

 

[root@localhost ~]# atq2       2013-01-02 21:20 a root[root@localhost ~]# 

at -d or atrm 删除队列中的任务

[root@localhost ~]# at -d 2[root@localhost ~]# 

生成的计划任务存放在:/var/spool/at

at 配置文件

作用:限制哪些用户可以使用at命令

/etc/at.allow

/etc/at.deny

2)batch 安排作业在系统负载不重时执行一次

安排一个或者多个命令在系统负载较轻时执行一次(一般情况下负载较轻是指平均负载降到0.8以下)

使用方法同at

3)cron 安排周期性运行的作业

用于生成cron进程所需要的crontab文件

crontab的命令格式

crontab {-l|-r|-e}

-l 显示当前的crontab

-r 删除当前的crontab

-e 使用编辑器编辑当前的crontab文件

crontab文件格式:

分钟 小时 天 月 星期 命令/脚本

minute hour day-of-month month-of-year day-of-week commands

minute 一小时钟的哪一分钟[0~59]

hour 一天中的哪个小时[0~23]

day-of-month 一月中的哪一天[1~31]

month-of-year 一年中的哪一月[1~12]

day-of-week 一周中的哪一天[0~6]

commands 执行的命令

分钟 小时 天 月 星期 命令/脚本

每天凌晨4点执行: 0 4    *   * *

每周二和周五下午6点执行: 0 18 *        *       2,5(逗号分隔不连续的值)

1月到3月每周二和周五下午6点执行:   0    18       *        1-3 2,5 (连续的值用-连接)

*/2(每隔2分钟)

crontab文件建好以后可以到/var/spool/cron目录中确认

 

 


<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击