タグ付けされた質問 「bash」

BashはBourne Again SHellであり、古典的なUnix sh(シェル)の後継です。

2
「スクリプト」を/ dev / null /にリダイレクトすると、「スクリーン」が別のユーザーとしてsuになっているときに機能するのはなぜですか?
特定の長時間実行されるスクリプトを実行するために、ユーザーに夢中になりました。画面を使用したいのですが、「端末 '/ dev / pts / 4'を開けません-チェックしてください」というエラーメッセージが表示されました。 だから私はグーグルで検索して、実行するよう指示されたフォーラムの投稿に出会いました$ script '/dev/null/'。私はそうし、それから私はスクリーニングできた。 なぜこれが機能するのですか?その画面を実行しているsuは、su'edユーザーとして実行できませんか?なぜ 'script'を/ dev / nullにリダイレクトすると、それが妨げられるのですか?スクリプトを使用して、元のユーザーとしてログをどこかに書き込みますか?
37 linux  bash  gnu-screen  su 

3
#!/ bin / sh対#!/ bin / bashにより移植性が最大化
I私はシンボリックリンクを理解して何からUbuntuのLTSサーバと通常の作業/bin/shに/bin/dash。への他の多くのディストリビューション/bin/shへのシンボリックリンク/bin/bash。 それから、スクリプトが#!/bin/sh上で使用する場合、すべてのサーバーで同じように実行されない可能性があることを理解していますか? サーバー間でスクリプトの移植性を最大限にしたい場合に、スクリプトに使用するシェルに関する推奨プラクティスはありますか?
36 linux  bash  shell  sh 

4
bash:変数は、while読み取りループの終わりに値を失います
シェルスクリプトの1つに問題があります。数人の同僚に尋ねましたが、彼らは皆、頭を振っただけです(少しひっかいた後)ので、私は答えを求めてここに来ました。 私の理解によると、次のシェルスクリプトは最後の行として「Count is 5」を出力するはずです。そうでないことを除いて。「Count is 0」と出力されます。「while read」が他の種類のループに置き換えられた場合、正常に機能します。スクリプトは次のとおりです。 echo "1"> input.data echo "2" >> input.data echo "3" >> input.data echo "4" >> input.data echo "5" >> input.data CNT = 0 cat input.data | 読みながら 行う CNT ++; echo "$ CNTへのカウント" やった echo "カウントは$ CNT" なぜこれが起こり、どうすればそれを防ぐことができますか?Debian LennyとSqueezeでこれを試しましたが、同じ結果です(つまり、bash 3.2.39とbash 4.1.5。シェルスクリプトウィザードではないことを完全に認めているので、ポインタをいただければ幸いです。
36 bash  scope 

7
bashコマンド出力から「仮想ファイル」を作成しますか?
bashの出力から「仮想ファイル」を作成する方法があるのだろうか。 例:の出力をmysqldump外部の電子メールアドレスへの添付ファイルとして電子メールで送信するとします。Muttを使用してそうすることができます。mutt私が使用する必要があるオプションがあります-a <name of the file I want to attach>。私は一時ファイルを使用できることを知っています: mysqldump mysqldumpoptions > /tmp/tempfile && mutt -a /tmp/tempfile admin@example.org ただし、mysqldump代わりに出力をMuttに直接リダイレクトします。Muttの-aオプションはファイルのみを受け入れ、ストリームは受け入れませんが、ある種の仮想ファイル記述子またはそれらの行に沿って何かを渡す方法があるかもしれません。何かのようなもの: mutt -a $(mysqldump mysqldumpoptions) admin@example.org 出来ますか?そうでない場合、なぜですか? これはおそらくばかげた例であり、これを行う簡単な方法は確かにありますが、別のコマンドの出力から仮想ファイルを作成することについての私の質問を説明してくれることを願っています。
36 bash  redirection 

1
ターミナルセッションから実行中のスクリプトを回復する
したがって、GNU Screenを使用して、実行中の複数のスクリプト/プログラムを管理しています。多重化と分離は非常に役立ちます。 ディスクからスクリプトを削除しましたが、バックアップを見つけるのに苦労しています。ただし、ファイルが削除される前に、ターミナルセッションの1つがスクリプトを実行していたため、引き続き正常に機能します。 現在スクリプトを実行しているターミナルセッションをハイジャックして、このファイルの内容を回復する方法はありますか?


6
Bashループ-コマンド内でControl-Cを押したときにループを停止する方法
いくつかのディレクトリを再同期しています。私はbashターミナルを開いており、次のようなものを実行しています: for DIR in * ; do rsync -a $DIR example.com:somewhere/ ; done ただし、すべてを停止する場合は、Control-Cを押します。それはrsyncを停止しますが、それから次のものに行き続けます。この場合、私は何が起こったかを理解し、その後、物事が再び機能するまで、単に狂人のようにControl-Cを押します。 これを「修正」する方法はありますか。そのようなループがあり、Control-Cを押すと、bashシェルに戻ります。

8
PuTTYおよび画面でCtrlキーと矢印キーを使用する
私は検索し、どこでもこれに対する解決策を見つけることができませんでした。WindowsのPuTTYを使用して、bashとscreenを実行するさまざまなサーバーに接続しています。bashは、Ctrlキーと矢印キーを使用してコマンドラインで単語間をジャンプできますが、画面内では機能しません。画面ではなく、ctrl-leftは "^ [OCを送信し、ctrl-rightは" ^ [OD "を送信します。画面内では、代わりに" ^ [[C "および" ^ [[D "を取得します。左/右矢印キー。PuTTYを使用しているときにctrl矢印キーを認識するための画面を取得する方法はありますか?(FYI、PuTTYの代わりにLinuxでgnu-terminalを使用するときにこの問題を覚えていません)。 更新:PuTTYは、これが機能するために必要なエスケープコードを送信していないため、問題のようです。今はあきらめて、Cygwin + minttyを使用しています。
33 bash  gnu-screen  putty 




2
ulimit -nと/ proc / sys / fs / file-maxの違いは何ですか?
EC2から起動したばかりの新しいCentOSイメージでは、ulimitのデフォルトは1024のオープンファイルですが、/ proc / sys / fs / file-maxは761,408に設定されており、これら2つの制限がどのように機能するのか疑問に思います一緒に。ulimit -nはユーザーごとのファイル記述子数の制限であり、/ proc / sys / fs / file-maxはシステム全体であると推測していますか?その場合は、同じユーザーとして2回ログインしたとしましょう-各ログインユーザーは、開いているファイルの数に1024の制限がありますか、それとも、ログインした各ユーザー間で合計1024の開いたファイルの制限がありますか?ユーザーに? システムが非常に多くのファイルを開いていない場合、最大ファイル記述子を非常に高い数値に設定すると、パフォーマンスに大きな影響がありますか?
32 linux  bash  kernel  ulimit 

3
systemdで監視されたサービスが失敗状態になったときに通知を受け取ります
systemdサービスがクラッシュまたはハングした場合(つまり、障害状態になった場合、WatchdogSec =を使用してハングを監視します)、ネットワークメッセージを送信する必要があります。新しいsystemdにはFailureAction =があることに気付きましたが、これでは任意のコマンドが許可されず、再起動/シャットダウンのみが許可されることがわかりました。 具体的には、systemdがプログラムのクラッシュを検出したときに1つのネットワークメッセージを送信し、ハングしたことを検出したときに別のネットワークメッセージを送信する方法が必要です。 「ログを解析する」よりも良い答えを望んでいます。また、ほぼ瞬時に応答するものが必要なので、ポーリングのアプローチは良いとは思いません。発生するイベントによってトリガーされるものでなければなりません。
32 linux  bash  service  systemd 



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.