Linuxマシンの電源が落ちない理由と解決方法

このQ&Aのポイント
  • Linuxマシンの電源が落ちない原因としては、プログラムの中で使用しているreboot( RB_POWER_OFF )が正しく実行されていない可能性があります。
  • 結果としてPower downと表示されるものの、すぐに復活してしまう現象が発生しています。
  • reboot( RB_AUTOBOOT )は成功しているため、マシンが再起動することは確認されています。
回答を見る
  • ベストアンサー

reboot( RB_POWER_OFF )が上手く実行されない

以下のプログラムを実行してもLinuxマシンの電源が落ちません。 何故でしょうか。わかる方ご教授願います。 ----------------- start ------------------- #include <unistd.h> //@hanada_add@ #include <sys/reboot.h>//@hanada_add@ -- 省略 -- reboot( RB_POWER_OFF ); ----------------- end ------------------- 以下が結果です。 ----------------- start ------------------- [root@nmpb_linux02 BIN]# Message from syslogd@nmpb_linux02 at Sun Aug 18 03:02:44 2002 ... nmpb_linux02 kernel: Power down. ----------------- end ------------------- Power downと表示はされていますが、Enterキーを押すと すぐに復活してしまいます。 というか、マシンが電源OFFされるのを期待しているのですが。。 ちなみにreboot( RB_AUTOBOOT )は成功します。(マシンが再起動します)

質問者が選んだベストアンサー

  • ベストアンサー
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.1

rebootのmanを見ながら試してみましたが、リブート・電源OFFともに実行できました。 だけど、いきなり落ちるのでちょっと心配です。 (Red Hat 8です。) #include <stdio.h> #include <unistd.h> #include <linux/reboot.h> void main(void) { sync(); // reboot(LINUX_REBOOT_CMD_RESTART2); // reboot(LINUX_REBOOT_CMD_RESTART); // reboot(LINUX_REBOOT_CMD_HALT); reboot(LINUX_REBOOT_CMD_POWER_OFF); }

参考URL:
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/reboot.2.html
hanada
質問者

補足

回答して頂いたソースコードを真似て試したのですが、相変わらず結果が変わりません。ソースプログラムに影響されている結果ではないのでしょうか?(カーネルの設定とか???) あと、Linux7.2では上記ソースコードではフラグがたちます。rebootがありませんと怒られます。#include <sys/reboot.h> を加えるとmake通ります。manを見ると、<linux/reboot.h> をインクルードするときはrebootのパラメータは4つ指定しないと駄目なように見えるのですが???バージョンが違うせい???

関連するQ&A

  • 自動電源オフ

    izumoです、お世話になります。 ターボリナックス6.1を使用しているのですが、 shutdown -h now で、自動的に電源が切れないのです。 コマンドを実行すると、デーモンの停止が出た後に power down と、出てとまります。このあと、主導で電源を切らないといけないのですが、これでは少々困るのでして。 kernelは、2.2.15-8からTurboLinuxのHpからダウンロードしたRPMで2.2.18-10にアップしています。(rpm -Uvh *.rpm としました。その他設定無し。) 同HPにて、調べると/etc/rc.d/init.d/halt に変更を加えると、あるので確認したところ、変更の必要はありませんでした。(command="halt -p"の行) apmのインストールは済です。BIOSは確認はしてあり、同じBIOS設定のwindows機は電源が切れます。 そのた、補足すべきことがありましたら、要求してください。 ※テスト用マシンでは、windows2000とlinuxが共存しており、windowsはシャットダウンで電源は切れます。この、Linuxも上記Linuxとほぼ同じ環境ですが、やはり電源は切れません。(この、テストマシンは上記のマシンとは全くの別物です。) 長くなりましたが、よろしくお願いします。

  • プログラミング

    emacsにて子プロセスの実行時間を測定するプログラムを作成せよ。 尚、子プロセスは5秒間sleep後、exitする。 下のプログラムに2行付け加えるだけなんですが教えてください #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> time_t start, end; int main() { int j; time(&start); // start if (fork()==0) { この部分に、5秒間スリープ後、exit()するプログラムを書く。 2行です。子プロセスの実行結果(EXIT_SUCCESS)も忘れずに入れる。 } wait(&j); time(&end); // stop printf("elapsed time= %d seconds\n", (int) (end-start)); return EXIT_SUCCESS; }

  • (再)パソコンがリブートしてしまう原因?

    今、XP Proを自作系マシンで使用しています。 マシンはごく最近購入したもので、消して古くも 性能も悪くはありません。 しかし、Windowsのアップデート(SP1)をかけて から新たに表示される”修正プログラム”をダウン ロード&インストールすると、なぜかリブートがか かってしまい起動できなくなります。といっても、 1時間くらい電源を抜いておくと起動するようにな りますが。しかし、なかなか起動してくれない事も 多く、マイクロソフトのサイトで検索しても原因& 回避方法などもなくとても困ってます。 どなたか同じ経験や症状の方、回避&原因がお分かり になる方、いらっしゃいましたら、書き込みお願いします。

  • emacs

    emacsにてelapse_time.cを参考にして子プロセスの実行時間を測定するプログラムを作成せよ。 尚、子プロセスは5秒間sleep後、exitする。という問題教えてください elapse_time.c #include <stdio.h> #include <stdlib.h> time_t start, end; int main() { time(&start); // start sleep(5); time(&end); // stop printf("elapsed time= %d seconds\n",end-start); return EXIT_SUCCESS; } 下のプログラムに2行付け加えるだけなんですが教えてください #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> time_t start, end; int main() { int j; time(&start); // start if (fork()==0) { この部分に、5秒間スリープ後、exit()するプログラムを書く。 2行です。子プロセスの実行結果(EXIT_SUCCESS)も忘れずに入れる。 } wait(&j); time(&end); // stop printf("elapsed time= %d seconds\n", (int) (end-start)); return EXIT_SUCCESS; }

  • RB0が電圧落ちる

    以前RB6と投稿していましたがRB0でした ダイナミック点灯で4x4のLEDを制御するのですが PORTBの0~3はアノード 4~7はカソードに接続 なぜか PORTBの0につながるLEDだけ暗くなるんです MPLABIDEでXC8コンパイラを使用しております #include <stdio.h> #include <stdlib.h> #include <xc.h> // PIC16F886 Configuration Bit Settings // CONFIG1 #pragma config FOSC = XT #pragma config WDTE = OFF #pragma config PWRTE = ON #pragma config MCLRE = ON #pragma config CP = OFF #pragma config CPD = OFF #pragma config BOREN = OFF #pragma config IESO = OFF #pragma config FCMEN = OFF #pragma config LVP = OFF // CONFIG2 #pragma config BOR4V = BOR40V #pragma config WRT = OFF void delay(int a); int main(int argc, char** argv) { int i; ANSEL=0x00; ANSELH=0x00; ADCON0=0x83; ADCON1=0x00; TRISA=0x3F; TRISB=0x00; TRISC=0xFF; PORTA=0x00; PORTB=0x00; PORTC=0x00; while(1){  delay(1000);      PORTB=0b00000001;  delay(1000);  PORTB=0b00000010;  delay(1000);  PORTB=0b00000100;  delay(1000);  PORTB=0b00001000;  delay(1000);  PORTB=0b00000000;  delay(1000); } return (EXIT_SUCCESS); } void delay(int a){     //crystal frequency =20MHz //if x=1;(a)msec_Delay //if x=1000;(a)sec_Delay #define x 1 #define p 246/5*2 int t;int u;int v;v=a*x; for(t=1;t<=v;t++){ for(u=1;u<=p;u++){ ; } } }; あと 投稿時にtabキーを使用するには どうしたらいいでしょう

  • system関数を使用してsuコマンドを実行したいのですが

    Linux RedHat7.2の環境にて、system関数を使用してsuコマンドを実行し、ルートになりたいのですが(さらにその後rebootしたい)、以下の結果のようになってしまいルートになれません。system()の使用方法がまずいのでしょうか。 どなたか助けてください。お願いします。 --------------------------ソースコード-------------------------------- #include <stdio.h> #include <stdlib.h> int main( int argc, char **argv) { int i; i = system("su - password"); i = system("reboot"); return 0; } --------------------------ソースコード-------------------------------- --------------------------結果-------------------------------- [nmpb@nmpb_linux02 BIN]$ ./aaa.out su: user password does not exist --------------------------結果--------------------------------

  • W52H オートパワーON/OFF

    こんにちは。 最近、携帯をWINに機種変更しました。W52Hです。思った通り、たいへん良く出来ていて大満足です。 一つだけ以前の機種(A5509T)にはあったのに、W52HではオートパワーONとOFF(指定時刻に電源を入れる、切る)がないので残念です。ほとんどの機種にはついていると思っていた(思い込んでいた)ので、ちょっと不便です。 まだ使い始めたばかりでマニュアルを読んでいるのですが、見当たらないので、同じ機種をお使いの方で、設定の仕方を知っておられる方、もしくは類似の効果がある機能などお教えいただけると幸いです。

    • ベストアンサー
    • au
  • cron設定で電源のOFFができません。

    cron設定で電源のOFFができません。 cent OS 5.5 で自宅サーバーを立上げ勉強中です。 サーバーの電源を自動で18:00にONにして翌日の7:00にOFFにしたいと思います。 いろいろなホームページを参考にさせていただき、電源のONはパソコンのBIOS設定、OFFは"cron"を使うことできることがわかりました。 電源のONはパソコンのBIOS設定でできましたが、OFFができません。 設定は以下としています。 [root@Linux ~]# vi /etc/crontab CSHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly 0 7 * * * shutdown -h now #追加 [root@Linux ~]# /etc/rc.d/init.d/crond restart [root@Linux ~]#chkconfig crond on [root@Linux ~]# chkconfig --list crond crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@Linux ~]# /etc/rc.d/init.d/crond status crond (pid xxx) を実行中... 設定時間になっても電源がOFFになりません。 [root@Linux ~]# shutdown -h now ではOFFにできます。 (cent OS 5.5 をインストールしているパソコンは 富士通 FMV DESKPOWER CE18B 2002 年製です) よろしくお願いします。

  • 玄箱(無印)で再起動が出来ない

    Linuxに殆ど触ったことのない初心者です。 家にあった古い玄箱に最近Debianを入れ、SSH設定まで済ませSSHでログインし、再起動のため$su にて$reboot を入力すると表示上は正しい(The system is going down for reboot NOW! )のですが、実際には再起動せず、SSHでの接続も何もできないという状態になりました。 その後、本体のスイッチでも電源を落とすことが出来ず、コードを直接抜くことをしないと駄目になりました。 普段は電源ボタンを長押しすればきちんと電源は落ちるのですが$reboot の後は全く効かなくなります。 $reboot の代わりに$shutdown -r now でも結果は同じでした。 $shutdown -h now は正常に効くのでrebootの時のみです。

  • ソフト移植(ヘッダーファイルとライブラリの違い)

    hファイルとLibファイルの違いがよくわかりません libでリンクしてhファイルを指定してCで命令を与える そこで問題なんですが 1.libファイルは作成できるんですか? 2.それともhファイルを書き換えるのが主流ですか? 3.学校でWEBカメラ移植の実験をしています #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <sys/ioctl.h> #include <stdlib.h> #include <linux/videodev.h> そこで上のライブラリ(.h file)をそのまま使って別のマイコンに移植しようという実験をしているのですがgcc(video4Linux)のライブラリ(.h file)抽出の仕方がよくわかりません すでにカメラのプログラムはあり、後はそのマイコンにライブラリをリンクすれば完成できるという設計構造なのですが、ソフト開発移植にあたって、この開発構造の概念であっているでしょうか? ライブラリを抽出する上で何か適切なアドバイスとかないでしょうか? *ちなみにマイコンのコンパイラーは自作です お願いします

専門家に質問してみよう