[Linux]系统管理之进程和定时任务

一、进程管理

进程,线程和协程的联系

程序:计算机可以识别的一串指令或者代码

进程:将代码运行起来

线程:线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

协程:线程里的,由程序员写的轻量级线程

进程与线程的区别

线程是程序执行的最小单位,进程是操作系统资源分配的最小单位; 一个进程由一个或多个线程组成,它们是单个进程中代码执行的不同路径; 虽然进程之间相互独立,但同一进程下的各个线程共享程序的内存空间(包括代码段、数据集、堆等)和某些进程级资源(如打开文件)。 在共享进程级资源时,进程内的线程对其他进程是不可见的; 调度和切换:线程上下文切换比进程上下文切换快得多。

二、 查看进程

2.1 静态查看进程 —— ps aux/ps -elt

 选项:

选项作用
a显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将示系统中所有的进程信息。
u使用以用户为主的格式输出进程信息。
x显示当前用户在所有终端下的进程信息。
-e显示系统内的所有进程信息。
-l使用长格式显示进程信息。
-f使用完整格式显示进程信息
ps aux 进程信息解释
名称解释
USER产生该进程的的用户名称
PID进程的id,由系统分配
%CPU   该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源
%MEM该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源
VSZ该进程占用虚拟内存的大小,单位为 KB
RSS该进程占用实际物理内存的大小,单位为 KB
TTY该进程是在运行的终端
STAT进程所处的状态
START该进程的启动时间
TIME该进程占用 CPU 的运算时间,注意不是系统时间
COMMAND产生此进程的命令名

补充: STAT所处状态的种类

-D:不可被唤醒的睡眠状态,通常用于 I/O 情况。

-R:该进程正在运行。

-S:该进程处于睡眠状态,可被唤醒。

-T:停止状态,可能是在后台暂停或进程处于除错状态。

 -Z:僵尸进程。进程已经中止,但是还是占用硬件资源。

补充二:TTY进行运行的终端

 tty1~tty6 是本地的字符界面终端

tty7 是图形终端

 ps -elf

列名解释
F进程标志,说明进程的权限,常见的标志有两个: 1:进程可以被复制,但是不能被执行; 4:进程使用超级用户权限;
S进程状态。具体的状态和"psaux"命令中的 STAT 状态一致;
UID运行此进程的用户的 ID;
PID进程的 ID;
PPID父进程的 ID;
C该进程的 CPU 使用率,单位是百分比;
PRI进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行;系统定义不可以人为修改
NI进程的优先级,数值越小,该进程越早被执行;可以人为修改
ADDR该进程在内存的哪个位置;
SZ该进程占用多大内存;
WCHAN该进程是否运行。"-"代表正在运行;
TTY该进程由哪个终端产生;
TIME该进程占用 CPU 的运算时间,注意不是系统时间;
CMD产生此进程的命令名;

  僵尸状态产生的原因:由于父进程比子进程先退出,导致子进程无法被回收,且不能运行而产生的状态 

2. 2 查看线程—— ps -aT


2.3 动态查看进程 —— top

选项: 

选项作用
-d指定 top 命令每隔几秒更新。默认是 3 秒
-b使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中
-n指定 top 命令执行的次数。一般和"-"选项合用
-p仅查看指定 ID 的进程
-s使 top 命令在安全模式中运行,避免在交互模式中出现错误
-u只监听某个用户的进程

在 top 命令的显示窗口中,还可以使用如下按键,进行一下交互操作

        ? 或 h:显示交互模式的帮助;

        c:按照 CPU 的使用率排序,默认就是此选项;

        M:按照内存的使用率排序;

        N:按照 PID 排序;

        T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序;

        k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号;

        r:按照 PID 给某个进程重设优先级(Nice)值;

        q:退出 top 命令;

2.4 根据条件查看进程 

        -U:指定用户

        -l:显示进程名

        -a:显示完整格式的进程名

        -P < PID>:显示指定进程的子进程

        -t   查看终端

2.5 树状查看进程——pstree

选项: 

-p:显示PID

2.6 查看指定进程 ——prtstat

三、手动控制进程

进程的启动分为前台启动和后台启动

        前台启动 :用户输入命令以后,直接在页面中启动该命令

        后台启动:当该命令需要的操作过大,占用可终端,导致用户无法再次输入其他命令,将该处理进程放在后台处理,同时可以进行别的操作 

 3.1 将前台命令进程转入后台——&

 3.2 进程的前后台调度

jobs命令:jobs [-l]查看处于后台的任务列表;

不显示进程号

jobs -l 可以显示进程号

 fg命令:将后台进程恢复到前台运行,可指定任务序号;

3.3 终止进程的运行kill 

Ctrl + C组合键:中断正在执行的命令;

kill、killall命令

         kill用于终止指定PID号的进程

         killall用于终止指定名称相关的所有进程

         -9选项用于强制终止

kill <进程名>  //杀死某一进程
kill -9 <PID>   //强制杀死
killall <进程名> //杀死全部进程

 查看终端信息的命令(who、w、ps aux);

四、计划任务管理

4.1 at命令

一次性计划任务

        使用at命令设置的任务只在指定时间点执行一次,若只指定时间则表示当天的该时间,若只指定日期则表示该日期的当前时间;

        可以在at交互环境中输入多条命令,最后按Ctrl+D组合键提交;

at [HH:MM] [yyyy-mm–dd]:在特定时间##年##月##日##时##分,设置一次性计划任务;

[root@localhost ~]# atq //查看还未执行的计划
1	Mon Nov  6 18:42:00 2023 a root

 

[root@localhost ~]# at 1:00 2024-1-1  #在2024-01-1的1:00分设置一次性计划
at> echo 'happy' > /opt/happy.txt        
at> <EOT>
job 3 at Mon Jan  1 01:00:00 2024
[root@localhost ~]# atq  #查看系统中还未运行的计划
2	Mon Jan  1 00:00:00 2024 a root
3	Mon Jan  1 01:00:00 2024 a root
[root@localhost ~]# 
[root@localhost ~]# atrm 2   #删除系统中序号为2的计划
[root@localhost ~]# atq  #查看此时系统中还未执行的计划
3	Mon Jan  1 01:00:00 2024 a root
[root@localhost ~]# 

 4.2 crontab命令

 crontab  类似vim编辑器一样打开一个配置文件,向配置文件中写入周期任务。但是写周期任务,需要对使用周期时间进行理解和掌握

选项:

选项作用
-u用来设定某个用户的 crontab 服务
-e编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。
-l显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。
-r从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。
-i在删除用户的 crontab 文件时,给确认提示。

编辑任务的格式: 

*0~59
*0~23
*1~31
*1~12
*0~7(0和7都代表星期日)
例子:

  0 8-18/2 * * *   //8点到18点之间每2小时  

  0 * */3 * *       //每3天的每个整点

  0 14-18 1,5,15,30 * *     // 每个月 1号  ,5 号 ,15号,  30号   下午 2到6点  执行

  15-45/5  10,22   */10    10     *         // 每年10月每隔10天的上午和下午10点的15-45分内每隔5分钟执行一次
符号作用
*(星号)代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。
,(逗号)代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。
-(中杠)代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。
/(正斜线)代表每隔多久执行一次。比如"*/10命令",代表每隔 10 分钟就执行一次命令。

 which 命令 //查看该命令的绝对路径

crontab -e //创建一个周期任务
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
*/1 * * * *  /usr/bin/cp /etc/passwd   /opt/passwd1  //每隔一分钟复制一份
wq //退出保存

[root@localhost opt]# crontab -l  //查看周期任务
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin  //定义软件的位置
*/1 * * * *  /usr/bin/cp /etc/passwd   /opt/passwd1 //把etc下文件复制到opt并改名
[root@localhost opt]# 
[root@localhost opt]# ls
happy.txt  passwd  passwd1  rh  

 4.3 周期任务的删除 

总结 

静态查看:ps aux,ps -elf

动态查看:top

查看指定进程:prtstat

以树形结构列出:pstree

at 一次性任务的设定

杀进程时注意 -9  谨慎使用,使用不妥当,会导致数据丢失

周期任务计划要注意周期方法的使用,利用好周期符号,设定先要的执行时段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值