Linux基础知识--进程管理与计划任务

Posted bigbigtong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

    

   

  

  

以上是关于Linux基础知识--进程管理与计划任务的主要内容,如果未能解决你的问题,请参考以下文章

Linux进程与计划任务

linux进程与计划任务管理

Centos进程作业管理与计划任务

linux进程管理及计划任务

Linux——进程和计划任务管理

linux基础学习第十八天之进程管理和任务计划