ubuntuの起動とログイン後に自動的に実行するスクリプトプログラム

2886 ワード


1.起動時自動運転プログラム
Linuxがロードされると、ハードウェアとデバイスドライバが初期化され、最初のプロセスinitが実行されます.Initは、プロファイルに基づいてプロシージャを起動し続け、他のプロセスを起動します.通常、/etc/rcまたは/etc/rcに配置する.dまたは/etc/rc?dディレクトリの下のスクリプトファイルは、initに他のプログラムを自動的に起動させることができます.例えば、/etc/rcを編集する.d/rc.localファイル(通常はシステムが最後に起動したスクリプト)は、ファイルの最後に「xinit」または「startx」の行を追加し、起動後に直接X-Windowに入ることができます.
 
電源を入れた後、mysql、memcacheなど、多くのサービスを自動的に実行します.
 
2.ログイン時にプログラムを自動実行する
ユーザーがログインすると、bashはまずシステム管理者が確立したグローバルログインscript:/ect/profileを自動的に実行します.次にbashは、ユーザホームディレクトリの下で、3つの特殊なファイルのうちの1つを順番に検索する:/.bash_profile、/.bash_login、/.profileですが、最初に見つけた1つだけ実行します.したがって、実際の必要に応じて上記のファイルにコマンドを追加するだけで、DOSのAutoexec.batのようなプログラムを自動的に実行することができます.
 
注意自動運転ではありません.bashrcスクリプトではなくprofileスクリプト.
ソースコードを見てもいいです.profile:
# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
,.. "$HOME/.bashrc"
    fi  
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

私たちが普段使っていることがわかります.bashrcファイルは、単に.profileスクリプトがロードされました.
だから多くの学生はzshが純粋にいくつかの文章の指示に従って書くことを黙認します.bashrcスクリプトの環境変数は、rvmを使用するなど、機能しません.
 
3.ログオン終了時の自動運転プログラム
ログインを終了するとbashは個人のログインスクリプト/.bash_logout.例えば、/.bash_logoutに「tar-cvzf c.source.tgz*.c」というコマンドを入れると、ログインを終了するたびに自動的に「tar」コマンドのバックアップが実行されます*.cファイル.
4.定期自動運転プログラム
Linuxにはcrondというデーモンがあり、主な機能は/var/spool/cronディレクトリの下にあるコマンドファイルのセットの内容を周期的にチェックし、設定した時間にこれらのファイルのコマンドを実行することです.ユーザーはcrontabコマンドを使用して、これらのコマンドファイルを作成、変更、削除できます.
たとえば、「00 9 23 Jan*HappyBirthday」という内容のファイルcrondFileを作成し、「crontab cronFile」コマンドを実行すると、元月23日午前9:00に「HappyBirthday」のプログラムが自動的に実行されます(「*」は当日が曜日にかかわらず).
 
 
なぜならbashrcかprofileファイルはログイン时に実行されます.ログインしなければ実行できますか.あるいは、サービスを実行するにはどうすればいいですか.この时、ユーザーがログインしていないので、対応する环境変数があります.
例えばrailsのサービスを開始したwwwユーザー.
 
sudoコマンドを使用するパラメータ-i
manueの表示:
       -i [command]
                   The -i (simulate initial login) option runs the shell specified by the password database entry of the target user as a loginshell.  This means that login-specific resource files such as .profile or .login will be read by the shell.  If a command isspecified, it is passed to the shell for execution via the shell's -c option.  If no command is specified, an interactive shellis executed.  sudo attempts to change to that user's home directory before running the shell.  The security policy shall initialize the environment to a minimal set of variables, similar to what is present when a user logs in.  The Command Environment section in the sudoers(5) manual documents how the -i option affects the environment in which a command is run when the sudoers policy is in use.