Linux nohup配景启动/ 配景启动命令中nohup 、&、重定向的利用 ...

王海鱼  金牌会员 | 2024-6-19 13:59:56 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 664|帖子 664|积分 1992

一、前言

经常看到一些jar包,sh脚本用nohup命令配景启动,今天就解说一下nohup的用法。
nohup主要作用就是可以在配景运行,并可以选择将日志输出到指定文件。如启动jar包,若利用java -jar demo.jar的方式启动步伐当窗口关闭的时候步伐也停止了,而且日志会直接输出到控制台非常不直观,nohup启动就可以办理这两个问题。
二、nohup(不挂断)简介

nohup 是 no hung up的缩写,意思是不挂断 。
nohup 命令,在默认环境下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目次下,如果当前目次的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
利用 Xshell 等Linux 客户端工具,远程执行 Linux 脚本时,有时候会由于网络问题,导致客户端失去毗连,终端断开,脚本运行一半就意外竣事了。这种时候,就可以用nohup 指令来运行指令,纵然客户端与服务端断开,服务端的脚本仍可继承运行。
nohup 语法格式:
  1. nohup 命令 [参数]...
复制代码
说明:


  • 关闭客户端后,命令仍然会运行,不会挂断
  • nohup命令允许被运行的步伐的输出信息将不会显示到终端。
三、nohup利用

3.1、nohup启动

  1. nohup sh test.sh
复制代码
说明:

  • 配景启动test.sh脚本,日志默认会输出到当前目次的nohup.out 文件

3.2、nohup与&的区别

   1、&才是配景运行
2、nohup : 不挂断的运行,注意并没有配景运行的功能,就是指,用nohup运行命令可以任务令永久的执行下去,和用户终端没有关系,例如我们断开SSH毗连都不会影响他的运行,注意了nohup没有配景运行的意思;
  &符号表示将该命令或脚本放入配景运行。 即&方式启动会有历程号,利用Ctrl+C步伐不会停止,但终端关闭后运行会停止。
  1. nohup sh test.sh
  2. &
复制代码

3.3、nohup与>,日志重定向

上面提到的日志文件默认名称是 nohup.out ,如果修改日志文件的名称,则用到 重定向 ,符号是>,语法格式是
  1. nohup sh test.sh
  2. >test.log
复制代码
>表示标准输出,还可以用>,>>, 1>或1>>等举行表示
3.4、nohup配景启动-综合利用(保举)

  1. # 后台执行test.sh文件,将标准日志输出到output.log文件中,将错误日志也输出到output.log文件中
  2. nohup ./test.sh > output.log 2>&1 &
  3. 等同于
  4. nohup ./test.sh > output.log 2>output.log &
复制代码
说明:
  1. ">"符号用于将命令的`标准输出`重定向到指定的文件中
  2. > outlog.log 表示将终端输出保存到outlog.log文件中
  3. "2>"表示将命令的`标准错误`输出重定向到指定的文件中
  4. 2>&1 表示将命令的标准错误输出重定向到标准输出1中一起输出 (ps:标准输出1指的是>outlog.log文件,具体可见下面的内容)
  5. & 后台挂起
复制代码
2>&1

0 表示stdin标准输入,用户键盘输入的内容
1 表示stdout标准输出,输出到显示屏的内容
2 表示stderr标准错误,报错内容
2>&1是一个团体,>左右不能有空格,即将错误内容重定向输入到标准输出中去。
>符号用于将命令的标准输出重定向到指定的文件中,
2>表示将命令的标准错误输出重定向到指定的文件中,
2>&1表示将命令的标准错误输出重定向到标准输出中
在Linux系统中0 1 2是一个文件描述符
几种输入输出方式文件描述符利用符java中表示说明标准输入(stdin),即standard input0<或<<System.in即表示键盘输入标准输出(stdout),即standard output1>,>>, 1>或1>>System.out例如,运行"ls 文件"命令将会输出当前工作目次下的文件列表,这些信息将会被输出到标准输出中并显示在终端上。标准错误输出(stderr),即standard error output22>或2>>System.err例如,运行"ls 文件"命令,但是不存在此文件,那么将会输出错误信息"ls:cannot access ‘文件名’:No such file or directory",这个错误信息将会被输出到标准错误输出中并显示在终端上。 3.5、nohup配景启动(不生成日志)

上面的示例中,都会将nohup执行的日志存放到nohup.out文件或者其他文件中,有没有方法不存放日志了呢?请利用以下命令
  1. #/dev/null 表示空设备文件。 如果不想输出任何的日志时,使用此参数 。
  2. nohup ./test.sh >/dev/null &
复制代码
四、查察历程

  1. nohup test.sh >out.log 2&1 &
复制代码
  1. ps -aux | grep "test.sh"
复制代码
参数说明:


  • a: 显示全部步伐
  • u: 以用户为主的格式来显示
  • x: 显示全部步伐,不区分终端机
五、知识扩展

5.1、不停止服务,直接清空nohup.out

如果脚本不停运行下去,nohup.out 日志会不停增长,日志但是硬盘容量有限,怎么把日志文件的大小减少 ?
注意,千万别直接删除日志文件,会造成服务无法输出日志,服务异常直接停止运行,这是最严重生产事故。
不停止服务,直接清空nohup.out文件有两种方法:
  1. # 第1种:
  2. cat /dev/null > nohup.out
  3. # 第2种:
  4. cp /dev/null nohup.out
复制代码
5.2、只记载警告级别比力高的日志

输出的日志太多,nohup.out 增长特殊快,对于不紧张的日志,可以不记载,选择只记载警告级别比力高的日志。
  1. # 只输出错误信息到日志文件,其它日志不输出
  2. nohup ./test.sh > /dev/null   2>error.log  &
复制代码
5.3、不想输出日志

不想输出日志,什么日志都不要,只要服务能正常运行就行了。
  1. # 什么日志也不输出
  2. nohup ./test.sh > /dev/null   2>&1   &
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王海鱼

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表