linux命令补充

1.nohup

nohup /usr/local/node/bin/node /www/im/chat.js >> /usr/local/node/output.log 2>&1 &

进程号7585

在运行shell脚本时,我们常常会见 "nohup sh test.sh /dev/null 2>&1" ,那么为什么要这么写,直接sh test.sh脚本不行嘛?它的作用究竟是什么?

首先先说nohup,这个简单,no hang up,就是不挂起的意思。

如果你正在运行一个进程,而这个进程可能要运行很久,比如每小时统计个数据,统计个77 49个小时,那么账户可能在这期间就退出了,终端也关闭了,而你的进程不能够结束,那么这个命令【可以让你在退出账户/关闭终端之后继续运行相应的进程】。

该命令的一般形式为: nohup command &

那么 nohup sh test.sh > /dev/null 2>&1 & 又是什么意思呢? 网上很多文章讲解的很深入,但不够通俗易懂,我们就讲点简单的。

在这个语句中,出现了2、1两个数字,要说明的是,& 0表示键盘输入|1表示屏幕输出|2表示错误输出

假设没有&,2>1,2与>结合代表错误重定向,而1代表1个文件,这句话意思是错误输出重定向到一个文件1中,而不代表标准输出;换成2>&1,&与1就代表标准输出了。

这句话的意思就是,后台执行test.sh这个脚本,把标准错误重定向到标准输出,然后扔到/dev/null中去,即:把所有标准输出和错误输出都扔到垃圾桶里。

一点一点来分析,先来看这句

command > out.txt 2>&1 &

command > out.txt 是将command的输出重定向到out.txt文件中,也就是说输出内容不打到屏幕上,而是写入到out.txt文件中。

前文已经讲述 2>&1 是将标准出错(2)重定向到标准输出(1),而这里的标准输出已经重定向到了out.txt文件,所以标准出错也会输出到out.txt文件中。最后一个&,是让该命令在后台执行

为什么2>&1要写在后面?

command > out.txt 2>&1

首先,command > out.txt将【标准输出】重定向到out.txt中,2>&1将标准错误重定向到【标准输出】,即重定向到out.txt中。最终结果就是标准输出和标准错误都重定向到out.txt中

那么还有一个问题,为什么要用/dev/null 2>&1,这条命令意思就是将标准输出和标准错误都重定向到/dev/null中,也就是将产生的信息都丢弃。

最后解释command > out.txt 2>file 和 command > out.txt 2>&1 有什么不同。

首先:command > out.txt 2>file 的意思是将command产生的所有stdout和stderr信息都送到out.txt中,out.txt会被打开两次,这样stdout和stderr信息会互相覆盖;

其次: command > out.txt 2>&1 是将stdout直接写入out.txt,stderr【继承】了stdout的管道后,再被送往out.txt,此时out.txt只被打开了一次。

2.chkconfig

chkconfig使用说明

chkconfig是管理系统服务(service)的命令行工具。所谓系统服务(service),就是随系统启动而启动,随系统关闭而关闭的程序。

chkconfig可以更新(启动或停止)和查询系统服务(service)运行级信息。更简单一点,chkconfig是一个用于维护/etc/rc[0-6].d目录的命令行工具。不适用于Ubuntu系列

chkconfig 提供5个功能:

1. 设置service启动信息

# chkconfig name on/off/reset

on、off、reset用于改变service的启动信息。

on表示开启,off表示关闭,reset表示重置。

默认情况下,on和off开关只对运行级2,3,4,5有效,reset可以对所有运行级有效。 例如,

# chkconfig httpd on

2. 设置service运行级别

# chkconfig --level levels

例如,

# chkconfig --level 2345 httpd on

指定运行级为2,3,4,5

等级0表示:表示关机

等级1表示:单用户模式

等级2表示:无网络连接的多用户命令行模式

等级3表示:有网络连接的多用户命令行模式

等级4表示:不可用

等级5表示:带图形界面的多用户模式

等级6表示:重新启动

3. 添加service

# chkconfig --add name

添加一个chkconfig管理的service,并在/etc/rc[0-6].d 目录下添加相应的符号链接(symbolic links)。

4. 移除service

# chkconfig --del name

从chkconfig 管理名单中删除该service,并且删除 /etc/rc[0-6].d 目录下所有与之关联的符号链接(symbolic links)。

5. 列出service的启动信息

# chkconfig --list [name]

如果不指定name,会列出所有services的信息。

每个service每个运行级别都会有一个启动和停止脚本;当切换运行级别时,init不会重启已经启动的service,也不会重新停止已经停止的service。

下面举例说明

(1).列出所有服务的启动情况

$ chkconfig --list

  1. auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

  1. redis 0:off 1:off 2:off 3:off 4:off 5:off 6:off

  1. restorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:off

  1. rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off

  1. rpcgssd 0:off 1:off 2:off 3:on 4:on 5:on 6:off

  1. rpcsvcgssd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

  1. rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off

  1. saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

  1. smb 0:off 1:off 2:off 3:on 4:off 5:on 6:off

  1. 。。。

  1. xinetd based services:

  1. rsync: off

  1. swat: off

(2)增加MysqLd服务

$ chkconfig --add MysqLd

(3)删除MysqLd服务

$ chkconfig --del MysqLd

(4)设置MysqLd运行级别为2,5

$ chkconfig --level 2345 httpd on

(5)列出MysqLd 服务启动信息情况

$ chkconfig --list MysqLd

  1. MysqLd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

(6)设置启动信息

$ chkconfig MysqLd on

默认的运行级别为2,5

实际上,与4中命令作用是一样的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值