关于linux:日常开发中常用命令之-nohup-命令

3次阅读

共计 2193 个字符,预计需要花费 6 分钟才能阅读完成。

之前几篇文章分享了异步接口的实现和原理,基本上都是须要查看源码来辅助了解,说实话,看懂之后可能感觉还好,然而在一开始不太分明的时候浏览源码的确有点干燥,尤其是在你不是很想去理解这个的时候。只有当咱们真正想去理解这个货色的时候可能才会违心花精力去钻研,这时候就不会那么无聊了,反而会感觉在摸索的过程中很乏味。

接下来我开始分享略微轻松一点但又不那么无聊而且很实用的货色,那就是日常中咱们必定会用到很多命令,有一部分是咱们用的比拟频繁,而且又是必备的命令,这些命令咱们须要熟练掌握,这有利于进步咱们日常的工作效率。

首先咱们要晓得所有的命令都是为了帮忙咱们实现一件或多件事件的,也就是在计算机系统中,咱们想要做什么,都须要通过绝对应的命令来通知计算机咱们的需要,如果某个命令常常用,也就阐明这个命令所做的事件咱们常常须要做,上面咱们就依据常见需要来引出绝对应的命令。

后盾启动 SpringBoot 我的项目:

nohup java -jar usercenter.jar --spring.profiles.active=development > usercenter.log 2>&1 &

作为后盾开发人员来说,日常应该常常须要启动我的项目程序,只不过平时本地都是通过 idea 来启动,如果当初须要将 usercenter 我的项目打包部署到一台用于开发测试的服务器上,那么这时候咱们须要将 usercenter 打包,而后拷贝到服务器上,拷贝下来之后再通过 ssh 命令连贯到服务器终端,这里假如服务器都曾经是装置好了 Java 的运行时环境。接下来咱们就能够启动方才拷贝上来的 jar 包了。失常前台启动的命令是:

java -jar usercenter.jar --spring.profiles.active=development

然而这种形式是前台启动,日志间接输入到终端,这对于一次性启动的我的项目那还好,启动完测试好了间接敞开终端断开服务器连贯就好,然而如果想要在咱们退出终端后让它放弃持续运行的话就不行了,因为下面的这种形式在咱们退出终端的同时程序也进行运行了。这时候就有必要通过后盾启动的形式来让程序放弃在后盾持续运行,也就是 nohup 命令。

nohup 英文全称是 no hang up(不挂起),用于在零碎后盾不挂断地运行命令,退出终端不会影响程序的运行。nohup 命令,在默认状况下(非重定向时),会输入一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输入重定向到 $HOME/nohup.out 文件中。

语法格局:nohup Command [Arg …] [&]
参数阐明:
Command:要执行的命令。
Arg:一些参数,能够指定输入文件。
&:让命令在后盾执行,终端退出后命令仍旧执行。

下面这一段是菜鸟教程外面对 nohup 命令的介绍,对于下面形容的默认状况下输入一个名叫 nohup.out 的文件到当前目录说的是咱们没有将 nohup 命令的输入重定向到其余文件的话会输入到当前目录下一个默认的名叫 nohup.out 的文件中,如果当前目录的 nohup.out 文件不可写,输入重定向到 $HOME/nohup.out 文件中。

也就是如果以上面的形式执行则会在当前目录下产生一个 nohup.out 的文件。

nohup java -jar usercenter.jar --spring.profiles.active=development &

但如果在当前目录下咱们须要启动多个我的项目的话,我的项目启动的日志就都输入到 nohup.out 文件中了,不利于咱们查看日志,这时候咱们可能须要进行日志重定向来辨别不同我的项目的日志输入,这样也有利于咱们前期再次登录服务器时通过文件名辨别不同我的项目的日志输入。

于是咱们就用到了上面的命令:

nohup java -jar usercenter.jar --spring.profiles.active=development > usercenter.log 2>&1 &

为了帮忙更好地了解下面这个命令,咱们先理解下对于终端输入输出一个概念:

0< – stdin (standard input,规范输出),简写 <
1> – stdout (standard output,规范输入),简写 >
2> – stderr (standard error,规范谬误输入) 

对于下面这个命令,两头 java -jar 那一部分天然就是咱们要执行的我的项目启动命令,nohup 以及开端的 & 示意在后盾不挂断的执行 java -jar 命令,即便终端退出后命令仍继续执行,> usercenter.log 示意将命令的规范输入重定向到 usercenter.log 文件,2>&1 示意将规范谬误输入也重定向到规范输入中,也就是说命令执行的规范输入和规范谬误输入都输出到 usercenter.log 文件中。

当然如果咱们不关怀命令执行的输入后果,也不想要默认生成的那个 nohup.out 文件,这时候咱们能够将输入重定向到 /dev/null,/dev/null 是一个非凡的文件,它承受并抛弃写入其中的所有输出。个别对于那种可能产生大量的日志输入时,这个就比拟有用了,防止日志文件占据大量空间。

微信公众号:rookiedev,Java 后盾开发,励志一生学习,保持原创干货输入,你可抉择当初就关注我,或者看看历史文章再关注也不迟。长按二维码关注,咱们一起致力变得更优良!

正文完
 0