- 締切済み
Linuxで自動ログインできますか?
RedHat7.2を使用しています。 起動時にAユーザーでログインし、コマンドを実行することを自動でやりたいのですが可能でしょうか? ログインするのが無理であれば、Aユーザーの権限でコマンドを実行するだけでも構いません。 ご存知の方がおられましたらご教授ください。
- みんなの回答 (9)
- 専門家の回答
みんなの回答
- xjd
- ベストアンサー率63% (1021/1612)
xjdさんが/tmp/pg1、/tmp/pg2というプログラム(C言語)を作って、 /etc/init.d/xjd -> /etc/rc3.d/S99xjd という起動シェルを作って試してみましたが、問題なく動きます。 /etc/init.d/xjdの中身 #!/bin/sh su - xjd -s /bin/sh -c "/tmp/pg1;/tmp/pg2" & >また、"/usr/bin/pg_ctl_1"となっているところに直接コマンドを書くことはできるのでしょうか? 書けます。Linuxのコマンドもあなたが作ったプログラムも同じように書けます。 どんなプログラムを動かそうとしてるのですか? 起動シェルの内容は? シェルやプログラムのオーナ・権限は?
- xjd
- ベストアンサー率63% (1021/1612)
xjdさんが/tmp/pg1、/tmp/pg2というプログラム(C言語)を作って、 /etc/init.d/xjd -> /etc/rc3.d/S99xjd という起動シェルを作って試してみましたが、問題なく動きます。 /etc/init.d/xjdの中身 #!/bin/sh su - xjd -s /bin/sh -c "/tmp/pg1;/tmp/pg2" & >また、"/usr/bin/pg_ctl_1"となっているところに直接コマンドを書くことはできるのでしょうか? 書けます。Linuxのコマンドもあなたが作ったプログラム同じように書けます。
- xjd
- ベストアンサー率63% (1021/1612)
または、 -c "/usr/bin/pg_ctl_1;/usr/bin/pg_ctl_2" & と書くと、pg_ctl_1の終了を待ってからpg_ctl_2が動きます。 キーボードから実行するの同じです。 (#6の場合はpg_ctl_1とpg_ctl_2が同時に動くわけです。)
- xjd
- ベストアンサー率63% (1021/1612)
>suコマンドもだいぶ理解できました。しかし最後の"-c"のところでコマンドを2つ実行したいのですが、その方法はありますでしょうか? 後ろに&をつけて2行書くだけです。簡単でしょ。 su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl_1" & su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl_2" &
- xjd
- ベストアンサー率63% (1021/1612)
(補足) いままで説明しませんでしたが、 /etc/rc.d/rc.local というファイルがあります。 これはMS-DOSでいうところのautoexec.batにあたります。(OS起動時に必ず実行される) ランレベルとかシンボリックリンクとかめんどくさければ、このファイルに記述すればよいです。
- xjd
- ベストアンサー率63% (1021/1612)
>S99myboot これはOKです。(ただし所有者と権限を確認のこと) 99は起動する順番です。とりあえず後ろの方で動かすと無難です。 >/etc/rc3.dにしか作成して これもOKです。 >#!/bin/sh >su ユーザー名 >実行したいコマンド これはまずいです。suの行で実行が止まってしまいます。 #1でpostgresqlの起動シェルを参考にして、といいましたが、こんな風になっています。 su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl" suコマンドの引数の意味を調べてみてください。 もうすこしですね。
補足
suコマンドもだいぶ理解できました。しかし最後の"-c"のところでコマンドを2つ実行したいのですが、その方法はありますでしょうか? 実行ファイルを作って、それを起動させる方法が良いのでしょうか?あと一歩でできそうです!よろしくお願い致します。
- _safety_
- ベストアンサー率100% (1/1)
/etc/rc3.dと/etc/rc5.d に作成したシンボリックリンク名は何になっていますか?
補足
はじめの3桁の意味がわからなかったので S99myboot としました。 現在はテキストモードでしか使用してないので、/tc/rc3.dにしか作成していません。 よろしくお願い致します。
- xjd
- ベストアンサー率63% (1021/1612)
/etc/init.dにおいただけではだめなんです。 /etc/init.dに置いたシェルスクリプトのシンボリックリンク(Windowsのショートカットみたいなもの)を/etc/rc3.dとか/etc/rc5.dなどに作成することになっています。 rc3とかrc5の数字はOSのランレベルを意味します。 あなたのLinuxのランレベルが何かは/etc/inittabに記述されています。 linux ランレベル のキーワードで検索してみてください。 一度に説明すると大変なので一つずつ理解していきましょう。
補足
度々のご教授ありがとうございます。 シンボリックリンクを作成し、起動時にそのシェルが動こうとしています。 今回、"myboot"というリンクを作成し、起動時に"Starting myboot:"とコンソールに表示されるようになりました。が、そこで止まってしまってるんです・・・ シェルの内容が悪いんだと思うのです。 その内容は、 #!/bin/sh su ユーザー名 実行したいコマンド というような単純なものを書いてみたのですが、これではダメでしょうか?
- xjd
- ベストアンサー率63% (1021/1612)
/etc/init.d配下のシェルを参考にしてみてはいかがでしょう。 たとえばpostgresはpostgresユーザの権限で起動時に動きます。
補足
ご返答ありがとうございます。 シェルを作成して、/etc/init.d配下に置いてみたのですがうまくいきません。 シェルの内容を申し越し詳しく教えていただけないでしょうか? 素人なので申し訳ありませんがよろしくお願いします。
補足
一つ目のコマンドは実行できましたが、二つ目がうまく動きません。 また、"/usr/bin/pg_ctl_1"となっているところに直接コマンドを書くことはできるのでしょうか? なんども質問してすみませんがよろしくお願い致します。