zoukankan      html  css  js  c++  java
  • Linux基础知识--进程管理与计划任务

    Linux启动流程:

      

      开机自检BIOS是检测硬件以及各个设备是否准备好

      MBR引导是看系统放在哪个位置,进行加载;引导分区,里面有多个系统,看需要启动哪个系统

      GRUP菜单,进行一些选项,比如说看启动哪个系统

      INIT进程:

        由Linux内核加载运行/sbin/init程序

        是系统的第一个进程,是所有进程的祖宗,PID(进程标记)号永远为1

        配置文件/etc/inittab

      Linux系统运行级别(runlevels)

        有7个级别,

        0关机

        1单用户模式

        2字符界面的多用户界面(不支持网络)

        3字符界面的完整多用户界面

        4未分配使用

        5图形界面的多用户界面

        6重新启动

      

        runlevel命令可以查看系统的运行级别,结果为两个数字,前者为切换前的系统级别,后者为当前级别

      查看系统服务的启动状态:

      格式:chkconfig --list

         chkconfig --list 服务名称  可以查看每个级别下的服务启动状态

      服务脚本位置:/etc/init.d   /etc/rc.d/init.d

      

      设置系统服务的启动状态

      格式:chkconfig --level 级别列表 服务名 on|off

          可以设置在哪些级别中服务的启动状态

    进程管理:

      程序和进程:程序是保存在硬盘、光盘等介质中的可执行代码和数据,是静态保存的代码;进程是在CPU及内存中运行的代码,是动态执行的,每个进程都可创建一个或多个子进程(父、子进程)

      ps统计静态进程的信息:

      ps aux

      ps -elf

      a显示当前终端下的所有进程信息

      u使用以用户为主的格式输出进程信息

      x显示当前用户在所有终端下的进程信息

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

      -l使用长格式显示进程信息

      -f使用完整格式显示进程信息

      

      top查看动态的进程排名信息,q退出查看

      

      pgrep根据特定的条件查询进程PID信息

      -l列出进程名称

      -U根据进程所属的用户名进行查找

      -t根据进程所在终端进行查找

      pgrep [选项]... 进程名

    [root@localhost ~]# pgrep "init"
    1
    [root@localhost ~]# pgrep -l "init"
    1 init
    [root@localhost ~]# pgrep -l "log"
    6771 syslogd
    6774 klogd
    [root@localhost ~]# pgrep -l -U root "log"
    6771 syslogd
    6774 klogd

      init的进程PID为1,进程名是init,包含log进程的进程PID有6771、6774

      

      pstree以树形结构显示进程之间的信息

      pstree -aup

        -u列出进程对应的用户名

        -a列出进程对应的完整命令

        -p列出进程的ID号

      

      进程的不同启动方式

        手动启动

          前台启动:用户输入命令,直接执行程序

          后台启动:在命令行尾加上“&”符号

        调度启动:

          使用at命令,设置在某个时间执行一次任务

          使用crontab命令,设置固定周期重复执行预先计划好的任务

      

      进程前后台调度

        Ctrl+Z将当前进程挂起,即调入后台

        jobs命令,查看处于后台的任务列表

        fg命令,将处于后台的进程恢复至前台,需指定任务序号

        Ctrl+C终止正在执行的命令 

        kill用于终止指定PID的进程

        killall用于终止指定名称的所有进程,-9选项用于强制终止

        pkill根据特定条件终止相应进程

          -U根据进程所属的用户名终止相应进程

          -t根据进程所在终端终止相应进程

    [root@localhost ~]# ping 192.168.xx.1
    PING 192.168.xx.1 (192.168.xx.1) 56(84) bytes of data.
    
    [1]+  Stopped                 ping 192.168.xx.1
    [root@localhost ~]# jobs
    [1]+  Stopped                 ping 192.168.xx.1
    [root@localhost ~]# fg 1
    ping 192.168.xx.1
    
    --- 192.168.xx.1 ping statistics ---
    7 packets transmitted, 0 received, 100% packet loss, time 15995ms
    
    [root@localhost ~]# jobs

        Linux中ping物理机的IP,进行会一直执行,Ctrl+Z将当前进程调入到后台,jobs查看后台进程,任务序号为1,fg 1将后台进程调入到前台,Ctrl+C终止当前进程

        

    计划任务管理

      一次性任务,使用at命令,指定日期、时间点执行一些预定的命令操作

        服务脚本名称:/etc/init.d/atd,在执行这个命令之前首先要保证atd服务启动

        格式:at [HH:MM] [yyyy-mm-dd]

        启动服务:service atd start,或者/etc/init.d/atd start

        查看服务启动状态:service atd status

        Ctrl+D提交任务

        atq查询当前设置的at任务列表

        atrm删除指定任务编号的at任务

          atrm 编号

    [root@localhost ~]# cd /home
    [root@localhost home]# ls
    audispd.conf  file1.tar.gz  file3         test   test2
    file1.tar     file2.tar.gz  file3.tar.gz  test1  test.tar.bz2
    [root@localhost home]# date
    Sat Feb 16 20:00:36 CST 2019
    [root@localhost home]# at 20:02
    at> touch file04
    at> <EOT>
    job 1 at 2019-02-16 20:02
    [root@localhost home]# date
    Sat Feb 16 20:01:19 CST 2019
    [root@localhost home]# date
    Sat Feb 16 20:02:34 CST 2019
    [root@localhost home]# ls
    audispd.conf  file1.tar     file2.tar.gz  file3.tar.gz  test1  test.tar.bz2
    file04        file1.tar.gz  file3         test          test2

        在home目录下,开始没有file04,现在想要在当天的20:02时刻创建file04,。因此首先获取当前时间,制定当前时间之后的某个时间点创建file04的任务计划,按Ctrl+D提交计划,时间到了,发现任务执行完毕,file04创建。

      周期性任务crontab,按照预先设置的时间周期重复执行任务

        服务脚本名称:/etc/init.d/crond,设置计划之前保证服务启动

        全局配置文件,位于/etc/crontab

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

          用户定义设置,位于文件/var/spool/cron/用户名

        crontab -e [-u 用户名]  编辑计划任务,不指定用户默认当前用户

        crontab -l [-u 用户名]  查看计划任务,不指定用户默认当前用户

        crontab -r [-u 用户名]  删除计划任务,不指定用户默认当前用户,只能删除当前用户的周期性任务计划

        只有root用户才能为其他用户制定周期性任务计划,其他用户只能管理自己的周期性任务计划

        

        任务配置格式:

          分钟(0-59)  小时(0-23)  日期    月份    星期 (0-7)   命令(要执行的命令或程序脚本)

          时间数值的特殊表示方法:

            *表示该范围内的任意时间

            ,表示间隔多个不连续的时间点

            -表示一个连续的时间范围

            /指定间隔的时间频率

          示例:

            0 17 * *  1-5       每天周一到周五的17点整

            30 8 * * 1,3,5     周一周三周五的8:30执行

            0 9-22/2 * * 7  星期天的9点到22点每隔两小时执行一次

            

         案例:

          每天早上7:50自动开启sshd服务,22点50时关闭

          每隔5天清空一次FTP服务器公共目录/var/ftp/pub

          每周六的7:30时,重新启动httpd服务

           每周一、三、五的17:30时,打包并压缩/etc/httpd目录  

    [root@localhost home]# cd /var/spool/cron
    [root@localhost cron]# ls
    [root@localhost cron]# crontab -e -u root

        进入/var/spool/cron目录,开始编辑计划任务

    50 7 * * * /sbin/service sshd start
    50 22 * * * /sbin/service sshd stop
    0 * */5 * * /bin/rm -rf /var/ftp/pub/*
    30 7 * * 6 /sbin/service httpd restart
    30 17 * * 1,3,5 /bin/tar jcvf httpdconf.tar.bz2 /etc/httpd
    
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    -- INSERT --

        相应的服务或者指令要写出绝对路径,查看当前用户的任务计划

    [root@localhost cron]# crontab -l
    50 7 * * * /sbin/service sshd start
    50 22 * * * /sbin/service sshd stop
    0 * */5 * * /bin/rm -rf /var/ftp/pub/*
    30 7 * * 6 /sbin/service httpd restart
    30 17 * * 1,3,5 /bin/tar jcvf httpdconf.tar.bz2 /etc/httpd

      删除之后,发现没有任何任务计划

    [root@localhost cron]# crontab -r
    [root@localhost cron]# crontab -l
    no crontab for root

      总结:

        INIT进程,系统的第一个进程,PID为1,存放在/etc/inittab

        runlevels,Linux系统的运行级别,0-7,7个级别,4未分配;runlevel命令查看最近一次修改之前的运行级别和当前运行级别

        chkconfig --list

        chkconfig --level 级别列表 服务名 on|off

        ps统计静态进程信息,ps aux

        top查看动态进程排名信息

        pgrep根据条件查询进程信息

        pstree以树形结构显示进程之间的关系,pstree -aup

        Ctrl+Z、jobs、fg 任务序列号、Ctrl+C、kill、killall、killall -9

        at一次性任务,/etc/init.d/atd 、atq、atrm

        crontab周期性任务计划,/etc/init.d/crond、/var/spool/cron/用户名、crontab -e、crontab -l、crontab -r

        

       

      

      

  • 相关阅读:
    SpringIoC和DI注解开发
    SpringIoC&DI
    Linux基础(二)
    Linux基础(一)
    代码自动生成
    luaScript目标点限流工具类示例
    SpringMVC请求连接匹配器-工具类
    解决commons.mail.HtmlEmail附件中文名乱码问题
    HtmlToPdfUtils [请参照码云上 https://gitee.com/bbevis/html-to-pdf 最新版]
    ThreadLocalUtils
  • 原文地址:https://www.cnblogs.com/bigbigtong/p/10381105.html
Copyright © 2011-2022 走看看