Linux Shell nohup命令用法(内含代码演示)

哎,这nohup命令啊,在Linux Shell里头,那可真是挺有用的。
你想想,有时候咱们得让个脚本啊,程序啊,在后台默默运行,不干扰咱们做其他事,这不就来了。
来,我给你举个例子。

比如说2 02 2 年,我在某个城市,有个脚本叫/root/start.sh,我得让它自己运行,不用我看着。
那我就得写个命令,nohup /root/start.sh &。
这回它就在后台跑了,终端关了也不影响。

不过啊,这命令有个默认行为,就是输出会自动送到当前目录下的nohup.out文件。
你想自定义输出文件?那也简单,比如你写个命令:nohup ./startdishi.sh > output2 > &1 &。
这回输出和错误信息都到output文件里去了。

注意事项嘛,得记牢。
关闭终端的时候,别直接点那个关闭按钮,得先回到命令行窗口,输个exit。
不然,nohup的进程可能会被误杀。

文件权限也是个问题,要是nohup.out写不了,它就自动转到$HOME/nohup.out。
要是那儿也写不了,那命令就执行不了了。

后台任务嘛,你可以用jobs命令看看,当前有哪些后台任务。
要是你想把某个后台任务弄回前台,就用fg%n,%n是那个任务的作业号。

最后,说个退出状态。
nohup命令的退出状态就是它执行的命令的退出状态,除非出错了,那它就返回个特定的错误码。

linux之怎么停止正在执行的脚本

上周有个客人问我Linux里怎么停止一个正在运行的脚本,我就给他详细解释了一下。
其实,这事儿还挺简单的,主要就两种方法。

第一种方法啊,就是最直接的那个,用Ctrl+C。
这招儿适用于脚本在终端前台运行,而且用户有权限控制。
操作起来也很简单,直接按Ctrl+C,系统就会给当前进程发个SIGINT信号,脚本就会正常停下来。

不过啊,这招儿有个限制,就是它只能对付前台运行的脚本。
要是脚本在后台跑着,比如用&符号启动的,那这招儿就不灵了。

那第二种方法呢,就是用kill命令来终止进程。
首先你得找到进程ID,也就是PID。
你可以用ps -ef | grep 脚本名来查找。
比如你想找bench.sh这个脚本,你就输入ps -ef | grep bench.sh。
这样就能看到脚本对应的PID了。

找到了PID之后,你就可以用kill命令来终止进程了。
最常用的就是输入kill PID,这样会发送SIGTERM信号,让进程有机会清理一下资源再退出。

要是进程没反应,你也可以用kill -9 PID来强制终止,不过这招儿要慎用,万一数据没保存好,那可就麻烦了。

最后,别忘了再检查一下,用ps -ef | grep 脚本名确认一下进程是不是真的停止了。
要是还没停,你可能得重新操作一下,或者检查一下是不是操作错了。

总之,终止脚本的方法还是很多的,关键是要根据实际情况来选择。
不过,记得在终止进程之前确认一下它的用途,别误杀了系统关键进程。
要是脚本是通过守护进程或者服务管理工具启动的,那最好就用相应的工具来停止它,比如systemctl stop。
反正你看着办吧。
我还在想这个问题,毕竟每个脚本的情况都不太一样。

linux nohup命令

说实话,这个nohup命令啊,就是在Linux下面用,让人家跑起来的命令,你走开它也不挂。

具体咋用呢?你看啊,就说nohup command &,command就是你想让它跑的命令,&就是扔到后台去。
比如你想让某个脚本跑一晚上,你直接nohup script.sh &,打完这行就回去了,不用守着。

它输出的东西呢,默认会写到nohup.out这个文件里。
要是当前文件夹写不了,就往你家目录里写。
你要是想自己指定个文件,比如叫output.txt,你就这么写nohup command > output.txt &。

这玩意儿特别适合啥时候?比如你做个数据跑一下,可能要几个小时,你不用一直开着终端,它自己跑。
就像我上次跑个模型,跑了八个小时,我关机去睡觉了,第二天起来数据还在跑。

要注意一点,用完nohup扔后台后,你得按键盘任意键,退回命令行界面,再打exit退出。
要是你直接关闭终端,它就不管了,继续跑。
但你要是正常用exit登出,它就给你发个信号,让你停。
所以啊,突然断网关机的时候,它能保住你的任务。