shell中涉及的linux 命令

while true; 
do
	PIDS=`ps -ef | grep java | grep "$EXEC_FILE" | awk '{print $2}'`	
	if [ -z "$PIDS" ]; then
		nohup /bin/sh $START_SHELL $WORK_HOME >/dev/null 2>&1 &
	fi

	sleep 5
done

Nohup

nohup命令用于不挂断地运行命令(关闭当前session不会中断改程序,只能通过kill等命令删除)

1.2 & 2>&1就是用来将标准错误2重定向到标准输出1中的。此处1前面的&就是为了让bash将1解释成标准输出而不是文件1。至于最后一个&,则是让bash在后台执行。

/dev/null 2>&1 

0 代表STDIN_FILENO 标准输入(一般是键盘),
1 代表STDOUT_FILENO 标准输出(一般是显示屏,准确的说是用户终端控制台),
2 三代表STDERR_FILENO (标准错误(出错信息输出)。

> 直接把内容生成到指定文件,会覆盖原来文件中的内容[ls > test.txt],
>> 尾部追加,不会覆盖原有内容 [ls >> test.txt],
< 将指定文件的内容作为前面命令的参数[cat < text.sh]

可以把/dev/null 可以看作"黑洞". 它等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到.
/dev/null 2>&1则表示吧标准输出和错误输出都放到这个“黑洞”,表示什么也不输出。

awk '{print $1,$4}' log.txt    

每行按空格或TAB分割,输出文本中的1、4项

log.txt文本内容如下: 2 this is a test 输出2 a:


版权声明:本文为godflowerszzz原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。