Linux后台运行进程
最近在搭建kafka的过程中,发现启动相关服务后,终端界面无法再进行操作。每次都需要开启多个终端界面,实在是特别麻烦。于是就研究了下Linux后台启动程序的方法,并整理了如下的笔记。
1 后台运行的例子
nohup command > /dev/null 2>&1 &
解释:
nohup:
no hangup,不挂断地运行命令。只用nohup命令,关闭终端,进程还存在。若在终端中直接使用Ctrl+c,则会关闭进程。
command:
command是用户输入的命令,可自行设置。如“java -jar crm.jar”等。
&:
后台运行。当你只使用“&”时,关闭终端,进程会关闭。
建议:
所以当你要让程序在后台不挂断运行时,需要将nohup和&一起使用。
2 数字0,1,2的含义
linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1,2。STDIN是标准输入,默认从键盘读取信息;STDOUT是标准输出,默认将输出结果输出至终端;STDERR是标准错误,默认将输出结果输出至终端。
由于STDOUT与STDERR都会默认显示在终端上,为了区分二者的信息,就有了编号的0,1,2的定义,用1表示STDOUT,2表示STDERR。
3 command >/dev/null的含义
/dev/null表示一个空设备,就是说吧command的执行结果重定向到空设备中,说白了就是不显示任何信息。
null是一个名叫null小桶的东西,如果命令的输出不想要即想丢弃输出的内容,既不想在标准输出与不想重定向到某个文件,就可将命令的输出重定向到/dev/null。这样做的好处是不会因为输出的内容过多而导致文件大小不断的增加。
命令“command > /dev/null”是一个缩写版,对于一个重定向命令,肯定是a > b这种形式,那么command > /dev/null难道是command充当a的角色,/dev/null充当b的角色。这样看起来比较合理,其实一条命令肯定是充当不了a,肯定是command执行产生的输出来充当a,其实就是标准输出stdout。所以command > /dev/null相当于执行了command 1 > /dev/null。执行command产生了标准输出stdout(用1表示),重定向到/dev/null的设备文件中。
4 “2>&1”的含义
4.1 command>a 2>a 与 command>a 2>&1的区别
通过上面的分析,对于command>a 2>&1这条命令,等价于command 1>a 2>&1可以理解为执行command产生的标准输入重定向到文件a中,标准错误也重定向到文件a中。那么是否就说command 1>a 2>&1等价于command 1>a 2>a呢。其实不是,command 1>a 2>&1与command 1>a 2>a还是有区别的,区别就在于前者只打开一次文件a,后者会打开文件两次,并导致stdout被stderr覆盖。&1的含义就可以理解为用标准输出的引用,引用的就是重定向标准输出产生打开的a。从IO效率上来讲,command 1>a 2>&1比command 1>a 2>a的效率更高。
4.2 “2>&1”的理解
那么对于2>&1也就好理解了,2就是标准错误,1是标准输出,那么这条命令就是相当于把标准错误重定向到标准输出。所以当程序产生错误的时候,相当于错误流向左边,而左边依旧是输入到/dev/null中。
4.3 再谈nohup命令
如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中(比如:nohup command & ),除非另外指定了输出文件,比如“nohup java -jar yellowstone-web.jar > subcrible-web.log 2>&1 &”。这时,标准输出和标准错误都会保存到subcrible-web.log中。
Linux后台运行进程相关推荐
- Linux后台运行任务nohup结合用法以及如何精准查找进程并kill后台任务实践
转自 https://segmentfault.com/a/1190000021265829?hmsr=toutiao.io&utm_medium=toutiao.io&utm_sou ...
- linux后台运行命令,nohup
linux后台运行命令 1.& 当结束终端时,进程就会停止 command & 例子: ./test.sh & 2.nohup 为不挂起进程的意思 如下时会使得应用在关闭终端时 ...
- linux+后台运行+nohup,Linux后台运行命令集(、fg、bg、jobs、nohup、ctrl + z)
Linux后台运行命令集(&.fg.bg.jobs.nohup.ctrl + z) 1).& 命令或进程最后加上"&",可以把此操作放到后台执行: 2).c ...
- 使用 ffmpeg 下载 m3u8 视频,linux 后台运行 ffmpeg
使用 ffmpeg 下载 m3u8 视频,linux 后台运行 ffmpeg 下载 m3u8 现在的视频大多数都是 m3u8 格式,网上的介绍也不少,那我直接记录一下下载的方法 方法 1 M3U8-D ...
- linux后台运行符号、nohup命令、输出重定向等使用方法
linux后台运行&符号.nohup命令.输出重定向等使用方法 https://blog.csdn.net/zjc/article/details/51484114 在命令最后加上&符 ...
- Linux 后台运行程序 Screen 服务器
Linux后台运行python程序,断网||关机后仍能在继续在服务器上运行 常用screen参数: screen -S sess_name -> 新建一个叫sess_name的session s ...
- linux后台运行命令总结
linux后台运行命令总结 问题: 我们有时候需要登录远程服务器跑运行时间非常长的脚本,这个时候你要让脚本后台运行,不然占着终端窗口看着不舒服.但万一网络不好,(比如我这儿的破校园网,高峰时几秒钟断一 ...
- linux关闭后台运行命令,linux后台运行、关闭、查看后台任务常用命令
一.& 加在一个命令的最后,可以把这个命令放到后台执行,如: [root@bqh-01 ~]# watch -n 3 "sh 1.sh" #每3s在后台执行一次1.sh脚 ...
- Linux后台运行jar命令
Linux后台运行jar命令 1.阿里云打开端口 2.CentOS打开端口 3.Linux后台运行java的jar包 4.Linux查询进程和结束进程 5.Linux chmod命令修改文件与文件夹权 ...
最新文章
- linux 3.4内核初始化,S3C2440移植linux3.4.2内核之内核框架介绍及简单修改
- 生成树的概念,最小生成树Prim算法 Kruskal算法
- Xstream util xml 与 bean之间互转
- POJ 3734 Blocks
- session的使用
- MySQL的恢复脚本
- 年薪40W+还招不到人!人工智能到底有多火?(附人工智能+Python 自学视频资料)...
- 为什么C++编译器不能支持对模板的分离式编译
- Android报加密错误,在android中解密使用aes/gcm/nopadding加密的消息时出错
- JAVA自定义Mybatis注解
- Linux 下载百度网盘大文件
- 中兴ZXDSL831驱动
- Cloudera(CDH) 简介和在线安装
- Python爬虫—爬取网易云音乐【热歌榜】歌曲的精彩评论(写入txt文本文件或者MySQL数据库)
- android 图表实现,Android实现图表绘制和展示
- ROS基础系列(七):机器人的建模与仿真(中)
- ES GEO地理空间查询java版
- 2020写给未来 100w 粉丝的年终总结
- 【OpenCV 学习笔记】—— 基于拉普拉斯金字塔的图像融合原理以及C++实现【或许是全网最通俗易懂的讲解】
- mysql不停机主从配置