莱莱 发表于 2024-7-14 00:30:29

云盘算【第一阶段(22)】Linux的历程和计划任务管理

一、查看历程

1.1、步伐和历程的关系

步伐


[*]生存在硬盘,光盘等介质中的可实行代码和数据
[*]静态生存的代码
历程


[*]在cpu及内存中运行的步伐代码
[*]动态实行的代码
[*]父,子历程:每个步伐可以创建一个或多个历程
1.2、查看历程

1.2.1、静态查看历程信息ps

   ps    参数
常用的参数


[*]-a:显示当前终端下的所有历程信息,包罗其他用户的历程。与“x”选项联适时将显示系统中所有的历程信息。
[*]-u:利用以用户为主的格式输出历程信息。
[*]-x:显示当前用户在所有终端下的历程信息。
[*]-e:显示系统内的所有历程信息。
[*]-l:利用长格式显示历程信息。
[*]-f:利用完备的格式显示历程信息。
常用的选项组合
ps    -aux        #将以简单列表的情势显示出历程信
ps     -elf        #将以长格式显示系统中的历程信息
 
https://img-blog.csdnimg.cn/direct/d1b0e84243234740a8527f34901383e3.png
https://img-blog.csdnimg.cn/direct/a1704cc8763b4fa58524132305ddb90f.png
字段描述USER启动该历程的用户账号的名称PID该历程在系统中的唯一数字ID号%CPUCPU占用的百分比%MEM内存占用的百分比VSZ假造内存利用量(KB)RSS物理内存利用量(KB)TTY历程运行的终端。非终端启动的历程显示为? pts: 远程登录终端,tty1-tty6: 当地终端(可能包罗图像界面和字符界面),?: 系统自身实行的历程STAT 历程状态:D: 不可中断的休眠状态R: 运行状态S: 休眠状态T: 停止状态Z: 僵尸历程
其他状态如<, N, L, s, l, + 也有各自的含义
START启动该历程的时间TIME该历程占用的CPU时间COMMAND启动该历程的下令的名称  STAT补充
状态代码描述D不可中断的休眠状态。通常用于等待I/O操作完成。这并不意味着它是系统守护历程,但守护历程可能会处于此状态。R运行状态。历程正在运行或准备运行。S休眠状态。历程在等待某个条件建立以便继承实行。T停止状态。历程收到SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU信号后停止实行。Z僵尸状态。历程已经停止,但父历程尚未接纳其资源。<历程运行在高优先级上(这个符号通常不直接出现在STAT列中,而是可能作为其他信息的一部分)。N历程运行在正常优先级上(这个符号通常不直接出现在STAT列中,而是可能作为其他信息的一部分)。L历程有页面锁定在内存中(这个状态代码可能不直接出现在STAT列中,而是作为历程属性的一部分)。s历程是控制终端的会话向导(session leader)。l历程是多线程的(这个状态代码可能不直接出现在STAT列中,而是作为历程属性的一部分)。+历程在前台运行(这个状态代码可能不直接出现在STAT列中,而是作为历程状态的一部分)。
https://img-blog.csdnimg.cn/direct/497b2eae680e4e2aac8d1601d4ab18e6.png

列名解释F内核分配给历程的系统标志S历程的状态UID启动这些历程的用户PID历程的历程IDPPID父历程的历程号(假如该历程是由另一个历程启动的)C历程生命周期中的CPU利用率PRI历程的优先级(越大的数字代表越低的优先级)NI忍让度值用来到场决定优先级ADDR历程的内存地址SZ假如历程被换出,所需互换空间的大致巨细WCHAN若该历程在睡眠,则显示睡眠中的系统函数名STIME历程启动时的系统时间TTY历程启动时的终端设备(pts/0-255代表假造终端,tty1-tty7代表当地控制台终端)TIME运行历程需要的累计CPU时间CMD历程的启动下令 状态描述D不可被叫醒的睡眠状态,通常用于 I/O 情况R该历程正在运行S该历程处于睡眠状态,可被叫醒T停止状态,可能是在背景暂停或历程处于除错状态W内存交互状态(从 2.6 内核开始无效)X死掉的历程(应该不会出现)Z僵尸历程。历程已经中止,但是部分步伐还在内存当中<高优先级(以下状态在 BSD 格式中出现)N低优先级L被锁入内存s包含子历程l多线程(小写 L)+位于背景C历程占用CPU的百分比
1.2.1.1、实验

在终端A实行 编写vim  a.txt
https://img-blog.csdnimg.cn/direct/6fb36e190ede4c92bb41f9a7c84e815d.png
打开另一个终端B
ps -aux |grep a.txt
https://img-blog.csdnimg.cn/direct/4f9400f30f3f4c8d9aa1e15e085937b8.png
S 表示睡眠状态, + 表示前台

这个终端A上 按下: ctrl+z 停止
https://img-blog.csdnimg.cn/direct/054cce57a82d476592d69b4b34ad300f.png
再次查看状态
https://img-blog.csdnimg.cn/direct/7c888710820a4d849e70411afe591c57.png
查看状态 T 表示停止状态

扩展:
ctrl  -   c 是发送 SIGINT 信号,停止一个历程
ctrl  -   z 是发送 SIGSTOP 信号,挂起一个历程。将作业放置到背景(暂停)
ctrl  -   d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。代表输入完成或者注销
 

 1.2.2、动态查看历程信息top

   top   下令
https://img-blog.csdnimg.cn/direct/ed78922dd5b84d4e8cb41fe8efa3edab.png
https://img-blog.csdnimg.cn/direct/9800a9fa45154486be178726bda94686.png
种别描述系统任务(Tasks)total总历程数running正在运行的历程数sleeping休眠的历程数stopped中止的历程数zombie僵死无相应的历程数CPU 占用us用户占用sy内核占用ni优先级调度占用id空闲CPU(百分比)waI/O 等待占用hi硬件中断占用si软件中断占用st假造化占用内存占用(Mem)total总内存空间free空闲内存used已用内存buff/cache物理内存和互换内存的缓冲区总和avail Mem考虑buff/cache后可用的物理内存互换空间(Swap)total总互换空间free空闲互换空间used已用互换空间avail Mem注意:这里的avail Mem与内存占用中的avail Mem意义差别,假如表示Swap的可用空间,则无需此列 下面白色那排扩展
USER历程所有者的用户名PR优先级(由内核动态调解)NInice 值(历程优先级)。负值表示高优先级,正值表示低优先级VIRT假造内存利用量(VSZ)RES常驻内存利用量(RSS)SHR共享内存巨细(kb)S历程状态(D=不可中断的睡眠,R=运行/可运行,S=睡眠,T=已跟踪/已停止,Z=僵停)%CPUCPU 时间占用百分比%MEM利用的物理内存百分比TIME+利用的 CPU 时间总计(单位:1/100 秒)COMMAND下令名/下令行 1.2.2.1、实验

当我运行I/O的时间,wa占用
dd if=/dev/zero of=/mnt/a.txt count=19 bs=100M
https://img-blog.csdnimg.cn/direct/287564e9007d40cbb999801ec3e1b73a.png
https://img-blog.csdnimg.cn/direct/227b168625ab43be8d7dde82eecab78f.png
又恢复成
https://img-blog.csdnimg.cn/direct/8b8e37a68a3148d8a3544cc5a887ee6b.png
 1.2.2.2、top 下令全屏操作界面快捷键

默认 3s 革新一次,按 s 修改革新时间按空格 :立刻革新。
P:按 CPU 排序
M:按内存排序
T:按时间排序
p: 历程 IP,查看某个历程状态
N 键根据启动时间进行排序
数字键 1:显示每个内核的 CPU 利用率
u/U:指定显示的用户
h:可以得到 top 步伐的在线帮助信息
q:键可以正常地退出 top 步伐
注:若通过 top 排名工具发现某个历程 CPU 占用率非常高,需要停止该历程的运行,可以在 top 操作界面中按 k 键,然后在列表上方将会出现“PID to signal/kill :” 的提示信息,根据需要输入指定历程的 PID 号并按 Enter 键, 出现“Send pid 输入的能够ID  signal ”的二次确认的提示信息,然后按Enter 键确认即可停止对应的历程。
https://img-blog.csdnimg.cn/direct/5f82459c2f854de4854e5a056d086dd7.png
https://img-blog.csdnimg.cn/direct/74122caaab9c43b786a7788d8c7a592b.png
 1.2.3、pgrep根据特定条件查询历程pid信息

   pgrep  -参数
常用的参数


[*]-l:选项可同时输出对应的历程名以及PID
[*]-U:选项查询特定用户的历程
[*]-t:选项查询在特定终端运行的历程 
https://img-blog.csdnimg.cn/direct/aac4219e53064b699a507d2123f837c4.png

1.2.4、pstree下令以树形布局列出历程信息

团结以下常用的参数利用:


[*]-p:选项利用时可以同时列出对应的PID号
[*]-u:选项可以列出对应的用户名
[*]-a:选项可以列出完备的下令信息
实行如下的“pstree -aup”下令可以查看当前系统的历程树,包罗各历程对应的PID 号、用户名、完备下令等信息。从输出结果中可以看出,systemd 历程确实是 Linux 操作系统中所有历程的“始祖”。
https://img-blog.csdnimg.cn/direct/da8a781145954b85a0f3fc7d6a6b4f81.png

二、控制历程

2.1、历程的启动方式

手工启动


[*]前台启动:用户输入下令,直接实行步伐
[*]背景启动:在下令行尾加入"&"符号
例如,当使   用 cp 下令从光盘中制作镜像文件时,由于需要复制的数据较多,耗时较长,因此可团结“&” 符号将复制操作放到背景运行,以便用户可以继承实行其他下令操作。
https://img-blog.csdnimg.cn/direct/dc070c6062a44b8c801cc57579242391.png
输出信息中包罗后:台任务序号【1】,pid号 35489
调度启动
在服务器维护工作中,经常需要实行一些比力费时而且较占用资源的任务(如数据备份),这些任务更适合在相对空闲的时间(如夜间)进行。这时就需要用户事先辈行调度安排,指定任务运行的时间,当系统到达设定时间时会自动启动并完成指定的任务。调度启动的计划 任务历程均在背景运行,不会占用用户的下令终端。
历程的调度启动可以通过 at、crontab 下令进行设置,其中 at 下令用于设置一次性(如12:15 时重启网络服务)计划任务,crontab 下令用于设置周期性运行(如每周五 17:30 备份数据库)的计划任务。
2.2、历程的前背景调度

2.2.1、挂起当前的历程

当Linux操作系统中的下令正在前台实行时(运行尚未竣事),按Ctrl+Z组合键可以将当前历程挂起(调入背景并停止实行),这种操作在需要暂停当前历程并进行其他操作时特别有效。例如,打包usr并且调入背景 ,可以按 Ctrl+Z 组合键将该下载任务调入背景并暂停实行
tar czvf  usr.tar.gz /usr
https://img-blog.csdnimg.cn/direct/8366dfc17e8a43ec9c3afef8fdd9a0e7.png
2.2.2、jobs下令查看处于背景的任务列表

常用的参数
-l:选项可以同时显示该历程对应的PID号
jobs -l  
查看处于背景的任务列表https://img-blog.csdnimg.cn/direct/eee77856e0aa4f679edcaa31fbf4eb4b.png
2.2.3、fg、bg下令将背景的历程恢复运行

利用 bg(BackGround,背景)下令,可以将背景中暂停实行(如按 Ctrl+Z 组合键挂起)的任务恢复运行,继承在背景实行操作;(注意就不能再停止了)
利用 fg 下令(ForeGround,前台),可以将背景任务重新恢复到前台运行。
除非背景中的任务只有一个,否则 bg 和 fg 下令都需要指定背景历程的任务编号作为参数。
https://img-blog.csdnimg.cn/direct/b3017c65dc8849d4818fec5a24429633.png
2.3、停止历程实行

当用户在前台实行某个历程时,可以按Ctrl+C组合键强制进行中断(如下令长时间没有相应的情况下)。
中断前台历程的运行后,系统将返回下令行提示符状态等待用户输入新的下令。
当按 Ctrl+C 组合键无法停止步伐或者需要竣事在其他终端或背景运行的历程时, 可以利用专用的历程停止工具 kill、killall 和 pkill。
2.3.1、利用 kill 下令停止历程

通过 kill 下令停止历程时,需要利用历程的 PID 号作为参数。无特定选项时,kill 下令将给该历程发送停止信号并正常退出运行,若该历程已经无法相应停止信号,则可以团结“-9”    选项强行停止历程。强制停止历程时可能会导致步伐运行的部分数据丢失,因此不到不得已时不要容易利用“-9”选项。(但是一样平常照旧会用)
-3柔和
例如,若vim 服务的 sshd 历程的 PID 号为 93333,则实行“kill 93333”下令后可以将历程 sshd 停止

 开启一个vim

https://img-blog.csdnimg.cn/img_convert/3fd355e96371509d0332f3e8702a5836.png
查询这个pid 
https://img-blog.csdnimg.cn/img_convert/d94a96284738728bd605e0c40600734d.png
杀死

https://img-blog.csdnimg.cn/img_convert/f572f100f8144c194a18a2347e710325.png
停止 
https://img-blog.csdnimg.cn/img_convert/9914a481cadad751fbac78b00d18cd64.png
2.3.2、利用 killall 下令停止历程

利用 killall 下令可以通过历程名称来停止历程,当需要竣事系统中多个相同名称的历程时,利用 killall 下令将更加方便,效率更高。killall 下令同样也有“-9”选项。例如,实行如下的“killall -9 vim”下令可将所有名为 vim 的历程都强行停止
挂起第 2 个 vim 测试历程
通过历程名停止多个历程

https://img-blog.csdnimg.cn/img_convert/5b1f03e52abf24ddf264c0300e44eba0.png
2.3.3、利用 pkill 下令停止历程

利用 pkill 下令可以根据历程的名称、运行该历程的用户、进程地点的终端等多种属性停止特定的历程,大部分选项与 pgrep 下令基本类似,如“-U”(指定用户)、“-t”(指定终端) 等选项,利用起来非常方便。例如,若要停止由用户 yc666启动的历程(包罗登录 Shell),可以实行以下操作。

pgrep –l -U "yc666"    //确认目的历程相关信息56416 bash

https://img-blog.csdnimg.cn/img_convert/a5cc45e3102d4f3f9a9aa27ca052cd93.png

pkill -9 -U "yc666"    //强行停止用户hackli 的历程

https://img-blog.csdnimg.cn/img_convert/4922d4715c23fadbb03b950f5666293f.png

pgrep -l -U "yc666"    //确认目的历程已被停止

https://img-blog.csdnimg.cn/img_convert/f59ab521bb5341803e6670fdf720f5d6.png
三、at一次性任务设置

一次性计划任务
在 Linux 操作系统中,除了用户即时实行的下令操作以外,还可以配置在指定的时间、指定的日期实行预先计划的系统管理任务(如定期备份、定期收罗监测数据)。CentOS 系统中默认已安装了 at、cronie 软件包,通过 atd 和 crond 这两个系统服务实现一次性、周期性计划任务的功能,并分别通过 at、crontab 下令进行计划任务设置

利用at下令设置的计划任务只在指定的时间点实行一次,条件是对应的系统服务atd必须已经运行。需要注意的是,计划实行任务的时间、日期必须安排在当前系统的时刻之后,   否则将无法正确设置计划任务。
设置一次性计划任务时,在 at 下令行中依次指定计划实行任务的时间、日期作为参数(若只指定时间则表示当天的该时间,若只指定日期则表示该日期的当前时间),确认后将进入带“at>”提示符的任务编辑界面,每行设置一条实行下令,可以依次设置多条语句,最后按 Ctrl+D 组合键提交任务。所设置的下令操作将在计划的时间点被依次实行。
格式
   at    
任务设置完毕后按Ctrl+D 组合键提交
假如错误,修改用ctrl+删除修改内容
https://img-blog.csdnimg.cn/direct/4e38a4e76162484a8f1fb287f8a5f977.pnghttps://img-blog.csdnimg.cn/direct/93fde7a6e18a485a8c99772ff58b937b.png
https://img-blog.csdnimg.cn/direct/db0866548765476ba03824a262fc640f.png
https://img-blog.csdnimg.cn/direct/71d6bbb513c241f79fd7b44ccde53e84.png
 3.1、实验

以下操作将设置一条计划任务,在当天的 21:30 自动关闭当前系统。
https://img-blog.csdnimg.cn/direct/4a407058080b42b1bb2a7db575797926.png
 
3.2、查询计划和删除计划

可以通过 atq 下令进行查询
https://img-blog.csdnimg.cn/direct/6701eccef05a42baaa530657cd59454b.png
 用atrm +任务号  删除https://img-blog.csdnimg.cn/direct/feaaa22cc7694507a395b6203bafeb4e.png
四、crontab周期性任务设置

crontab下令
按照预先设置的时间周期 (分钟,小时,天。.....)重复实行用户指定的下令操作,属于周期性计划任务。
/etc/crontab 文件中设置的是维护 Linux 操作系统所需的任务,Linux 操作系统及相关步伐在安装时可自动设置,不建议用户手动修改此文件。
该文件中包罗设置 Shell 环境、可实行路径等变量的操作,以及每小时、每天、每周、每月需要实行的任务目录。实行如下的“cat /etc/crontab”下令可以查看/etc/crontab 文件的具体内容。
https://img-blog.csdnimg.cn/direct/a6222dcc2cdd4a9d9d4696c9f4cb3a67.png
 

4.1、管理crontab计划任务

   编辑计划任务
crontab -e【-u用户名】
查看计划任务
crontab -i【u用户名】
删除计划任务
crontab -r【-u用户名】
crontab -u 用户名 #指定XX用户的cron服务
crontab -l #列出当前用户下的cron的详细内容
crontab -u zx -l #列出zx用户下的cron的详细内容
crontab -r #删除所有效户的cron内容,平常用户实行,只删除自己的cron内容
crontab -r -u zx #删除zx用户的cron内容
crontab -e #编辑cron服务 
4.1.1、-e编辑内容格式

50      3       2    1        *       run command
分钟 小时 日期 月份 星期    下令
分时日月周
4.2、时间数值的特殊表示方法



[*]*表示该范围内的任意时间
[*]减号“-”:可以表示一个一连的时间范围,如“1-4”表示整数 1、2、3、4。
[*]逗号“,”:可以表示一个间隔的不一连范围,如“3, 4, 6, 8”。
[*]斜杠符号“/”:可以用来指定间隔频率,如在日期字段中的“*/3”表示每隔 3 天。
示例
https://img-blog.csdnimg.cn/direct/4b494620fa644363b81b30fc573431e7.png

4.3、实验

平常用户实行“crontab -e”下令时,可以设置自己的计划任务(需要注意下令的实行权限)。
例如,用户 yc666设置一条计划任务:
在每晚上的 18:36 将/etc/passwd 文件的内容复制到宿主目录中,生存为 pwd.txt 文件
https://img-blog.csdnimg.cn/direct/18d0fa41c38948baa253b8fb93dd9b3e.png
https://img-blog.csdnimg.cn/direct/5aa9f8a4a56a48c6b83f5ffe7b385225.png
因各条计划任务在实行时并不需要用户登录,以是任务配置记载中的下令建议利用绝对路径,以避免因缺少实行路径而无法实行下令的情况。别的,在设置非每分都实行的任务时,    “分钟”字段也应该填写一个具体的时间数值,而不要保留为默认的“*”,否则将会在每分钟实行一次计划任务。

在root下可以-u查看其他人计划
https://img-blog.csdnimg.cn/direct/66b0b6f2e31a46d2a5fc56b964b2739d.png

 补充
crontab -e:编辑的是当前系统用户作为实行者的的定时任务
conrtab -l:查看当前用户的定时任务
/etc/cronatab:是系统级别,可以包含所有效户的定时任务
其他的一些例子
例如,若要按固定的周期重复完成一些系统管理任务,任务内容如下:
①每天早上 7:50自动开启 sshd 服务,22:50 关闭 sshd 服务;
②每隔五天清空一cron        次 FTP 服务器公共目录/var/ftp/pub 中的数据;
③每周六的 7:30 重新启动系统中的 httpd 服务;
④每周一、周三、周五的下午 17:30,利用 tar 下令自动备份/etc/httpd 目录,则可由 root 用户通过 crontab 设置以下计划任务。

[*] 例如,若要按固定的周期重复完成一些系统管理任务,任务内容如下:①每天早上 7:50
[*] 自动开启 sshd 服务,22:50 关闭 sshd 服务;②每隔五天清空一cron 次 FTP 服务器公共目录
[*] /var/ftp/pub 中的数据;③每周六的 7:30 重新启动系统中的 httpd 服务;④每周一、周三、周五的下午 17:30,利用 tar 下令自动备份/etc/httpd 目录,则可由 root 用户通过 crontab 设置以下计划任务。
[*]
[*]
[*] # crontab -e
[*] 50 7 * * * /usr/bin/systemctl start sshd.service
[*] 50 22 * * * /usr/bin/systemctl stop sshd.servic
[*] 0 0 */5 * * /usr/bin/rm -rf /var/ftp/pub/*
[*] 30 7 * * 6 /usr/bin/systemctl httpd restart
[*] 30 17 * * 1,3,5 /usr/bin/tar jcf httpdconf.tar.bz2 /etc/httpd/
[*] */2 * * * * ls -lh /home/*

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 云盘算【第一阶段(22)】Linux的历程和计划任务管理