質問: redhatで使用するシェルを作りたいです。 redhatで使用するシェルを作りたいです。 linuxはほとんど触ったことがなく、そもそもの理解が間違っているかもしれません。 ご容赦ください。 サーバosがredhat5.4?でとりあえずシャットダウン処理を走らせる、簡単なコマンドでできないかと思っています。 windowsだとbatファイルにshutdownコマンドを記入して実行すればシャットダウンされますが、linuxの場合はshファイルにどのようなコマンドを記入してどう実行すればよいのかわかりません。 windowsとは勝手が違うのでしょうか? インターネットで調べてみましたが入門編のようなサイトが見当たらず、このように投稿した次第です。 よろしければコマンドの書き方と実行方法を教えていただけると助かります。 よろしくお願いします。
回答: シェルとは、osとユーザーの間に入る仕組みを指す言葉で os環境の変遷によって、意味が多様化していますが... unixではターミナルエミュレーターやsshログイン時などで キーボード操作を司るソフトウェアです。 (sh,csh,bashほかいろんなシェルがあります) このシェルで動かすテキストファイルによる自動処理の仕組み またそのためのテキストファイルをシェルスクリプトと呼びます。 シェルスクリプトは、慣例としてshという拡張子を付けることが多いのですが unix系osでの実行可否は、拡張子ではなく属性によって決まるため 必ずしもshという拡張子が必要なわけではありません。 逆に言えば、shという拡張子を付けても属性設定を誤れば実行されません。 また、ms-dosなどのように、カレントディレクトリーにある実行ファイルが 最優先で実行対象になるということもありません。 ./test.shといった書式で明示しない限り、規程の実行パスに基づき処理されます。 でシャットダウンの手段ですが... microsoftがshutdownというコマンドを発見する前から unix系osではshutdownコマンドが使われてきました。 (microsoftはインターネットを発見するのに3年から10年かかったと揶揄されます) まぁ、ms-dos時代のpcは、同時期のmacと違い ソフトウェアからの電源offができなかったりしていましたが ms-dosの終了手段さえも、microsoftからは提供されていなかったのです。 (再起動もhsbみたいなツールが大人気だったし) linuxのshutdownコマンドでは、osの終了と、osの終了後の電源offが可能です。 また、コマンド発行時にターミナルエミュレーターやsshなどから繋がった端末に 終了を伝えるメッセージを送る機能もあります。 この機能を効果的に利用するために、コマンド発行から 実際の終了処理開始までの時間を指定することもできます。 〉システムは reboot に向けて、 30 分後にシャットダウンします! といったメッセージが表示されます。 (ただしgnome-terminalやkonsoleなどの別タブには表示されません) 通常はroot権限で使う必要があります。 限定的に一般ユーザーに使わせるためには シェルスクリプトで工夫することができます。 linuxでは初期段階でそういったシェルスクリプトが用意されている場合もあります。 管理者権限に関する事情は、windowsとlinuxではいろいろ違う気がしますが... windowsでバッチファイルを作らなくてもshutdownコマンドが使えるように linuxでのshutdownもシェルスクリプトを作らなくても使えます。 シェルスクリプトで定型的な使い方を用意するのも便利ですが...コマンドラインで yum check-update;yum updateyum -y update;sleep 30m;shutdown -h now と入力して使うこともできます。 (アップデート終了後、30分放置されていたら電源を落とす:但しroot権限にて)