zoukankan      html  css  js  c++  java
  • Linux进程管理

    一、进程的概念

      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.00
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     tty1     -                21:10   54:31   0.05s  0.05s -bash
    root     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 -u
    Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root      1473  0.0  0.0   2004   484 tty2     Ss+  21:24   0:00 /sbin/mingetty
    root      1475  0.0  0.0   2004   480 tty3     Ss+  21:24   0:00 /sbin/mingetty
    root      1477  0.0  0.0   2004   480 tty4     Ss+  21:24   0:00 /sbin/mingetty
    root      1479  0.0  0.0   2004   480 tty5     Ss+  21:24   0:00 /sbin/mingetty
    root      1481  0.0  0.0   2004   508 tty6     Ss+  21:24   0:00 /sbin/mingetty
    root      1552  0.0  0.1   8016  1652 tty1     Ss+  21:24   0:00 -bash
    root      1581  0.0  0.1   6736  1612 pts/0    Ss   21:30   0:00 -bash
    root      1607  2.0  0.1   6548  1040 pts/0    R+   21:33   0:00 ps -u
    [root@bogon ~]#

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

    [root@bogon ~]# ps -le | grep sshd
    5 S     0  1331     1  0  80   0 -  2131 -      ?        00:00:00 sshd
    4 S     0  1579  1331  0  80   0 -  2903 -      ?        00:00:00 sshd
    [root@bogon ~]#
    [root@bogon ~]# ps -ef | grep sshd
    root      1331     1  0 21:24 ?        00:00:00 /usr/sbin/sshd
    root      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 1
    find / -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 minutes
    at> /usr/bin/wall < /etc/motd
    at> <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/13
    job 2 at 2013-01-02 21:20
    [root@localhost ~]# 

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

    [root@localhost ~]# at -l
    2       2013-01-02 21:20 a root
    [root@localhost ~]# 
    [root@localhost ~]# atq
    2       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目录中确认

  • 相关阅读:
    [C]static变量详解
    [LINUX]重定向
    [PHP]一些坑
    [PHP]常量的一些特性
    [数学]三角函数(一)
    [PHP]session的一些要点
    [C]控制外部变量访问权限的extern和static关键字
    c语言基础----共用体
    c语言基础----字符串数组
    c语言基础----函数库
  • 原文地址:https://www.cnblogs.com/luxh/p/2831605.html
Copyright © 2011-2022 走看看