Webサーバーを入れて systemctl start nginx したら動いた
でも再起動したら止まってた。start したのに、なんで
【疑問】systemctl の start と enable、何が違うん?ターゲットとシャットダウンも【LPICレベル1】
>>1
start は「今すぐ起動する」だけ。次に起動したときにも自動で立ち上げるには enable が要るsystemctl enable nginx で自動起動の設定、systemctl enable --now nginx で設定と起動を一度にやる
>>2
逆は stop と disable か
>>3
そう。stop は今止める、disable は自動起動をやめる。設定を変えたあとに止めて起動し直すなら restart
状態の確認は systemctl status nginx。動いてるか、自動起動が有効かは is-active、is-enabled でも見られる
systemctl が操作してる「ユニット」って何
>>5
systemd が管理する単位のこと。種類は名前の最後で分かる.service(サービス)、.timer(決まった時刻の実行)、.mount(マウント)、.target(ユニットのまとまり)など
>>6
ユニットのファイルはどこにあるん
>>7
パッケージが入れるものは /usr/lib/systemd/system/、管理者が置くものや上書きは /etc/systemd/system/
同じ名前なら /etc 側が優先される。パッケージのファイルを直接書き換えると、更新で消えることがある
>>7
enable したら何が起きてるん
>>9
ユニットファイルの中の WantedBy= に書かれたターゲットから、そのユニットへのシンボリックリンクが /etc/systemd/system/ の下に作られる
起動時にそのターゲットが立ち上がると、つながったユニットも起動される
ターゲットって、ランレベルのこと?
>>11
役割は近い。昔の SysVinit のランレベルは、systemd ではターゲットに対応づけられてる
>>12
起動したときのターゲットはどう変えるん
>>13
今の設定は systemctl get-default、変えるのは systemctl set-default multi-user.target
今すぐ切り替えるなら systemctl isolate multi-user.target。メンテナンス用の1人だけのモードなら rescue.target
>>14
isolate って危なくないん?
>>15
危ないこともある。指定したターゲットに要らないユニットは止められるから、リモートで rescue.target にすると、SSH が切れて戻れなくなる
切り替える前に、誰が使ってるかと、手元で操作できるかを確かめる
シャットダウンは systemctl poweroff でええの?
>>17
それでも止まる。試験でよく聞かれるのは shutdown コマンドの書き方shutdown -h now(今すぐ停止)、shutdown -r +10 "メンテナンスします"(10分後に再起動、ログイン中の人にメッセージ)、shutdown -c(予約の取り消し)
>>18
いや、今どきのサーバーは1人で使ってることも多いし、メッセージまで送る必要ある?
>>19
1人なら要らん場面もある。でも共用のサーバーで突然止めると、作業中のファイルが壊れることがある
予告するコマンドとして wall(全員の端末にメッセージを送る)も範囲に入ってる
>>1
init とか telinit はもう使わんの?
>>21
SysVinit の系統のコマンドで、/etc/inittab に既定のランレベルを書いてた
systemd の環境でも、互換のために telinit 3 などが受け付けられることが多い。試験では両方の書き方が出る
管理人のひとこと
- systemctl の start / stop は今の操作、enable / disable は次の起動時の自動起動の設定。
enable --nowで両方。enable は WantedBy のターゲットからシンボリックリンクを張る。 - ユニットは .service・.timer・.mount・.target など。パッケージのものは /usr/lib/systemd/system、上書きは /etc/systemd/system が優先。
- ランレベル3・5は multi-user.target・graphical.target に対応。既定は get-default / set-default、今の切り替えは isolate。shutdown -h now、-r +10 "…"、-c と wall で予告と取り消し。