Linux 进程调度快速上手

一、预备知识

1 快应用

命令含义
&这个用在一个命令的最后,可以把这个命令放到后台执行
jobs查看当前有多少在后台运行的命令
jobs -l显示PID,比jobs更好用
fg将后台中的命令调至前台继续运行,如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
bg将一个在后台暂停的命令,变成继续执行,如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
ps列出系统中正在运行的进程,会显示PID
kill pid发送信号给一个或多个进程(经常用来杀死一个进程)
kill -stop pid暂停PID为pid的任务
history查看当前用户的历史命令

2 理解

  • 前台任务:”前台任务”(foreground job)是独占命令行窗口的任务,只有运行完了或者手动中止该任务,才能执行其他命令。
  • 后台任务:与前台任务相对应,在多任务系统中,有一些任务在运行的时候,并不需要与用户交互。它们通常在不打扰用户其它工作的时候默默地执行(此时可以输入其他的命令)。
  • 后台任务的特点:继承当前session(对话)的标准输出(stdout)和标准错误(stderr)。因此,后台任务的所有输出依然会同步地在命令行下显示。不再继承当前session的标准输入(stdin)。你无法向这个任务输入指令了。如果它试图读取标准输入,就会暂停执行(halt)。
  • ”后台任务”与”前台任务”的本质区别只有一个:是否继承标准输入。所以,执行后台任务的同时,用户还可以输入其他命令。
  • 当前任务:默认当前任务为[1]的任务,如果后台的任务号有2个,[1],[2];如果当第一个后台任务顺利执行完毕,第二个后台任务还在执行中时,当前任务便会自动变成后台任务号码“[2]”的后台任务。所以可以得出一点,即当前任务是会变动的。当用户输入“fg”、“bg”和“stop”等命令时,如果不加任何引号,则所变动的均是当前任务。表示是当前任务,-表示的是当前作业之后的一个作业。
  • 守护进程(daemon)是指在UNIX或其他多任务操作系统中在后台执行的电脑程序,并不会接受电脑用户的直接操控。此类程序会被以进程的形式初始化。守护进程程序的名称通常以字母“d”结尾:例如,syslogd就是指管理系统日志的守护进程。用户退出session之后,后台任务是否会继续执行是判定是否为“守护进程”的依据

session退出之后,linux系统设计如下:

  1. session就是我们平常所说的终端窗口
  2. 用户准备退出 session
  3. 系统向该 session 发出SIGHUP信号
  4. session 将SIGHUP信号发给所有子进程
  5. 子进程收到SIGHUP信号后,自动退出
    前台任务会随着session的退出而退出是因为它收到了SIGHUP信号。后台任务是否会收到SIGNUP信号,取决于shell的 huponexit 参数。可以通过 shopt | grep huponexit 查看该参数的值。大多数Linux系统,这个参数默认关闭(off)。因此,session退出的时候,不会把SIGHUP信号发给”后台任务”,即此时的后台任务是守护进程。

二、命令操纵

1 提交

nohup 命令
用途:不挂断地运行命令。
语法:nohup Command [ Arg … ] [ & ]
例子:

nohup yourcommand &
  • yourcommand:你的命令,比如 ./a.sh
  • 将“你的命令”的输出默认保存到nohup.out中,若nohup.out存在,就追加
  • &指的是在后台运行
nohup command > myout.file 2>&1 &
  • 将输出保存到myout.file
  • 0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ;0是标准输入,1是标准输出,2是标准错误
  • 2>&1含义是将标准错误(2)重定向到标准输出(&1)
  • > myout.file标准输出再重定向到指定文件
nohup ./command.sh >/dev/null 2>&1 &
  • /dev/null文件是一个无底洞,何东西都可以定向到这里,但是却无法打开。 所以一般很大的stdout和stderr当你不关心的时候可以利用stdout和stderr定向到这里。

2 查看

jobs			# 显示提交的指令
jobs -l			# 比 job 多显示 PID
ps -ef			# e显示所有进程(等价于-A), f 全部列出,通常和其他选项联用
ps -ef | grep xxx 	# 用grep来控制显示的命令
history 		# 查看历史命令
top				# 实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器

下面是top的详细介绍

https://www.cnblogs.com/niuben/p/12017242.html

比较重要的有

在这里插入图片描述

3 结束/暂停/继续

kill pid			# 杀死一个进程
kill -9 pid			# 必杀一个进程
kill -l 			# 查看Linux/Unix的信号变量, 上面的9就是一个信号编号,它指代一种信号变量
pkill -u usr		# 杀死用户 usr 的所有进程
kill -stop pid		# 暂停 pid 的进程
bg n				# 开始 n(通过 jobs 查看) 的进程
# 其他杀死一个用户的所有进程
ps -ef | grep usr | awk '{ print $2 }' | sudo xargs kill -9
killall -u ttlsa

参考

https://blog.csdn.net/hust_sheng/article/details/50766752
https://www.cnblogs.com/keystone/p/11159665.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流浪猪头拯救地球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值