最新記事

rm -rfを使用して大容量ファイル(最大サイズ20 GB)をすばやく削除すると、失敗して時々停止することがありますか?
linux
shell-script
ubuntu
kali-linux

rm -rfを使用して大容量ファイル(最大サイズ20 GB)をすばやく削除すると、失敗して時々停止することがありますか?

rm -rf .* を使用してサブディレクトリを削除しようとしましたが、サブフォルダの削除に失敗しました。最大5000個まで処理できますが、10000個以上のサブディレクトリを一度に削除することはできません。サブディレクトリからファイルを削除してからサブディレクトリを削除するスクリプトを作成しました。 # loop & print a folder recusively, print_folder_recurse() { for i in "$1"/*;do if [ -d "$i" ];then print_folder_recurse "$i" #echo "dir: $i" elif [ -f "$i" ]; then #echo "file: $i" rm -rf $i fi done #echo "dir: $1" if [[ "$1" != "$path" ]]; then #echo "dir : $1" rm -rf $1o fi } 注:このスクリプトも時々失敗します。ディレクトリサイズは常に20 GBに制限されるわけではありません。今後はるかに大きくなる可能性があります。 この種の問題を処理するより良い方法を知っているLinuxの専門家はいますか?

Admin

inotifywait - 入れ子になったifステートメントの助けが必要です。
bash
shell-script
scripting
inotify

inotifywait - 入れ子になったifステートメントの助けが必要です。

($WATCHED)/folder フォルダーで新しいファイル (.mkv のみ) を監視しています。何かが表示されたら、ターゲットフォルダ($ DESTINATION)にコピーし、所有権と権限を変更します。 これが私が使用するスクリプトです。 #!/bin/bash WATCHED=/mnt/Watched DESTINATION=/mnt/Destination user=usrid group=grpid perms=755 inotifywait -re CLOSE_WRITE,CREATE,MOVED_TO --format $'%e\t%w%f' -m $WATCHED | while IFS=$'\t' read -r events new do # Detecting and copying new files/folders sleep 5 if [[ -d "$new" ]] then echo "Folder Detected: $new, Copying to Destination folder" cp -r "$new" "$DESTINATION/" elif [[ "$events" =~ CLOSE_WRITE ]] then if [ -f "$new" ] && [ "${new##*.}" == mkv ] then echo "File Detected: $new, Copying to Destination folder" cp -r "$new" "$DESTINATION/" elif [[ -e "$new" ]] then echo "New unknown item '$new'" fi fi echo "Changing ownership and permissions for $DESTINATION" chown -R $user:$group "$DESTINATION" chmod -R $perms "$DESTINATION" echo done このスクリプトについていくつかの質問があります。 フォルダが1つでフォルダに1つのファイルしかない場合は、何らかの理由で所有権/権限の変更が3回実行されます。以下の出力から2番目のインスタンスが分離されていることを確認できます。なぜそんなのか分からない?私はこれに対する私の立場と行動が私が達成しようとしている目標には適していないことを知っています。ターゲットフォルダ全体ではなく、コピーされる新しい個々のファイル/フォルダごとに所有権/権限を付与したいと思います。各新しいファイル/フォルダの所有権/権限を変更する正しい方法はわかりません。どんな指針でも大変感謝いたします。 このスクリプトは、正確で同じディレクトリツリーを使用してフォルダとファイルをディレクトリにコピーするだけでなく、ファイルをターゲットフォルダにコピーします。したがって、ファイルのコピーが2つあります。まず、コピー先フォルダに直接コピーされるのはなぜですか。 これが出力です。 Folder Detected: /mnt/Watched/NewFolder, Copying to the Destination folder Changing ownership and permissions for /mnt/Destination Changing ownership and permissions for /mnt/Destination File Detected: /mnt/Watched/NewFolder/NewFile.mkv, Copying to Destination folder Changing ownership and permissions for /mnt/Destination これが私が望む出力結果です。 Folder Detected: /mnt/Watched/NewFolder, Copying to the Destination folder Changing ownership and permissions for /mnt/Destination/NewFolder File Detected: /mnt/Watched/NewFolder/NewFile.mkv, Copying to Destination folder Changing ownership and permissions for /mnt/Destination/NewFolder/NewFile.mkv ありがとう

Admin

Bash メニューは、ユーザーが引数を渡すかどうかによって異なるスクリプトを実行します。
linux
bash
shell-script

Bash メニューは、ユーザーが引数を渡すかどうかによって異なるスクリプトを実行します。

私は尋ねたStackOverflowに関するこの質問昨日、私はLinuxの知識が不足して、それを混乱させ、一般的に人々の時間を無駄にしました。 今より良いことができることを願っています。私はこの問題を解決するためにさまざまな方法を試しましたが、結局ここで人々が私に実際に必要なものが何であるかを混乱させました。 ユーザーがパラメータを渡すかどうかに応じて、別のサブメニュースクリプトを呼び出すスクリプトを作成する必要があります。引数が "help"の場合は、画面を消去し、ユーザーにhelpコマンドの使用方法を知らせる短いメッセージを表示する必要があります。それ以外の場合、スクリプトはそのサブメニューを表示します。 他のパラメータは「ファイル」「テキスト」「ステータス」であり、使用される場合はエキスパートスクリプトを呼び出し、それ以外の場合はユーザーメニューから初心者スクリプトを呼び出します。 私は、ユーザーが特定のパラメータを渡したかどうかに応じて実行したいfileExpert、fileNovice、textExpert、textNoviceなどの名前の合計6つの異なるスクリプトプレースホルダーを持つモデルを作成しました。 これまでの研究を通じて、同様の条件付きテストを設定する必要があることを知っていますが、 if $>0 then go into expert or if there are no arguments execute novice それ以上には完全に迷っています。 これは完全に話すことができない音のように聞こえず、ある程度真実があることを願っています。

Admin

awkスクリプトで$ 2> anynumberはどういう意味ですか?
shell-script
shell
awk

awkスクリプトで$ 2> anynumberはどういう意味ですか?

先生が提供したシェルスクリプトを見ていますが、awk ' $2>0.10 && $2 > 0.10 { print $1,$2 }'その意味を理解するのに役立つ人はいますか?特に、$2>0.102番目の列の値を印刷すると0.10より大きいですか?

Admin

awk / sedを使用して特定の列の内容を抽出する
shell-script
text-processing
awk
sed
grep

awk / sedを使用して特定の列の内容を抽出する

閉鎖。この質問はもう少し尋ねる必要があります集中。現時点では回答は許可されていません。 この質問を改善したいですか?1つの問題にのみ焦点を当てるように質問を更新してください。この記事を編集してください。 閉鎖3年前。 この問題を改善する 提供される文書: $ cat CronConfig `FILE SYSTEM` `------------` warningThreshold: 77 criticalThreshold: 99 `MEMORY` `-------` warningThreshold: 66 criticalThreshold: 88 `CPU` `----` intervalCount: 6 intervalSecs: 7 warningThreshold: 99 criticalThreshold: 88 CronConfig上記の内容を含むファイルがあります。私は値を使用し、warningThreshold次のような出力が必要です。MEMORYcriticalThresholdCPU 66 88 この値を取得するには、コマンドを使用します。 (しかし、正しい方法でやっているかどうかはわかりません。) awk 'BEGIN{FS="\n"; RS="------------"} {print $7}' CronConfig | awk 'NF {print $2}' awk 'BEGIN{FS="\n"; RS="------------"} {print $15}' CronConfig | awk 'NF {print $2}'

Admin

行コメント文字
shell-script
shell

行コメント文字 "#"とシェルスクリプトの実際のコメント開始の間のスペース

コメントのポンド記号と実際のコメントの間にスペースがあるシェルスクリプトがあります。 # a comment at the beginning of a line echo foo # a comment trailing after a command その他使用できないもの #another comment at the beginning of a line echo bar #another comment trailing after a command この決定はスクリプトの実際の実行に影響しますか、それともコーディングスタイルの問題ですか?

Admin

1つのファイルからスクリプトをgnome-terminalに渡すには?
bash
shell-script
gnome-terminal

1つのファイルからスクリプトをgnome-terminalに渡すには?

私は現在ハードウェア開発をしており、シリアルポートに接続されているデバイスを継続的に接続/接続解除/再開しています。 (通常は/dev/ttyUSB0) gnome-terminalデバイスが接続されているか、再起動が完了したかなどを「一目で」簡単に確認できるように、画面の端の小さなウィンドウで実行されるシリアルポートを監視する基本スクリプトがあります。ウィンドウは常に表示されます。監視目的で。 Script( monitorSerialPorts) は基本的ですが便利です。 while [ true ] do clear printf "\n Serial Devices: " ls /dev/ttyUSB* 2> /dev/null || (clear ; printf "\n No Devices Detected") sleep 2 done 1行でログインしたときに実行される2番目のスクリプト()でそれを呼び出すmonitorSerialPortsLauncherと、必要な場所に小さなウィンドウが素敵に作成されます。 gnome-terminal --window-with-profile=RedonYellow --command=$HOME/scripts/monitorSerialPorts --geometry=26x3-20 質問:ありますか?きれいこの機能を単一のスクリプトにどのように統合できますか? (また、このプロセスやスクリプトの改善のための一般的な提案も歓迎します)

Admin

アレイ構成時の空間ファイル名のトラブルシューティング
bash
shell-script
array

アレイ構成時の空間ファイル名のトラブルシューティング

私はこのコマンドを使用して、files=( $(ls "/path/wanted") )ディレクトリ内のすべてのファイル名を配列として保存します。ただし、空白文字を含むファイル名は複数の配列エントリを生成します。 それを調べるには: ls /path/wanted something.txt spaced name ${#files[@]} 3 完全なファイル名を各配列の場所にマッピングするにはどうすればよいですか?

Admin

ディレクトリを繰り返しますが、最新のファイルはスキップされます。
shell-script
files

ディレクトリを繰り返しますが、最新のファイルはスキップされます。

私はbashスクリプトに初めて触れましたが、使用する必要があります。 ディレクトリを繰り返して、すべてリモートサーバーにアップロードしたいと思います。その後、削除する必要があります。 今私が持っている問題は次のとおりです。 tcpdumpがこのディレクトリにpcapデータを(回転したファイルと共に)書き込んでいるので、最新のファイルをアップロードしたくありません。ディレクトリを繰り返すときに最新のディレクトリを100%スキップするにはどうすればよいですか?ファイルを作成してアップロードするプロセスは並行して行われるため、アップロードが開始されるとすぐに「新しい」最新のファイルがある可能性があります。 2つの最新のアップロードをスキップしても大丈夫ですが、今は最新のファイルをアップロードしたくありません。 「一般」ループの解決策を読んで bash スクリプトを学習しようとしていますが、構文は非常に混乱しています。したがって、開始点を支援したり、初心者にできる部分的な解決策を教えていただきありがとうございます。わかります。 ありがとうございます! PS:最新のファイルには最新のタイムスタンプもあります。

Admin

テキストファイルから電子メールアドレスを読み、端末を使用してその電子メールアドレスに電子メールを送信する方法
shell-script
email

テキストファイルから電子メールアドレスを読み、端末を使用してその電子メールアドレスに電子メールを送信する方法

私はスクリプトが初めてです。テキストファイルからEメールアドレスを読み、そのEメールアドレスにEメールを送信する方法を理解するのに役立ちますか? たとえば、emailAdd.txt このtxtファイルから: [email protected] [email protected] [email protected] このメールで「Hello World」を送りたいです。これは単なる例であり、約30のEメールアドレスに送信する必要があります。

Admin

セキュリティのためにプライベートシェルスクリプトをどこに配置する必要がありますか?
shell-script
shell
zsh

セキュリティのためにプライベートシェルスクリプトをどこに配置する必要がありますか?

私はいくつかのカスタム機能を作るためにshを学んでいます。私はスタック交換で確認し、誰かが私の個人的なスクリプトを下に置くと、実際にそのようなことをするよう~/binなマルウェアを探索できると言ったので、私の個人的なスクリプトのための安全な場所を探しています。ls()rm -rf

Admin