psとDateを1行にファイルとして出力しますか?

psとDateを1行にファイルとして出力しますか?

デフォルトのロギングスクリプトを作成しており、次の出力をキャプチャしたいと思います。ps up 12345

これまで私は以下を持っています:

DATE2=`date +%Y-%m-%d:%H:%M:%S`
echo ${DATE2} >> $filename

ps up 12345 --no-headers >> $filename

これは私が望む情報を3行で提供します(1 =日付、2 = ps 3 =空白行として出力)。

しかし、理想的には、これらの内容を一行でキャプチャしたいと思います。それらを組み合わせて空の行を無視する方法はありますか?

答え1

ps出力を変数に保存し、echoまたはprintfを使用して書き込むこともできます。

DATE2=`date +%Y-%m-%d:%H:%M:%S`
PS_RESULT=`ps up 12345 --no-headers`

printf "%s: %s" "${DATE2}" "${PS_RESULT}" >> $filename

参考までに、この構文は入れ子にすることができるので、いつ使用できるかより$(command)慣れておくと便利です。`command`

答え2

1つの解決策は、最初の文字列の末尾に改行文字を印刷しないことです。スペースが必要な場合があります。

echo -n "${DATE2} " >>"$filename"

関連情報