スクリプトを使用してfstabにnoatimeを追加するには?

スクリプトを使用してfstabにnoatimeを追加するには?

サーバーを設定するためにbashスクリプトをnoatime追加したいです。fstab

/パーティションに対してのみ安全な方法で自動化するにはどうすればよいですか?

簡単に言うと:

その行にまだbash / shellコードを使用しているものが含まれていない場合は、,noatime2行目の文字列をその行の4番目の文字列に追加するにはどうすればよいですか?/noatime

サンプルファイル:

# Comment
UUID=1234567890-abcdef    /     ext4  defaults,discard    0    1
UUID=9876543210-fedcdab   /var  ext4  defaults,discard    0    0

得るべきこと:

# Comment
UUID=1234567890-abcdef    /     ext4  defaults,discard,noatime    0    1
UUID=9876543210-fedcdab   /var  ext4  defaults,discard    0    0

ベストアンサー1

これにより、目的の効果を得ることができます。

awk -i inplace '$2 == "/" && !($4 ~ /noatime/) { sub(/[[:space:]]*([^[:space:]]+[[:space:]]+){3}[^[:space:]]+/,"&,noatime") }1' /etc/fstab

これはあなたが要求したよりも少し具体的です。次の,noatime場合、4番目のフィールドに追加されます。その分野まだ含まれていないnoatime、行全体をチェックしません。

-i inplaceGawk専用です。サポートされていない場合、結果は新しいファイルに書き込まれます。

awk '$2 == "/" && !($4 ~ /noatime/) { sub(/[[:space:]]*([^[:space:]]+[[:space:]]+){3}[^[:space:]]+/,"&,noatime") }1' /etc/fstab > /etc/fstab.new && mv /etc/fstab{.new,}

どちらの場合も、サーバー設定スクリプトがルートとして実行されていると仮定します。

(ありがとうございます。エドモートン強力なテキスト置換のために!を使用すると、4番目のフィールドの正規表現に関連する潜在的な問題を回避できますsub。 )

おすすめ記事