进程管理和任务调度

目录

进程监控和管理

任务调度管理

进程与文件权限


进程监控和管理

进程启动:

        · 前台启动

当用户输入一个命令并运行,就已经启动了一个进程,而且是一个前台的进程,此时系统其实已经

处于一个多进程的状态

假如启动一个比较耗时的进程,然后再把该进程挂起,即将前台运行的进程放到后台,并且暂停其

运行   CTRL + Z

[an@localhost 20220521]$ find / -name demo.jpg  // 查找 demo.jpg 文件
find: ‘/boot/efi’: 权限不够
find: ‘/boot/grub2’: 权限不够
find: ‘/proc/tty/driver’: 权限不够
find: ‘/proc/1/task/1/fd’: 权限不够
....... 
^Z        // 按“CTRL+Z”组合键,即可将该进程挂起
[1]+  已停止               find / -name demo.jpg
[an@localhost 20220521]$ jobs -l    // 查看后台进程
[1]+ 13084 停止                  find / -name demo.jpg

       · 后台启动

功能:将命令放入Bash后台运行而不影响终端窗口

在命令结尾输入“&”符号即可,通过“&”放入后台的进程仍然处于运行状态

[an@localhost 20220521]$ find . -name n.sh & 
[1] 13804         // 这一行显示任务号和进程号
./n.sh            // 这一行是find命令的输出 
[1]+  完成                  find . -name n.sh    // 这一行表示find命令在后台运行结束

jobs 命令

功能:查看后台进程

选项

含义

-l(L 的小写)

列出进程的 PID 号。

-n

只列出上次发出通知后改变了状态的进程。

-p

只列出进程的 PID 号。

-r

只列出运行中的进程。

-s

只列出已停止的进程。

[an@localhost 20220521]$ jobs -l  
[1]+ 13084 停止                  find / -name demo.jpg
[an@localhost 20220521]$ jobs -p
14000
[an@localhost 20220521]$ jobs -s
[1]+  已停止               find / -name demo.jpg

fg 命令

功能:把后台的进程恢复到前台继续运行

[an@localhost 20220521]$ fg 1    // // fg命令后跟任务号
find / -name demo.jpg
find: ‘/usr/share/polkit-1/rules.d’: 权限不够
find: ‘/usr/libexec/initscripts/legacy-actions/auditd’: 权限不够
find: ‘/home/niu’: 权限不够
find: ‘/opt/google/chrome/extensions’: 权限不够
[an@localhost 20220521]$ 
bg 命令

功能:使后台暂停的进程重新开始运行

ps 命令

功能:查看系统中当前有哪些进程,选项非常多

"ps aux" 可以查看系统中所有的进程;

"ps -le" 可以查看系统中所有的进程,而且还能看到进程的父进程的 PID 和进程优先级;

"ps -l" 只能看到当前 Shell 产生的进程;

a

显示现行终端机下的所有程序,包括其他用户的程序

e

列出程序时,显示每个程序所使用的环境变量

-f

显示UID,PPIP,CSTIME栏位

f

ASCII字符显示树状结构,表达程序间的相互关系

-j

采用工作控制的格式显示程序状况

        ps命令输出信息含义(一)

USER用户名 

PID 该进程的进程ID号。

%CPU该进程使用掉的 CPU 资源百分比;   

%MEM该进程所占用的物理内存百分比;

VSZ 该进程使用掉的虚拟内存量 

RSS 该进程占用的固定的内存量 

TTY 该进程是在哪个终端机上面运作,若与终端机无关,则显示 ?,tty1~tty6 是本地的字符界面终端,tty7是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,依次増长。

 STAT:该程序目前的状态,主要的状态有:               

-D:不可被唤醒的睡眠状态,通常用于 I/O 情况。  -R:该进程正在运行。

-S:该进程处于睡眠状态,可被唤醒。  -T:停止状态,可能是在后台暂停或进程处于除错状态。

-W:内存交互状态(从 2.6 内核开始无效)。  -X:死掉的进程(应该不会出现)。

-Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。

-<:高优先级(以下状态在 BSD 格式中出现)。

-N:低优先级。  -L:被锁入内存。

-s:包含子进程。  -l:多线程(小写 L)。

-+:位于后台。

START进程启动时间和日期; 

TIME 进程使用的总cpu时间。

COMMAND正在执行的命令行命令

        ps命令输出信息含义(二)

F进程标志,说明进程的权限,常见的标志有两个:

1:进程可以被复制,但是不能被执行;

4:进程使用超级用户权限;

S进程状态。具体的状态和"ps aux"命令中的 STAT 状态一致;

UID运行此进程的用户的 ID

PID进程的 ID

PPID父进程的 ID

C该进程的 CPU 使用率,单位是百分比;

PRI进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行;(内核调整,用户不可修改)

NI进程的优先级,数值越小,该进程越早被执行;(用户可以修改)

ADDR该进程在内存的哪个位置;

SZ该进程占用多大内存;

WCHAN该进程是否运行。"-"代表正在运行;

TTY该进程由哪个终端产生;

TIME该进程占用 CPU 的运算时间,注意不是系统时间;

CMD产生此进程的命令名;

[an@localhost 20220521]$ ps -l   // 当前 Shell 产生的进程
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000  12967  12958  0  80   0 - 29236 do_wai pts/0    00:00:00 bash
0 R  1000  15990  12967  0  80   0 - 38309 -      pts/0   

pstree 命令

功能:查看进程间的相关性和依赖关系

选项

含义

-a

显示启动每个进程对应的完整指令,包括启动进程的路径、参数等。

-c

不使用精简法显示进程信息,即显示的进程中包含子进程和父进程。

-n

根据进程 PID 号来排序输出,默认是以程序名排序输出的。

-p

显示进程的 PID

[an@localhost 20220521]$ pstree 
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager─┬─dhclient
        │                └─2*[{NetworkManager}]
        ├─VGAuthService
        ├─2*[abrt-watch-log]
        ├─abrtd
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─alsactl
        ├─anacron
        ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
        │                 └─3*[{at-spi-bus-laun}]
        ├─at-spi2-registr───2*[{at-spi2-registr}]
        ├─atd
        ├─auditd─┬─audispd─┬─sedispatch
        │        │         └─{audispd}
        │        └─{auditd}
        ├─avahi-daemon───avahi-daemon
        ├─bluetoothd
        ├─boltd───2*[{boltd}]
        ├─colord───2*[{colord}]
        ├─crond
        ├─cupsd
        ├─2*[dbus-daemon───{dbus-daemon}]
        ├─dbus-launch
        ├─dconf-service───2*[{dconf-service}]
        ├─dnsmasq───dnsmasq
        ├─evolution-addre─┬─evolution-addre───5*[{evolution-addre}]
        │                 └─4*[{evolution-addre}]
        ├─evolution-calen─┬─evolution-calen───8*[{evolution-calen}]
        │                 └─4*[{evolution-calen}]
        ├─evolution-sourc───3*[{evolution-sourc}]
        ├─firewalld───{firewalld}
        ├─fwupd───4*[{fwupd}]
        ├─gdm─┬─X───{X}
        │     ├─gdm-session-wor─┬─gnome-session-b─┬─abrt-applet───2*[{abrt-applet}+
        │     │                 │                 ├─gnome-shell─┬─ibus-daemon─┬─ib+
        │     │                 │                 │             │             ├─ib+
...............

top 命令

功能:查看进程信息的动态变化,默认每隔3秒刷新一次

[an@localhost 20220521]$ top -d 10

top - 16:51:58 up  1:31,  2 users,  load average: 0.11, 0.06, 0.06
Tasks: 268 total,   2 running, 265 sleeping,   1 stopped,   0 zombie
%Cpu(s):  3.7 us,  1.3 sy,  0.0 ni, 94.8 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem :  3861492 total,  2263868 free,   865664 used,   731960 buff/cache
KiB Swap:  1572860 total,  1572860 free,        0 used.  2630180 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                                  
 10931 root      20   0  353016  35092  15984 S  3.2  0.9   0:12.15 X                                                                                                                        
 12958 an        20   0  850644  30892  19224 S  1.3  0.8   0:06.86 gnome-terminal-                                                                                                          
 12139 an        20   0 3028152 162552  52296 S  1.1  4.2   0:20.47 gnome-shell                                                                                                              
     1 root      20   0  193816   6924   4192 S  0.1  0.2   0:02.31 systemd                                                                                                                  
  4653 root      20   0       0      0      0 S  0.1  0.0   0:01.06 xfsaild/dm-0                                                                                                             
 12113 an        20   0  233096   3948   3192 S  0.1  0.1   0:00.14 at-spi2-registr                                                                                                          
 12472 an        20   0  568064  27384  19856 R  0.1  0.7   0:03.08 vmtoolsd                                                                                                                 
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kthreadd                                                                                                                 
     3 root      20   0       0      0      0 S  0.0  0.0   0:00.19 ksoftirqd/0                                                                                                              
     5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H                                                                                                             
     7 root      rt   0       0      0      0 S  0.0  0.0   0:00.01 migration/0                                                                                                              
     8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh                                                                                                                   
     9 root      20   0       0      0      0 S  0.0  0.0   0:00.91 rcu_sched                                                                                                                
    10 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 lru-add-drain                                                                                                            
    11 root      rt   0       0      0      0 S  0.0  0.0   0:00.04 watchdog/0                                                                                                               
    13 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs                                                                                                                
    14 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns                                                                                                                    
    15 root      20   0       0      0      0 S  0.0  0.0   0:00.00 khungtaskd 
..............

 lsof命令

功能:列举系统中已经被打开的文件

可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件

选项

功能

-c 字符串

只列出以字符串开头的进程打开的文件。

+d 目录名

列出某个目录中所有被进程调用的文件。

-u 用户名

只列出某个用户的进程打开的文件。

-p pid

列出某个 PID 进程打开的文件。

nice 命令

功能:设置进程的优先级(不能修改已运行进程的 NI 值)

每个进程都有优先级,优先级越高,表示进程越有可能获得CPU的使用权

进程的优先级用nice值表示,取值范围是-20~19,默认值为0,数字越大表示优先级越低

renice 命令

功能:调整运行中进程的优先级

普通用户只能调整自己创建的进程的优先级,而且只能把nice调整为更大的值

root用户可以调整所有人的进程优先级,而且可以调整为更小的值

kill 命令

功能:通过内核向进程发送信号执行某些特殊的操作,如挂起进程、正常退出进程或强制终止进程等

信号代号

信号名称

说 明

1

SIGHUP

该信号让进程立即关闭.然后重新读取配置文件之后重启

2

SIGINT

程序中止信号,用于中止前台进程。相当于输出 Ctrl+C 快捷键

8

SIGFPE

在发生致命的算术运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为 0 等其他所有的算术运算错误

9

SIGKILL

用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。一般用于强制中止进程

14

SIGALRM

时钟定时信号,计算的是实际的时间或时钟时间。alarm 函数使用该信号

15

SIGTERM

正常结束进程的信号,kill 命令的默认信号。如果进程已经发生了问题,那么这 个信号是无法正常中止进程的,这时我们才会尝试 SIGKILL 信号,也就是信号 9

18

SIGCONT

该信号可以让暂停的进程恢复执行。本信号不能被阻断

19

SIGSTOP

该信号可以暂停前台进程,相当于输入 Ctrl+Z 快捷键。本信号不能被阻断

任务调度管理

at 命令

功能:设置在指定的时间执行某个一次性任务

选项

含义

-m

at 工作完成后,无论命令是否输出,都用 E-mail 通知执行 at 命令的用户。

-c 工作标识号

显示该 at 工作的实际内容。

-t 时间

在指定时间提交工作并执行,时间格式为 [[CC]YY]MMDDhhmm

-d

删除某个工作,需要提供相应的工作标识号(ID),同 atrm 命令的作用相同。

-l

列出当前所有等待运行的工作,和 atq 命令具有相同的额作用。

时间参数是计划任务的执行时间,可以采用下列时间格式的任何一种

        HH:MM [ am|pm] [Month] [Date] [Year],如11:10 am Jan 18 2022        

        HH:MM YYYY-MM-DD,如11:10 2022-01-18

        MMDDYYMM/DD/YY,表示指定日期的当前时刻,如01182201/18/22

        特定时间:如now表示当前时刻,noon代表12:00 pmmidnight代表12:00 amTeatime代表4:00 pm

        time + n [minutes | hours | days | weeks],表示在某个时间点之后某一时刻执行,如now + 3 hours表示当前时刻的3小时后

注意事项 

        使用 at 命令,读者需提前安装好 at 软件包,并开启 atd 服务

        查看 at 软件包是否已安装,可以使用 rpm -q 命令

        查看是否安装命令:rpm –q at

        若未安装,则使用命令安装:yum install at

        at 命令要想正确执行,还需要 启动atd 服务。

        启动命令:service atd start

        开机自启动:chkconfig atd on

        启动状态查看:service atd status

        at 命令的访问控制是依靠 /etc/at.allow(白名单,优先级更高)和 /etc/at.deny(黑名单)这两个文件来实现的

        系统中默认只有 /etc/at.deny 文件,而且这个文件是空的,因此,系统中所有的用户都可以使用 at 命令。

crontab 命令

功能:设置需要周期执行的任务

选项

功能

-u user

用来设定某个用户的 crontab 服务,例如 "-u demo" 表示设备 demo
用户的 crontab 服务,此选项一般有 root 用户来运行。

-e

打开的是一个空文件,操作方法和 Vim 一致

-l

显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。

-r 

/var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。 

-i

在删除用户的 crontab 文件时,给确认提示。

特殊符号

含义

*(星号)

代表任何时间

第一个"*"  一小时当中的第几分钟(minute)  0~59

第二个"*"  一天当中的第几小时(hour)  0~23

第三个"*"  一个月当中的第几天(day)  1~31

第四个"*"  一年当中的第几个月(month)  1~12

第五个"*"  一周当中的星期几(week)  0~707都代表星期日)

,(逗号)

代表不连续的时间。比如"0 81216***命令"就代表在每天的 8 0 分、12 0 分、16 0 分都执行一次命令。

-(中杠)

代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 0 分执行命令。

/(正斜线)

代表每隔多久执行一次。比如"*/10****命令",代表每隔 10 分钟就执行一次命令。

时间

含义

45 22 ***命令

22 45 分执行命令

0 17 ** 1命令

在每周一的 17 0 分执行命令

0 5 115**命令

在每月 1 日和 15 日的凌晨 5 0 分执行命令

40 4 ** 1-5命令

在每周一到周五的凌晨 4 40 分执行命令

*/10 4 ***命令

在每天的凌晨 4 点,每隔 10 分钟执行一次命令

0 0 115 * 1命令

在每月 1 日和 15 日,每周一个 0 0 分都会执行命令,注意:星期几和几日最好不要同时出现,因为它们定义的都是天,非常容易让管理员混淆

注意事项

        使用 crontab命令,读者需提前安装好 crond软件包,并开启 crond 服务

        查看 crond 软件包是否已安装,可以使用 rpm -q 命令

        查看是否安装命令:rpm –q crond

        若未安装,则使用命令安装:yum install crond

        at 命令要想正确执行,还需要 启动crond 服务。

        启动命令:service crond start

        开机自启动:chkconfig crond on

        启动状态查看:service crond status

        crond命令的访问控制是依靠 /etc/ crond.allow(白名单,优先级更高)和 /etc/ crond.deny(黑名单)这两个文件来实现的

        系统中默认只有 /etc/crond.deny 文件,而且这个文件是空的,因此,系统中所有的用户都可以使用 crond命令。

[an@localhost 20220521]$ crontab -e    // 进入 crontab 编辑界面
no crontab for an - using an empty one
crontab: installing new crontab
"/tmp/crontab.A0NLfF":1: bad day-of-week
errors in crontab file, can't install.
Do you want to retry the same edit? y  // 有语法错误是否修改,y/n
crontab: installing new crontab
[an@localhost 20220521]$ crontab -l      // 查看当前crontab周期任务
30 23 * * 5 echo "process test" >> process_test.txt

进程与文件权限

特殊权限有三位:用户置位s(SUID)、组置位s(GUID)和粘着置位t(Sticky)

设置方法:

数字形式修改权限时setuid、setgid、sticky的八进制位分别是4000、2000、1000。

字母形式则分别为u+s,g+s,o+t,(删除标记位是u-s,g-s,o-t)

表示上有大小写之分

如果同时开启执行权限和特殊权限,则权限表示字符是小写

如果关闭执行权限开启特殊权限,则权限表示字符是大写

拥有特权的含义:

suid/sgid程序:当SUID位被设置时,进程继承了命令拥有者的权限。

程序的t属性:内存中保存一份运行程序的备份

目录的s属性:在该目录下创建的任何文件及目录属于该目录所拥有的组。

目录的T属性:设置了目录的T属性后1000,由只有该目录的所有者及root才能删除该目录,如/tmp目录就是drwxrwxrwt。

SUID

所有者的执行权限位置上出现了s标志

只能对二进制程序文件设置SUID权限,对Shell脚本文件和目录不起作用

执行设置了SUID权限的程序文件时,进程的所有者变为原程序文件的所有者,而不是执行程序的

用户,也可以理解为执行者继承了文件所有者的权限

前提是用户对该程序文件具有执行权限

[an@localhost 20220521]$ ls -l /usr/bin/cat
-rwxr-xr-x. 1 root root 54160 10月 31 2018 /usr/bin/cat
[an@localhost 20220521]$ cat -n /etc/shadow    // 为cat命令设置SUID权限, 4 说明 SUID 位被设置
cat: /etc/shadow: 权限不够
[an@localhost 20220521]$ su root
密码:
[root@localhost 20220521]# chmod 4755 /usr/bin/cat
[root@localhost 20220521]# su an
[an@localhost 20220521]$ ls -l /usr/bin/cat
-rwsr-xr-x. 1 root root 54160 10月 31 2018 /usr/bin/cat
[an@localhost 20220521]$ cat -n /etc/shadow   // cat命令现在可以访问文件/etc/shadow
     1	root:$6$EDd2k.vnI90ZhTjm$l5mSwENX5.OlerjIf1ps2TJHs4fnTra7EiBlFlamADpA4UsuCwKrTB1lmSPub3WmK4NCX2Lko3cC2e8gPNLTB1::0:99999:7:::
     2	bin:*:17834:0:99999:7:::
     3	daemon:*:17834:0:99999:7:::
     4	adm:*:17834:0:99999:7:::
     5	lp:*:17834:0:99999:7:::
     6	sync:*:17834:0:99999:7:::
     7	shutdown:*:17834:0:99999:7:::
     8	halt:*:17834:0:99999:7:::
     9	mail:*:17834:0:99999:7:::
.......
[an@localhost 20220521]$ su root
密码:
[root@localhost 20220521]# chmod 0755 /usr/bin/cat   // 删除cat命令的SUID权限
[root@localhost 20220521]# ls -l /usr/bin/cat
-rwxr-xr-x. 1 root root 54160 10月 31 2018 /usr/bin/cat

GUID

SBIT

出现在目录的其他人的执行权限位置上的t标志

只能对目录设置SBIT权限

用户在目录中新建的文件和目录,只有该用户本身和root用户能够删除

SBIT权限生效的前提是用户对目录具有执行和写权限

课件:
[zys@centos7 ~]$ ls  -ld  /tmp
drwxrwxrwt.     27    root    root      4096     1月 14 17:52      /tmp
[zys@centos7 ~]$ cd  /tmp
[zys@centos7 tmp]$ touch  zys_file
[zys@centos7 tmp]$ mkdir  zys_dir2
[zys@centos7 tmp]$ ls  -ld  zys*
drwxr-xr-x.    2     zys     devteam     6     1月 14 20:03 	    zys_dir2      // 没有继承SBIT权限
-rw-r--r--.      1     zys     devteam     0      1月 14 20:03 	    zys_file
[zys@centos7 tmp]$ su  - andy
[andy@centos7 ~]$ rm  /tmp/zys_file
rm:是否删除有写保护的普通空文件 "/tmp/zys_file"?y
rm: 无法删除"/tmp/zys_file": 不允许的操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值