关于后台挂载,进程管理的学习

19 篇文章 2 订阅

一、关于命令后台挂载的操作:

1.linux后台运行的命令语法

nohup command > /dev/null 2>&1 &

2.对nohup和&的解释

结尾的可以让命令在后台运行,使得当前的终端(控制台)可以继续使用,但是将终端关闭或是退出用户后,这个在后台跑的相关进程就会停止。

nohup 表示不挂断地运行命令。输入这个命令,关闭终端后或者是退出当前的账号,进程仍然存在,但是单独在命令前添加nohup,还是会占用当前的终端,只能等命令运行完,才可以再用这个终端输入命令。

得到的标准输出或是标准错误会输出到当前目录的nohup.out文件里。

使用nohup和&挂载命令后,要使用 exit 退出当前用户,保证后台任务不会被打断或终止。

[F@localhost test]$ sh md.sh &
[1] 1905
[F@localhost test]$ jobs
[1]+ running                    sh md.sh &

 在命令后加上&后,会得到一个进程号(PID),比如这里的1905就是sh md.sh这个命令的PID

命令 jobs 可以查看当前终端后台运行的进程, jobs -l可以查看进程号,jobs有三种状态:running、stopped、Terminated(任务被终止)

ps查看这个终端后台的任务,会发现md.sh这个sh脚本里写的命令运行会再占用一个进程!

[F@localhost test]$ ps
  PID  TTY        TIME  CMD
 1905 pts/1   00:00:00  sh
 1910 pts/1   00:05:54  pmemd
 6660 pts/1   00:00:00  ps
29252 pts/1   00:00:00  bash

2.命令中一些符号的解释

/dev/null 表示空设备文件,被叫做黑洞,所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到,对处理不需要的数据流很有用。

数字0表示stdin(标准输入,standard input)

数字1表示stdout(标准输出,standard output)

数字2表示stderr(标准错误,standard error)

1 > /dev/null 表示将标准输出的数据输出到空设备文件中,而这里1默认下可以省略,就有了上面命令的 > /dev/null

所以说,1 > /dev/null > /dev/null 的效果是一样的 。

2>&1 表示将标准错误的内容输入到标准输出中,在这里,就是将标准错误也输入到 /dev/null

> 和 >> 用于数据流的重定向,这里的 > 表示覆盖, >> 表示追加

二、后台进程管理

1.简介

ps输出的后台任务状态是静态的,想查看动态的后台任务情况,使用命令top

2.一些常用的命令和选项搭配

停止一个进程:

#停止一个后台进程:
kill -stop <PID>

#停止一个前台进程:
Ctrl+Z

将停止的进程恢复运行:

#查看当前bash后台的运行的进程:
[F@localhost test]$ jobs -l
[1]+  32151 Stopped                 sh run.sh

#将当前bash停止的后台进程任务再次运行,同样是在后台运行:
[F@localhost test]$ bg %1

#放到前台运行:
[F@localhost test]$ fg %1
[1]+  32151 Running                 sh run.sh

将运行的进程杀死:

[F@localhost test]$ kill -9 32151
[1]+   Killed                         sh run.sh

查看所有终端后台的进程任务:

ps -ef > all_work.txt

查看指定命令的进程:

#查找命令中有sh run.sh关键字的进程,同时显示表头:
ps -ef|egrep "(UID|sh run.sh)"

#查看指定的pid、ppid和cmd信息:
ps -efo pid,ppid,cmd |egrep "(UID|sh run.sh)" 

 关于ps的-e、-f和-o选项:

-e(exact) 可以查看到当前终端外的后台任务

-f可以让命令信息显示完整,方便查找

-o 后接指定输出的信息列名,用 隔开

我用kill将一个进程杀死后,用ps查看还是能看到这个进程(可能光杀死子进程不行,还要杀死父进程),如何判断这个进程是否被真的杀死:

#用kill 0 <PID> 进行判断:
#$?查看返回值,为0表示进程存在,为1表示进程不存在
[F@localhost test]$ kill -0 7583 
bash: kill: (7583) - No such process
[F@localhost test]$ echo $?
1
[F@localhost test]$

#用ps进行查看:
[F@localhost test]$ ps -ef |grep "7583"

三、参考文章:

linux后台执行命令:&和nohup

 Shell脚本———— /dev/null 2>&1详解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

黄思博呀

真的有人打赏啊,超级感谢!

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

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

打赏作者

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

抵扣说明:

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

余额充值