サーバーにerror.logというファイルがあり、頻繁に切り捨てる必要があります。ファイルのrw権限があります。 viでファイルを開く>すべてのコンテンツを削除する>保存する(明らかに)。しかし、私が以下を試してみると
cat /dev/null > error.log
私はメッセージを受け取ります
File already exists.
明らかに、ファイルの偶発的な上書きを防ぐために、サーバー上で何らかの構成が行われます。誰もが単一のコマンドでファイルをどのように「切り捨てる」ことができますか?
noclobber
オプションが設定されています。エラーはcshからのもののように見えるため、次のようにします。
cat /dev/null >! file
私が間違っていて、bashを使用している場合は、次を実行する必要があります。
cat /dev/null >| file
bashでは、次のように短縮することもできます。
>| file
関数truncateを使用することもできます
$truncate -s0 yourfile
許可が拒否された場合は、Sudoを使用します
$Sudo truncate -s0 yourfile
ヘルプ/マニュアル:man truncate
ubuntu Linuxでテスト済み
これは、ファイルサイズを0に設定するのに十分です。
> error.log
これは私の先輩の功績です。
:> filename
これによりログファイルが破損することはないため、たとえばsyslogで使用することもできます。
false | tee fileToTruncate
うまくいくかもしれません
Sudoは redirection>
では機能しないため、この目的でtee
コマンドが好きです。
echo "" | Sudo tee fileName
誰でもこのコマンドを試して、linux systemのファイルを切り捨てることができます。
これはどんな形式でも確実に動作します:
truncate -s 0 file.txt