• 締切済み

Linuxで自動ログインできますか?

RedHat7.2を使用しています。 起動時にAユーザーでログインし、コマンドを実行することを自動でやりたいのですが可能でしょうか? ログインするのが無理であれば、Aユーザーの権限でコマンドを実行するだけでも構いません。 ご存知の方がおられましたらご教授ください。

みんなの回答

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

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)
回答No.8

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)
回答No.7

または、 -c "/usr/bin/pg_ctl_1;/usr/bin/pg_ctl_2" & と書くと、pg_ctl_1の終了を待ってからpg_ctl_2が動きます。 キーボードから実行するの同じです。 (#6の場合はpg_ctl_1とpg_ctl_2が同時に動くわけです。)

Mifutsuta
質問者

補足

一つ目のコマンドは実行できましたが、二つ目がうまく動きません。 また、"/usr/bin/pg_ctl_1"となっているところに直接コマンドを書くことはできるのでしょうか? なんども質問してすみませんがよろしくお願い致します。

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

>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)
回答No.5

(補足) いままで説明しませんでしたが、 /etc/rc.d/rc.local というファイルがあります。 これはMS-DOSでいうところのautoexec.batにあたります。(OS起動時に必ず実行される) ランレベルとかシンボリックリンクとかめんどくさければ、このファイルに記述すればよいです。

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

>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コマンドの引数の意味を調べてみてください。 もうすこしですね。

Mifutsuta
質問者

補足

suコマンドもだいぶ理解できました。しかし最後の"-c"のところでコマンドを2つ実行したいのですが、その方法はありますでしょうか? 実行ファイルを作って、それを起動させる方法が良いのでしょうか?あと一歩でできそうです!よろしくお願い致します。

  • _safety_
  • ベストアンサー率100% (1/1)
回答No.3

/etc/rc3.dと/etc/rc5.d に作成したシンボリックリンク名は何になっていますか?

Mifutsuta
質問者

補足

はじめの3桁の意味がわからなかったので S99myboot としました。 現在はテキストモードでしか使用してないので、/tc/rc3.dにしか作成していません。 よろしくお願い致します。

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

/etc/init.dにおいただけではだめなんです。 /etc/init.dに置いたシェルスクリプトのシンボリックリンク(Windowsのショートカットみたいなもの)を/etc/rc3.dとか/etc/rc5.dなどに作成することになっています。 rc3とかrc5の数字はOSのランレベルを意味します。 あなたのLinuxのランレベルが何かは/etc/inittabに記述されています。 linux ランレベル のキーワードで検索してみてください。 一度に説明すると大変なので一つずつ理解していきましょう。

Mifutsuta
質問者

補足

度々のご教授ありがとうございます。 シンボリックリンクを作成し、起動時にそのシェルが動こうとしています。 今回、"myboot"というリンクを作成し、起動時に"Starting myboot:"とコンソールに表示されるようになりました。が、そこで止まってしまってるんです・・・ シェルの内容が悪いんだと思うのです。 その内容は、 #!/bin/sh su ユーザー名 実行したいコマンド というような単純なものを書いてみたのですが、これではダメでしょうか?

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

/etc/init.d配下のシェルを参考にしてみてはいかがでしょう。 たとえばpostgresはpostgresユーザの権限で起動時に動きます。

Mifutsuta
質問者

補足

ご返答ありがとうございます。 シェルを作成して、/etc/init.d配下に置いてみたのですがうまくいきません。 シェルの内容を申し越し詳しく教えていただけないでしょうか? 素人なので申し訳ありませんがよろしくお願いします。

関連するQ&A