こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

RedHat7.2を使用しています。
起動時にAユーザーでログインし、コマンドを実行することを自動でやりたいのですが可能でしょうか?

ログインするのが無理であれば、Aユーザーの権限でコマンドを実行するだけでも構いません。

ご存知の方がおられましたらご教授ください。

投稿日時 - 2002-10-31 20:02:25

QNo.394126

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

11人が「このQ&Aが役に立った」と投票しています

回答(9)

ANo.9

xjd

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のコマンドもあなたが作ったプログラムも同じように書けます。

どんなプログラムを動かそうとしてるのですか?
起動シェルの内容は?
シェルやプログラムのオーナ・権限は?

投稿日時 - 2002-11-06 17:25:29

ANo.8

xjd

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のコマンドもあなたが作ったプログラム同じように書けます。

投稿日時 - 2002-11-06 17:19:11

ANo.7

xjd

または、

-c "/usr/bin/pg_ctl_1;/usr/bin/pg_ctl_2" &

と書くと、pg_ctl_1の終了を待ってからpg_ctl_2が動きます。
キーボードから実行するの同じです。

(#6の場合はpg_ctl_1とpg_ctl_2が同時に動くわけです。)

投稿日時 - 2002-11-05 23:56:56

補足

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

投稿日時 - 2002-11-06 13:06:57

ANo.6

xjd

>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" &

投稿日時 - 2002-11-05 23:52:16

ANo.5

xjd

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

投稿日時 - 2002-11-02 00:54:41

ANo.4

xjd

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

投稿日時 - 2002-11-02 00:37:51

補足

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

投稿日時 - 2002-11-05 17:48:43

ANo.3

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

投稿日時 - 2002-11-01 17:25:51

補足

はじめの3桁の意味がわからなかったので

S99myboot

としました。
現在はテキストモードでしか使用してないので、/tc/rc3.dにしか作成していません。

よろしくお願い致します。

投稿日時 - 2002-11-01 17:30:23

ANo.2

xjd

/etc/init.dにおいただけではだめなんです。

/etc/init.dに置いたシェルスクリプトのシンボリックリンク(Windowsのショートカットみたいなもの)を/etc/rc3.dとか/etc/rc5.dなどに作成することになっています。

rc3とかrc5の数字はOSのランレベルを意味します。

あなたのLinuxのランレベルが何かは/etc/inittabに記述されています。

linux ランレベル のキーワードで検索してみてください。

一度に説明すると大変なので一つずつ理解していきましょう。

投稿日時 - 2002-11-01 13:36:27

補足

度々のご教授ありがとうございます。
シンボリックリンクを作成し、起動時にそのシェルが動こうとしています。
今回、"myboot"というリンクを作成し、起動時に"Starting myboot:"とコンソールに表示されるようになりました。が、そこで止まってしまってるんです・・・
シェルの内容が悪いんだと思うのです。
その内容は、

#!/bin/sh
su ユーザー名
実行したいコマンド

というような単純なものを書いてみたのですが、これではダメでしょうか?

投稿日時 - 2002-11-01 14:42:38

ANo.1

xjd

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

投稿日時 - 2002-10-31 21:37:54

補足

ご返答ありがとうございます。

シェルを作成して、/etc/init.d配下に置いてみたのですがうまくいきません。

シェルの内容を申し越し詳しく教えていただけないでしょうか?
素人なので申し訳ありませんがよろしくお願いします。

投稿日時 - 2002-11-01 13:21:12

あなたにオススメの質問