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的名称的来意。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容