タグ付けされた質問 「error-handling」

シェルスクリプトで生成されたエラーの処理方法に関する質問には、このタグを使用します。

5
Linux bashスクリプトでエラーをキャッチする方法は?
次のスクリプトを作成しました。 # !/bin/bash # OUTPUT-COLORING red='\e[0;31m' green='\e[0;32m' NC='\e[0m' # No Color # FUNCTIONS # directoryExists - Does the directory exist? function directoryExists { cd $1 if [ $? = 0 ] then echo -e "${green}$1${NC}" else echo -e "${red}$1${NC}" fi } # EXE directoryExists "~/foobar" directoryExists "/www/html/drupal" スクリプトは動作しますが、エコーのほかに、次の場合の出力もあります cd $1 …

5
エラーがない限り、cronメールを無効にしますか?
エラーがある場合にのみcronからメールを受信するにはどうすればよいですか? 圧倒的多数の場合、タスクは問題なく実行され、出力については本当に気にしません。 私が知りたい/必要とするのは、まれな障害の場合のみです。 私はprocmailを利用できますが、説明していることをcronの外部で「正しく」管理できるかどうかはわかりません。

5
rsyncでサーバーメッセージを抑制する
私rsyncまたはscp特定のサーバーから、サーバーのルールを伝えるかなり長いメッセージが表示されます。ただし、定期的なプルを設定するときは、ログでこれらのメッセージを抑制できるようにしたいと思います。manページを見ると、-q動作するはずですが、それはscp自体からのメッセージを静かにするだけです。これどうやってするの?

3
コマンドエラーでbashスクリプトの関数を自動実行する方法はありますか?
私は一連のコマンドを実行する必要があるシェルスクリプトを書いており、すべてのコマンドは以前のすべてのコマンドに依存しています。コマンドが失敗した場合、スクリプト全体が失敗し、exit関数を呼び出します。各コマンドの終了コードを確認することはできましたが、有効にできるモードがあるかどうか、またはbashに自動的にそれを実行させる方法があるかどうか疑問に思っています。 たとえば、次のコマンドを実行します。 cd foo || myfunc rm a || myfunc cd bar || myfunc rm b || myfunc これらのコマンドのいずれかが失敗した場合にmyfuncを呼び出す必要があることを、これらのコマンドを実行する前に何らかの方法でシェルに通知できる方法はありますか? cd foo rm a cd bar rm b

4
Linuxスワップのサイレントディスクエラーと信頼性
私の理解では、ハードドライブとSSDはドライブ内にいくつかの基本的なエラー修正を実装しており、ほとんどのRAID構成(例:mdadm)はこれに依存して、ドライブがエラーを修正できず、オフラインにする必要がある時期を決定します。ただし、これは、ストレージのエラー診断が100%正確であることによって異なります。そうではなく、2ドライブのRAID-1ミラーのような一般的な構成は脆弱です。1つのドライブの一部のビットが警告なしで破損し、ドライブが読み取りエラーを報告しないとします。したがって、btrfsやZFSのようなファイルシステムは、バグのあるドライブファームウェアや問題のあるSATAケーブルなどを信頼しないように、独自のチェックサムを実装します。 同様に、RAMにも信頼性の問題があるため、この問題を解決するためのECC RAMがあります。 私の質問はこれです:Linuxスワップファイルを2つのディスク構成のドライブファームウェア(つまりメインラインカーネルドライバーを使用して)でキャッチされないサイレント破損/ビット腐敗から保護する正規の方法は何ですか?ここでエンドツーエンドの保護が不足している構成(btrfsによって提供される構成など)は、ECC RAMによってもたらされる安心感を多少打ち消しているように思えます。しかし、私は良い方法を考えることができません: btrfsはスワップファイルをまったくサポートしていません。あなたはbtrfsファイルからループデバイスをセットアップし、それをスワップすることができます。しかし、それには問題があります: ランダム書き込みはうまく機能しません:https : //btrfs.wiki.kernel.org/index.php/Gotchas#Fragmentation コピーオンライトを無効にする提案があると、チェックサムも無効になるため、この演習の全体のポイントは無効になります。彼らの前提は、データファイルには独自の内部保護があるということです。 :LinuxでのZFSは、私は仕事ができると思いスワップ、としてZVOLを使用可能にhttp://zfsonlinux.org/faq.html#CanIUseaZVOLforSwapしかし、私の読書から、ZFSは、通常、メモリに要求している、そしてそれは、スワップで働い取得します- -のみのアプリケーションは、それを理解するいくつかの仕事のように聞こえます。これは私の最初の選択ではないと思います。信頼できるスワップを行うためだけにツリー外のカーネルモジュールを使用する必要がある理由は、私を超えています-今日の時代のほとんどの最新のLinuxディストリビューション/カーネルでこれを実現する方法は確かにありますか? 私はこの質問に議論正確な理由のために、メモリマネージャ自体の中にチェックサムを有効にするには、パッチが適用されたLinuxカーネルのメーリングリストのスレッド、実際にありました: http://thread.gmane.org/gmane.linux.kernel/989246は -残念ながら、私の知る限りでは、パッチは停止し、私には知られていない理由により、アップストリームに到達しませんでした。残念ながら、それは素晴らしい機能のように思えました。一方、RAID-1にスワップを配置する場合-破損がチェックサムの修復能力を超えている場合、パニックまたは何かの前に、メモリマネージャーが他のドライブから読み取ろうとする必要があります。おそらく、メモリマネージャが行うべきことの範囲外です。 要約すれば: RAMにはECCがあり、エラーを修正します 永続ストレージ上のファイルには、エラーを修正するためのbtrfsがあります スワップには??? <---これは私の質問です

2
ESRCHの意味?
次のうち:http : //pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html errnoコードがこの方法を除いて特定の方法で名前が付けられている理由は常に明確です。SRCHはそのようなプロセスとどのように関連していますか?

1
シェルスクリプトのファイル処理の堅牢性をテストするにはどうすればよいですか?
一部の「通常の」ファイル名を処理するシェルスクリプトを作成しましたが、「シェルスクリプトが空白やその他の特殊文字で詰まるのはなぜですか?」を読みました。そしてなぜあなたはLSの出力を解析べきではないと私はそれがより堅牢でかつ有効な任意のファイル名(および/またはディレクトリ名)を処理したいと思います。スクリプトを実行するファイルとディレクトリのテストベッドを作成するにはどうすればよいですか?

3
$を使用するためのベストプラクティスは?バッシュで?
$についてこの答えを読んだとき?別の質問が思い浮かびます。 $の使用方法に関するベストプラクティスはありますか?バッシュで? 例を挙げましょう: 線形スクリプトがあり、すべてのコマンドが正常に実行されたことを知りたいのですが。小さな関数( "did_it_work"と呼びましょう)を呼び出して、エラーコードを確認し、そうでない場合は中断しても問題ないと思いますか。 #!/bin/bash function did_it_work { code=$1 if [ "$code" -ne "0" ] then echo "Error failure: code $code " exit 1 fi } dir=some/path mkdir -p $dir did_it_work $? cd $dir did_it_work $? run_some_command did_it_work $? もちろん、このアプローチは、問題があれば手動で解決してスクリプトを再実行する必要があることを意味します。 これは良いアイデアだと思いますか、これを行うための他のベストプラクティスはありますか? /ありがとう

4
blk_update_request:I / Oエラー、dev fd0、セクター0
最近blk_update_request: I/O error, dev fd0, sector 0、サーバーとして使用しているArch Linuxを実行している2台目のコンピューターのエラーに気づき始めました。これは、新しいアパートに引っ越したときにコンピューターを再起動しなければならなかったときに始まりました。私は次の/etc/fstab構成を持っていました: # # /etc/fstab: static file system information # # <file system> <dir> <type> <options> <dump> <pass> #UUID=94880e53-c4d3-4d4d-a217-84c9ac58f4fd /dev/sda1 / ext4 rw,relatime,data=ordered 0 1 #UUID=c1245aca-bbf7-4813-8c25-10bd0d95631e /dev/sda2 none swap defaults 0 0 #UUID=94880e53-c4d3-4d4d-a217-84c9ac58f4fd /dev/sdb1 /media/marcel/videos auto rw,user,auto 0 0 したがって、メインのHDDがマウントされ/、外部のHDDがマウントされ/media/marcel/videosます。問題は、再起動後、外部ドライブ/dev/sdaと内部ドライブが取得されたこと/dev/sdbです。コンピュータ/media/marcel/videosは、どれがのクローンであるかを調べるまで、私の知る限り問題なく起動しました/。外付けドライブを取り外し、メインドライブのトラブルシューティングを行っています。 Relavent dmesg: ACPI Error: …

4
リダイレクトが失敗した場合、bashプログラムは実行されません
bashでは、リダイレクトを使用するコマンドが失敗すると、それより前に実行されていたプログラムは実行されないことに気づきました。 たとえば、このプログラムはファイル "a"を開き、50バイトをファイル "a"に書き込みます。ただし、権限が不十分なファイル(〜root / log)へのリダイレクトを指定してこのコマンドを実行しても、「a」のファイルサイズは変更されません。 $ ./write_file.py >> ~root/log -bash: /var/root/log: Permission denied cdal at Mac in ~/experimental/unix_write $ ls -lt total 16 -rw-rw-r-- 1 cdal staff 0 Apr 27 08:54 a <-- SHOULD BE 50 BYTES プログラムが実行され、すべての出力がキャプチャされ(ファイル "a"にも書き込まれる)、その後、出力が〜root / logに書き込まれなくなると考えられます。代わりに、プログラムは実行されません。 これはなぜですか、またbashはプログラムを実行する前に実行する「チェック」の順序をどのように選択するのですか?他のチェックも実行されますか? PS私は、「許可が拒否された」ファイルにリダイレクトされたときに、cronで実行されているプログラムが実際に実行されたかどうかを確認しようとしています。

1
Linux for VMS DCLの「エラー時」とは何ですか?
使用VMS DCLの 1が使用してエラーをキャッチすることができ、コマンドスクリプトをon errorコマンド: $ on error then goto MyErrorHandler $ directory samiam.txt $ delete x.txt $ exit $MyErrorHandler: $ print "Something." Linuxlandではこれをどのように行うのですか? この例では、directoryまたはのエラーにより、delete制御がに移動しMyErrorHandlerます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.