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

一:程序,进程,线程之间的关系
1.1:进程概述:
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
二:查看进程:
ps命令,查看静态的进程统计信息(Processes Statistic):

ps命令基本格式
ps [选项]  注意:有一些选项时不带“-”前缀的(添加“-”前缀后含义可能会有出入)
a  显示当前终端下的所有进程信息,包括其他用户的进程、与“x”选项结合时将显示系统中所有的进程信息
u  使用以用户为主的格式输出进程信息
x  显示当前用户在所有终端下的进程信息
-e 显示系统内的所有进程信息
-l 使用长(Long)格式显示进程信息
-f 使用完整的(Full)格式显示进程信息

ps aux命令 以简单列表的形式显示出进程信息:

[root@localhost ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.2  0.3 193700  6836 ?        Ss   22:38   0:01 /usr/lib/systemd/syst
root          2  0.0  0.0      0     0 ?        S    22:38   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    22:38   0:00 [ksoftirqd/0]
root          4  0.0  0.0      0     0 ?        S    22:38   0:00 [kworker/0:0]
root          5  0.0  0.0      0     0 ?        S<   22:38   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    22:38   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    22:38   0:00 [rcu_bh]
..以下省略部分内容


ps -elf 命令:以长格式显示系统中的进程信息:

[root@localhost ~]# ps -elf
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root          1      0  0  80   0 - 32041 ep_pol 23:04 ?        00:00:00 /usr/l
1 S root          2      0  0  80   0 -     0 kthrea 23:04 ?        00:00:00 [kthre
1 S root          3      2  0  80   0 -     0 smpboo 23:04 ?        00:00:00 [ksoft
1 S root          4      2  0  80   0 -     0 worker 23:04 ?        00:00:00 [kwork
1 S root          5      2  0  60 -20 -     0 worker 23:04 ?        00:00:00 [kwork
1 S root          6      2  0  80   0 -     0 worker 23:04 ?        00:00:00 [kwork
1 S root          7      2  0 -40   - -     0 smpboo 23:04 ?        00:00:00 [migra
1 S root          8      2  0  80   0 -     0 rcu_gp 23:04 ?        00:00:00 [rcu_b
1 R root          9      2  0  80   0 -     0 -      23:04 ?        00:00:00 [rcu_s
..此处省略部分信息

ps aux | grep "bash"命令:

[root@localhost ~]# ps aux | grep "bash"
root        655  0.0  0.0 115256   924 ?        S    23:04   0:00 /bin/bash /usr/sbin/ksmtuned
root       1791  0.0  0.0  51332   580 ?        Ss   23:05   0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
root       2422  0.0  0.1 116300  2864 pts/0    Ss+  23:05   0:00 bash
root       2482  0.0  0.1 116044  2776 pts/1    Ss   23:06   0:00 -bash
root       2536  0.0  0.0 112680   984 pts/1    S+   23:07   0:00 grep --color=auto bash


动态查看 top命令:

top - 23:17:10 up 12 min,  3 users,  load average: 0.00, 0.04, 0.06
Tasks: 185 total,   1 running, 184 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni, 99.7 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1867024 total,   670880 free,   669584 used,   526560 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.   986308 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND       
  1833 root      20   0 1624108 168500  51624 S  0.0  9.0   0:02.26 gnome-shell   
  1983 root      20   0 1100816  63532  20704 S  0.0  3.4   0:00.10 evolution-cal+
  2083 root      20   0 1202856  59344  19216 S  0.0  3.2   0:00.08 evolution-cal+
  2040 root      20   0 1040248  59132  19108 S  0.0  3.2   0:00.06 evolution-cal+
  1994 root      20   0  884268  32724  14160 S  0.0  1.8   0:00.31 gnome-software
  1392 root      20   0  288368  30804  10276 S  0.0  1.6   0:00.40 X             
  1965 root      20   0 1026108  30296  18916 S  0.0  1.6   0:00.20 nautilus-desk+

查看进程信息 pgrep 和 pstree:

“-l”选项显示进程名
[root@localhost ~]# pgrep -l "log"		'//查询进程名中包含“log”的进程及其PID号'
282 xfs-log/sda2
444 xfs-log/sda5
445 xfs-log/sda1
555 systemd-logind
561 abrt-watch-log
580 abrt-watch-log
597 rsyslogd
640 mcelog


pstree命令:

[root@localhost ~]# pstree -aup		'//查看当前系统的进程树(包括各进程对应的PID号,用户名,完整命令等信息)'
systemd,1 --switched-root --system --deserialize 21
  ├─ModemManager,601
  │   ├─{ModemManager},631
  │   └─{ModemManager},635
  ├─NetworkManager,667 --no-daemon
  │   ├─dhclient,791 -d -q -sf /usr/libexec/nm-dhcp-helper -pf...
  │   ├─{NetworkManager},676
  │   └─{NetworkManager},678
..省略部分信息

三:控制进程:
手工启动:

[root@localhost ~]# cp /dev/cdrom mycd.iso&		'//在后台运行复制镜像文件进程'
[1] 3227		'//输出信息中心包括后台任务序号,PID号'


改变进程的运行方式:
挂起当前进程 Ctrl+Z 组合键:
将当前进程挂起,即调入后台并停止执行(对于速度缓慢,会耽误其他操作的进程使用
查看后台进程 jobs 命令:

查看处于后台的任务列表。
结合“-l”选项可以同时显示出该进程对应的PID号
输出结果中,每一行记录对应一个后台进程的状态信息,行首的数字代表该进程在后台的任务编号。
若当前终端没有后台进程,将不会显示任何信息

将后台的进程恢复运行 fg 命令:

将后台进程恢复到前台运行,可以指定任务序号
bg(BackGround)命令可以将后台中暂停执行的任务恢复运行,继续在后台执行操作
fg(ForeGround)命令可以将后台任务恢复到前台运行
除非后台任务只有一个,否则bg和fg命令都需要指定后台进程的任务编号作为参数

at一次性任务设置:
at命令使用顺序

查看时间–>设置时间–>输入命令–>Ctrl + D提交任务

date:查看当前时间。设置任务,时间不可在当前时间之前

命令输入完成后按 Ctrl + D组合键提交任务即可

[root@localhost ~]# date		'//查看当前时间'
2019年 11月 13日 星期三 00:45:58 CST
[root@localhost ~]# at 00:48 2019-11-13 		'//设置任务执行时间'
at> pgrep -U root |wc -l > /tmp/ps.root			'//输入命令(统计该时间点系统中由root用户运行的进程数量,并将数值保存到/tmp/ps.root文件中)'
at> <EOT>		'//按Ctrl + D组合键提交任务'
job 1 at Wed Nov 13 00:48:00 2019
[root@localhost ~]# cat /tmp/ps.root		'//查看任务完成情况'
175


crontab周期性任务设置:

5.1.1: /etc/crontab 全局配置文件

全局配置文件

/etc/crontab 文件中设置的是维护Linux系统所需的任务

Linux系统及相关程序在安装时自动设置

不建议用户手动修改此文
[root@localhost ~]# cat /etc/crontab		'//查看系统任务配置文件'
SHELL=/bin/bash				'//设置执行计划任务的Shell环境'
PATH=/sbin:/bin:/usr/sbin:/usr/bin			'//定义可执行命令及程序的路径'
MAILTO=root				'//将任务输出信息发送到指定用户的邮箱'
HOME=/ 			'//执行计划任务时使用的主目录'

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)		'//分钟范围:0-59'
# |  .------------- hour (0 - 23)		'//小时范围:0-23'
# |  |  .---------- day of month (1 - 31)		'//一个月的天数范围:1-31'
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...		'//月数范围:1-12'
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat		'//一周的天数范围: 0-6(周日用0或者7表示)'
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed


本章实验:
在这里插入图片描述一、使用kill命令终止postfix服务的运行:
在这里插入图片描述二、查找系统中CPU占用率超过80%的进程,并强行终止该进程:
在这里插入图片描述有超过80%的用“kill-9+进程号”即可删除》
三、每周一早上7:50自动清空FTP服务器“/var/ftp/pub”中数据:
在这里插入图片描述四、每天晚上的10:30自动执行任务,完成以下操作
显示当前的系统时间并查看已挂载磁盘分区的磁盘使用情况
将输出结果追加到文件/var/log/df.log中,持续观察硬盘空间变
在这里插入图片描述在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章