Linux——进程管理

目录

作业和进程的概念

程序与进程的关系

查看进程信息------ps,top

ps命令

top命令

设置进程的优先级------nice,renice

nice命令

renice命令

查看进程信息------pgrep,pstree

pgrep命令

pstree命令

切换进程------jobs,bg,fg

前台、后台作业

终止进程------kill

计划任务管理------at

计划任务管理------crontab

crontab任务的配置格式

添加crontab调度


作业和进程的概念

Linux是一个多用户多任务的操作系统。

多用户是指多个用户可以在同一时间使用计算机系统; 多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。

为了完成这些任务,系统上同时运行着多个进程,正在执行的一个或多个相关进程称为一个作业。

程序与进程的关系

程序: 保存在硬盘、光盘等介质中的可执行代码和数据 是静态保存的代码。

进程:在CPU及内存中运行的程序代码 是动态执行的代码 父、子进程:每个进程可以创建一个或多个进程。

进程与程序是有区别的进程不是程序,虽然它由程序产生。程序只是一个静态的指令集合,不占系统的运行资源:而进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。而且一个程序可以启动多个进程。

进程:程序的动态执行过程;一个程序可以有多个进程;一个或多个相关进程有时也被称作一个作业

查看进程信息------ps,top

ps命令

用途:显示正在执行的进程统计信息

格式:常用:ps [选项]

常用命令选项

  • -A
  • -a:终端上的所有进程
  • -e:系统中的所有进程
  • -l:长格形式
  • -u:面向用户的格式
  • -x:后台进程的信息

PID:该进程在系统中的数字ID号,在当前系统中是唯一的;

top命令

用途:查看动态的进程排名信息

设置进程的优先级------nice,renice

nice命令

是反应一个进程优先级状态的值,取值范围是-20至19,一共40个级别。 这个值越小,表示进程"优先级"越高,而值越大"优先级"越低。

直接运行nice,显示当前程序的运行优先级;

格式:nice [-优先级] 命令

#nice

#0

#nice -n 21 nice

#19

#nice -5 ftp #调整ftp进程的优先级为5

#nice --5 ftp #调整ftp进程的优先级为-5

renice命令

对一个正在运行的进程进行nice值的调整。

格式:renice 优先级值 [选项] 命令

常用命令选项

  • -p:进程号所标识进程的优先级
  • -u:指定用户所启动进程的优先级
  • -g:群组

renice 8 -p 2896

查看进程信息------pgrep,pstree

pgrep命令

用途:根据特定条件查询进程PID信息

[root@localhost ~]# pgrep "init"

1

[root@localhost ~]# pgrep -l "log"

2538 syslogd

2541 klogd

3221 login

pstree命令

用途:以树型结构显示各进程间的关系

[root@localhost ~]# pstree -aup

init,1

├─acpid,2866

├─atd,3060

├─auditd,2516

│ ├─python,2518 /sbin/audispd

│ └─{auditd},2517

├─automount,2842 ......

切换进程------jobs,bg,fg

显示作业命令

jobs -p 进程号

jobs -l 进程号+作业号

ctrl+Z 挂起当前作业

ctrl+C 终止当前作业

前台、后台作业

前台和后台运行作业作业可以在前台,也可以在后台运行,在同时间只能有一个作业在前台运行。前台作业是指正对它进行交互操作的作业,它从键盘接受输入,并将输出送往屏幕。另一方面,后台作业不接受中断的输入。它们在运行时不需要交互操作,只是默默运行。

bg [作业号] #前台→后台

fg [作业号] #后台→前台

将一个作业放到后台运行的一种方法是在命令后面加"&"字符,ex:$ yes >/dev/null &

终止进程------kill

kill -s 信号| -p 进程号

kill -l [信号]

kill 进程号

kill -9 用于强制终止

当使用作业号来标识作业时,在作业号前面要加"%" 。若该作业的作业号为1,可用下面的命令

$ ki11 %1

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

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

计划任务管理------at

在指定的日期、时间点自动执行预先设置的一些命令操作,属于一次性计划任务

服务脚本名称:/etc/init.d/atd

设置格式:at [HH:MM] [yyyy-mm-dd]

[root@localhost ~]# service atd start

启动 atd: [确定]

[root@localhost ~]# at 23:45

at> shutdown -h now

at> <EOT>

job 1 at 2009-09-14 23:45 # 按Ctrl+D键提交任务

[root@localhost ~]# atq 1

2009-09-14 23:45 a root

计划任务管理------crontab

按照预先设置的时间周期(分钟、小时、天......)重复执行用户指定的命令操作,属于周期性计划任务

管理cron计划任务

编辑计划任务:crontab -e [-u 用户名]

查看计划任务:crontab -l [-u 用户名]

删除计划任务:crontab -r [-u 用户名]

ex:

[root@localhost root]# crontab -l -u jerry

55 23 * * 7 /bin/cp /etc/passwd /home/jerry/pwd.txt

[root@localhost root]# crontab -r -u jerry

[root@localhost root]# crontab -l -u jerry

no crontab for jerry

crontab任务的配置格式

时间数值的特殊表示方法

  • * 表示该范围内的任意时间
  • , 表示间隔的多个不连续时间点
  • - 表示一个连续的时间范围
  • / 指定间隔的时间频率

应用示例

0 17 * * 1-5 周一到周五每天17:00

30 8 * * 1,3,5 每周一、三、五的8点30分

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

0 * */3 * * 每隔3天

添加crontab调度

vi crontab -e

00 17 * * 5 tar -czf /home/hellon/data /backup/hellen-data.tar.gz

示例1(root用户):

每天早上7:50自动开启sshd服务,22点50时关闭

50 7 * * * systemctl start sshd

50 22 * * * systemctl stop sshd

每隔5天清空一次FTP服务器公共目录/var/ftp/pub

* * */5 * * rm -rf /var/ftp/pub/*

每周六的7:30时,重新启动httpd服务

30 7 * * 6 restart httpd

每周一、三、五的17:30时,打包备份/etc/httpd目录

30 17 * * 1,3,5 tar -zcvf /backup/httpd_backup_$(date +\%Y\%m\%d).tar.gz /etc/httpd

示例2(jerry用户):

每周日晚上23:55时将"/etc/passwd"文件的内容复制到宿主目录中,保存为pwd.txt文件

55 23 * * 7 cp /etc/passwd /home/jerry/pwd.txt

相关推荐
耶啵奶膘1 小时前
uniapp-是否删除
linux·前端·uni-app
_.Switch2 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
2401_850410832 小时前
文件系统和日志管理
linux·运维·服务器
JokerSZ.2 小时前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
XMYX-03 小时前
使用 SSH 蜜罐提升安全性和记录攻击活动
linux·ssh
芯盾时代3 小时前
数字身份发展趋势前瞻:身份韧性与安全
运维·安全·网络安全·密码学·信息与通信
心灵彼岸-诗和远方4 小时前
DevOps业务价值流:架构设计最佳实践
运维·产品经理·devops
一只哒布刘4 小时前
NFS服务器
运维·服务器
苹果醋35 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
二十雨辰5 小时前
[linux]docker基础
linux·运维·docker