Linux进程管理、计划任务笔记

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_41685388/article/details/102531518

一、Linux进程管理

1.1、进程概念

  • 进程是正在运行的程序实体,并且包括这个运行的程序中占据的所有系统资源,比如说CPU(寄存器),IO,内存,网络资源等。
  • 并发程序和顺序程序有本质上的差别,为了能更好地描述程序的并发执行,实现操作系统的并发性和共享性,引入“进程”的概念。
  • 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。
  • 处理器是计算机系统中最重要的资源。在现代计算机系统中,为了提高系统的资源利用率,CPU将为某一程序独占。通常采用多道程序设计技术,即允许多个程序同时进入计算机系统的内存并运行!
  • 进程是程序的执行过程,相对于程序,进程是动态的,在linux系统中,它与用户权限相关,程序与进程并没有一一对应,一个程序可能对应多个进程。
  • 子进程与父进程:一个进程产生另外一个进程,产生的进程称为子进程,生成另外一个进程的进程称为父进程。

1.2、进程状态

  • 进程状态总体来看主要包括三种,分别是就绪状态、运行状态、等待状态,就绪状态指的是进程除了CPU资源,其他运行资源都已获得,当就就绪状态的进程得到CPU资源时,则进入进程进入运行状态,运行状态的进程在时间片用完后会重新转换成就绪状态,如果在运行时进程遇到IO等阻塞操作,则进程会进入等待状态,等待状态的进程当阻塞操作完成后,进程将进入就绪状态。

1.3、进程管理

ps 命令用于报告当前系统的进程状态,常用选项包括:

1、a显示所有用户的进程

2、u显示用户名和启动时间

3、x显示所有进程,包括没有控制终端的进程

4、e显示所有进程,包括没有控制终端的进程,较x选项,信息更为简略

5、l显示进程详细信息,按长格式显示

常用命令:

ps -au 显示所有用户进程,并给出用户名和启动时间等详细信息

ps -aux *显示所有用户进程,包括没有控制终端的进程,并给出用户和和启动埋单等详细信息

ps -aux | grep 进程名   *从所有用户进程中选择指定进程,包括没有控制终端的进程,并给出用户和和启动埋单等详细信息

ps -el 按长格式显示进程详细信息

  • ##查看解释说明
    USER: 进程所有者
    
    PID: 进程号
    
    PPID: 进程的父进程ID
    
    %CPU:  CPU占用率
    
    C: 进程的CPU占用率
    
    %MEM: 内存占用率
    
    VSZ: 表示如果一个程序完全驻留在内存的话需要占用多少内存空间;
    
    RSS: 指明了当前实际占用了多少内存;
    
    TTY: 终端的次要装置号码 (minor device number of tty)
    
    F:进程的标志
    
    S:进程的状态
    
    STAT: 该进程程的状态,有以下值
    
          D: 不可中断的静止
          R: 正在执行中
          S: 静止状态
          T: 暂停执行
          Z: 不存在但暂时无法消除
          W: 没有足够的记忆体分页可分配
          <: 高优先序的进程
          N: 低优先序的进程
          L: 有记忆体分页分配并锁在记忆体内
          PRI:进程的优先权
    
    NI:进程的Nice值
    
    ADDR:进程的地址空间
    
    SZ:进程占用内存的大小
    
    WCHAN:进程当前是否在运行
    
    TTY:进程所属终端
    
    START: 进程开始时间
    
    TIME: 执行的运行时间
    
    COMMAND:所执行的指令
    
    CMD:进程的命令

pstree  查看进程树(pstree -p : 以树状形式显示进程,并且显示进程号)

top  *查看进程状态(动态更新)

jps *查看jvm进程的进程(java中的命令)

kill pid  直接杀死进程,但不能保证一定能杀死

kill  -9 pid(进程号)  *在进程无法正常关闭时才使用,强制杀死进程

pidof 程序名称  查看某程序的pid

ctrl + c *终止进程

ctrl + z  *挂起进程

fg 程序  转换到前台运行

bg 程序   转换到后台运行

jobs  *查看任务

二、计划任

2.1、概念

计划任务在Linux的体现主要分为at和crontab,其中:

at:通过at命令安排任务在某一时刻执行一次

使用方法参考说明链接:https://man.linuxde.net/at

crontab:通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。

使用方法参考说明链接:https://wangchujiang.com/linux-command/c/crontab.html

2.2、命令服务管理crontab

在CentOS系统上,crontab服务的名称叫做crond

1)、安装

rpm -aq | grep cron    查看是否安装

rpm -e --nodeps 程序全称   如果需要卸载以前有安装的

yum list | grep cron    查看yum安装列表中是否有该程序

yum -y install crontabs.noarch    安装该程序

2)、服务操作说明  

注:在CentOS系统上,crontab服务的名称叫做crond

service crond start                 ## 启动服务

service crond stop                  ## 关闭服务

service crond restart                ## 重启服务

service crond reload               ## 重新载入配置

service crond status                 ## 服务状态

## 查看crontab服务是否已设置为开机启动,执行命令:chkconfig --list | grep cron

## 加入开机自动启动:chkconfig --level 35 crond on

2.3、编辑计划任务

实例:创建一个空文件,然后每分钟往里面追加时间

cd /root   ##切换目录

touch time.txt    ##创建文件

ll     ##查看文件是否创建

crontab -e     ##编辑当前用户计划任务  写入*/1 * * * * date >> /root/time.txt

crontab -l      ##查看当前用户正在执行的计划任务

crontab -e     ##再次进入编辑删除指定计划任务

crontab -r     ##从/var/spool/cron目录中删除用户的crontab文件


基本格式 :

crontab [-u user] file

crontab [-u user] [ -e | -l | -r ]

*  *  *  *  *  command

分  时  日  月  周  命令

第1列表示分钟1~59 每分钟用*或者 */1表示

第2列表示小时0~23(0表示0点) 7-9表示:7点到9点之间

第3列表示日期1~31

第4列表示月份1~12

第5列标识号星期0~6(0表示星期天)

第6列要运行的命令

 

*/1 * * * * date >> /root/time.txt

上面的例子表示每分钟执行一次date命令

 

30 18 * * * /usr/local/etc/rc.d/httpd restart

上面的例子表示每晚的18:30重启

 

45 4 1,10,22 * * /usr/local/etc/rc.d/httpd restart

上面的例子表示每月1、10、22日的4 : 45重启apache

 

10 1 * * 6,0 /usr/local/etc/rc.d/httpd restart

上面的例子表示每周六、周日的1 : 10重启apache

 

0,30 18-23 * * * /usr/local/etc/rc.d/httpd restart

上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache

 

0 23 * * 6 /usr/local/etc/rc.d/httpd restart

上面的例子表示每星期六的11 : 00 pm重启apache

 

* */1 * * * /usr/local/etc/rc.d/httpd restart

上面的例子每一小时重启apache

 

* 23-7/1 * * * /usr/local/etc/rc.d/httpd restart

上面的例子晚上11点到早上7点之间,每隔一小时重启apache

 

0 11 4 * mon-wed /usr/local/etc/rc.d/httpd restart

上面的例子每月的4号与每周一到周三的11点重启apache

 

0 4 1 jan * /usr/local/etc/rc.d/httpd restart

上面的例子一月一号的4点重启apache


 

猜你喜欢

转载自blog.csdn.net/weixin_41685388/article/details/102531518