1. 程式人生 > >Linux 命令下面的/dev/null 目錄

Linux 命令下面的/dev/null 目錄

在shell 指令碼中經常會看到 >/dev/null 與>/dev/null 2>&1這樣例子
#!/bin/bash
cd `dirname $0`
cd ..
DEPLOY_DIR=`pwd`
SERVER_NAME=sharding-jdbc-transaction-async-job

#LOG LOCATION
LOGS_DIR=$DEPLOY_DIR/logs
if [ ! -d $LOGS_DIR ]; then
    mkdir $LOGS_DIR
fi
PID=`ps -ef | grep java | grep "$DEPLOY_DIR" |awk '{print $2}'`
if [ -n "$PID" ]; then
    echo "ERROR: The $SERVER_NAME already started!"
    echo "PID: $PID"
    exit 1
fi

CONF_DIR=$DEPLOY_DIR/conf/*
LIB_DIR=$DEPLOY_DIR/lib/*
CONTAINER_MAIN=com.dangdang.ddframe.rdb.transaction.soft.bed.BestEffortsDeliveryJobMain
nohup java -classpath $CONF_DIR:$LIB_DIR:. $CONTAINER_MAIN >/dev/null 2>&1 &

CONSOLE_TXT="Started the $SERVER_NAME"
echo $CONSOLE_TXT

/dev/null

       /dev/null   null是一個名叫null小桶的東西,如果命令的輸出不想要即想丟棄輸出的內容,既不想在標準輸出與不想重定向到某個檔案,就可將命令的輸出重定向到/dev/null。這樣做的好處是不會因為輸出的內容過多而導致檔案大小不斷的增加。

command >/dev/null 與 command >/dev/null 2>&1

        command >/dev/null的作用是將是command命令的標準輸出丟棄,而標準錯誤輸出還是在螢幕上。 一般來講標準輸出和標準錯誤輸出都是螢幕,因此錯誤資訊還是會在螢幕上輸出。這時可以用command >/dev/null 2>&1 這樣標準輸出與標準錯誤輸出都會被丟棄。1表示標準輸出,2表示標準錯誤輸出,2>&1表示將標準錯誤輸出重定向到標準輸出。
        >表示輸出重定向,如果 command > /usr/log 那其會覆蓋log中原來的記錄。可以使用>>輸出重定向來向檔案尾部增加輸出記錄。