点击上方“方志朋”,选择“设为星标”

做积极的人,而不是积极废人

大家可能有这样的体验:某个程序运行的时候,会产生大量的log,但实际上我们只想让它跑一下而已,log暂时不需要或者后面才有需要。所以在这样的情况下,我们希望程序能够在后台进行,也就是说,在终端上我们看不到它所打出的log。为了实现这个需求,我们介绍以下几种方法。

我们以下面一个test程序来模拟产生大量log的程序,这个程序每隔1秒就会打印一句“Hello world!”:

#include
#include
#include int main()
{fflush(stdout);setvbuf(stdout, NULL, _IONBF, 0);while (1) {printf("Hello world!\n");sleep(1);}
}

现在,我们想要一个清静的世界,终端上不要有大量的log出现,我们要求test程序在后台运行。

&

这种方法很简单,就是在命令之后加个“&”符号就可以了,如下:

./test &

这样一来,test程序就在后台运行了。但是,这样处理还不够,因为这样做虽然程序是在后台运行了,但log依然不停的输出到当前终端。因此,要让终端彻底的清静,还应将log重定向到指定的文件:

./test >> out.txt 2>&1 &

2>&1是指将标准错误重定向到标准输出,于是标准错误和标准输出都重定向到指定的out.txt文件中,从此终端彻底清静了。

但是这样做要注意,如果Test程序需要从标准输入接收数据,它就会在那死等,不会再往下运行。所以需要从标准输入接收数据,那这种方法最好不要使用。

那现在程序在后台运行了,我们怎么找到它呢?很简单,有两种方法:

1. jobs命令

jobs命令可以查看当前有多少在后台运行。

jobs -l

此命令可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。

2. ps命令

ps aux | grep test

nohup命令

在命令的末尾加个&符号后,程序可以在后台运行,但是一旦当前终端关闭(即退出当前帐户),该程序就会停止运行。那假如说我们想要退出当前终端,但又想让程序在后台运行,该如何处理呢?

实际上,这种需求在现实中很常见,比如想远程到服务器编译程序,但网络不稳定,一旦掉线就编译就中止,就需要重新开始编译,很浪费时间。

在这种情况下,我们就可以使用nohup命令。nohup就是不挂起的意思( no hang up)。该命令的一般形式为:

nohup ./test &

如果仅仅如此使用nohup命令的话,程序的输出会默认重定向到一个nohup.out文件下。如果我们想要输出到指定文件,可另外指定输出文件:

nohup ./test > myout.txt 2>&1 &

这样一来,多管齐下,既使用了nohup命令,也使用了&符号,同时把标准输出/错误重定向到指定目录下。

使用了nohup之后,很多人就这样不管了,其实这样有可能在当前账户非正常退出或者结束的时候,命令还是自己结束了。所以在使用nohup命令后台运行命令之后,需要使用exit正常退出当前账户,这样才能保证命令一直在后台运行。

热门内容:   

  • Logback配置文件这么写,TPS提高10倍

  • Linux性能检测常用的10个基本命令

  • 搞懂限流算法这一篇就够了 No.154

  • 那些年,我们见过的 Java 服务端乱象

  • IDEA万能快捷键,你必须知道的17个实用技巧,提升撸码效率!

  • Linus 谈 Git 的设计思想,顺带骂了一堆人(视频)

  • 彻底透析SpringBoot jar可执行原理

喜欢就点个"在看"呗^_^

linux后台执行命令:amp;与nohup的用法相关推荐

  1. linux后台执行命令:和nohup

    当我们在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更重要的事情要做,比如阅读电子邮件.对于密集访问磁盘的进程,我们更希望它能够在每天的非负荷高峰时间段运行(例如凌晨).为 ...

  2. Linux后台执行命令

    2019独角兽企业重金招聘Python工程师标准>>> Linux 后台执行命令 ###摘要:### 当你在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更 ...

  3. linux 命令 抛后台,Linux 后台执行命令

    场景 python 代码,打印1~3000,每秒打印一次 ## file_name: test.py import time i = 0 while 1: time.sleep(1) i = i + ...

  4. linux+后台运行+nohup,Linux后台运行命令集(、fg、bg、jobs、nohup、ctrl + z)

    Linux后台运行命令集(&.fg.bg.jobs.nohup.ctrl + z) 1).& 命令或进程最后加上"&",可以把此操作放到后台执行: 2).c ...

  5. linux后台运行命令,nohup

    linux后台运行命令 1.& 当结束终端时,进程就会停止 command & 例子: ./test.sh & 2.nohup 为不挂起进程的意思 如下时会使得应用在关闭终端时 ...

  6. inux 后台执行命令

    为什么80%的码农都做不了架构师?>>>    1.cron 系统调度进程.是SHELL一个LUNX下的定时执行工具,在无需人工干预下进行作业. $/sbin/service cro ...

  7. linux后台运行命令总结

    linux后台运行命令总结 问题: 我们有时候需要登录远程服务器跑运行时间非常长的脚本,这个时候你要让脚本后台运行,不然占着终端窗口看着不舒服.但万一网络不好,(比如我这儿的破校园网,高峰时几秒钟断一 ...

  8. linux系统让一个命令在后台运行,Linux——Linux后台运行命令详述

    本次主要讲述后台运行命令(crontab,at,&,nohup)及(*,?,[])等 • 设置c r o n t a b文件,并用它来提交作业. • 使用a t命令来提交作业. • 在后台提交 ...

  9. linux后台执行shell脚本

    目的:Linux后台执行脚本并监控 编写shell脚本 vi /tmp/ceshi.sh #!/bin/sh while [ true ]; dosrync -avzP src dest /bin/s ...

最新文章

  1. 人工智能技术在内容行业的应用:AI对中长尾内容平台还是奢侈品
  2. 三星自动驾驶汽车路测获批,进军无人驾驶领域
  3. 【Python算法】哈希存储、哈希表、散列表原理
  4. Failed to install DroidIPCam.apk on device 'emulator-5554': timeout
  5. DPM灾难切换应用场景
  6. php ab压力测试,安装Xcache缓存加速php及ab压力测试结果
  7. 拼多多市值创新高,成中国第四大互联网公司!
  8. html5+上下左右边界顺序,详解canvas绘制多张图的排列顺序问题
  9. Android-LayoutInflater
  10. 485通信c语言编程linux,485通讯问题(C语言)
  11. gradle java ide_用最简单的gradle代码,解决你java项目中的jar依赖之苦
  12. 使用webgl(three.js)搭建一个3D智慧园区、3D建筑,3D消防模拟,web版3D,bim管理系统——第四课
  13. 影单:分享一下最近在看的一些电影
  14. Mysql-如何进行慢SQL查询
  15. Python 小写数字转为大写
  16. 帧中继网络与NBMA/P2MA
  17. MySQL 8.0 可以操作 JSON 了!!
  18. 小游戏开发指南及过程中的难点问题
  19. Spring @InitBinder注解
  20. 正式开赛|2023年“桂林银行杯”数据建模大赛暨全国大学生数学建模竞赛广西赛区热身赛

热门文章

  1. python命令行参数解析OptionParser类用法实例
  2. 数据结构_顺序栈的代码实践
  3. RXJAVA之变换操作
  4. 【BZOJ3963】[WF2011]MachineWorks cdq分治+斜率优化
  5. iOS单个应用程序的最大可用内存是多少?
  6. Installshield 2015 实现检测某安装文件是否存在并运行安装
  7. 深入解析CSS样式层叠权重值
  8. Android Layer List 使用实现实例
  9. Android 4.2真坑爹
  10. Flash/Flex学习笔记(4):如何打开网页及Get/Post数据