CentOS 6 64ビットで非rootユーザーとして起動すると、Linuxプログラムが自動的に実行されます。

CentOS 6 64ビットで非rootユーザーとして起動すると、Linuxプログラムが自動的に実行されます。

特定のユーザーが「root」ではないユーザーが実行する必要があるソフトウェアがあるため、そのソフトウェアのホームディレクトリはです/home/non-root/このプログラムはrootを介して実行してはいけません。mysqlが起動し始めた後にのみ実行できることを強調したいと思います。

次のコマンドで実行する必要があるソフトウェアがあります./athena-start start。私はUnixシステムに慣れておらず、チュートリアルを見つけるためにインターネットを検索しようとしましたが、root以外のユーザーを介してCentosで自動的に実行する方法のガイドを見つけることができませんでした。ここしかし、Fedoraでのみ動作するようです。

誰でも私を助けることができますか?

答え1

これを達成する方法はいくつかあります。 crontabや他のさまざまなスクリプトを使用する初期化スクリプト。私の意見では、最も簡単な方法は、コマンドを@reboot実行する必要があるathena-start startユーザーのcrontabにラベルを使用することです。

この@rebootタグは、コンピュータの起動後にコマンドを一度だけ実行します。crontab -e -u <yourusername>選択したユーザーのcrontabに以下を配置するために使用されます。 crontabに入れるべき内容は次のとおりです。

@reboot while [ "x`ps -ef|awk '$8 ~ /[:print:]*mysqld[:mysqld:]*/ { print $2 }'|wc -l`" == "x0" ]; do sleep 10 ; done && cd /your/directory && ./your_command

crontabにひどい1行を書くのではなく、これをスクリプトに書いてどこかに置くことをお勧めします。これらすべての基本的なアイデアは、10秒ごとにプロセステーブルをチェックし、一致するものが見つかると次のようになります。 mysqldプロセス(またはこれとよく似たもの)があり、ループを終了して実行したい重要なコマンドがあるディレクトリに変更し、最後にそのコマンドを実行します。

別のオプションは、MySQLデーモンの後に始まるinitスクリプトを書くことです。ただし、この例では、# chkconfigMySQL initスクリプトで始まる行の内容が必要です。

関連情報