Linuxで自動起動・常駐させる時の方法

Linuxで自動起動・常駐させる時の方法 Linux
Linuxで自動起動・常駐させる時の方法

Linuxを触りはじめてしばらくすると、「このプログラム、毎回手動で起動するの面倒だな」と思う場面が出てきます。

今回マウスとキーボード共有ツールであるInput LeapをLubuntuで使う中で「これ自動起動させたいな」と思ったのがきっかけでした。

調べてみると、Linuxには“自動起動”にもいくつか種類があるようです。単純な方法と、少し厳密な方法。その違いが最初はわかりにくかったので、自分なりに整理してみます。

自動起動・常駐の考え方

まず前提として、Linuxでは「いつ起動させたいのか」が重要なようです。

大きく分けるとこうなります。

  • OS起動と同時に動いてほしいもの
  • ログイン後に動けばいいもの

この違いが、そのまま方法の違いになります。

サーバーやネットワーク関連のものはログイン前から動いていないと困ります。でも、GUIツールやトレイ常駐アプリはログイン後で十分だったりします。

この区別ができると、選択がだいぶ楽になります。

簡単な方法:デスクトップ環境の自動起動

自分が使っているLubuntu(LXQt)には「Session Settings → Autostart」という設定があります。ここにコマンドを登録すると、ログイン後に自動で実行されます。

これはLubuntu固有の機能というより、デスクトップ環境(DE)が提供している仕組みです。

他のディストリビューションでも、同じような設定があります。

  • Ubuntu(GNOME)→「Startup Applications」
  • KDE Plasma →「自動起動」設定
  • XFCE →「Session and Startup」

見た目や設定画面は違いますが、裏側の仕組みはほぼ共通です。

実体は ~/.config/autostart/ に置かれる .desktop ファイルです。

XDG Autostartとは

この仕組みは、特定のディストリビューション独自のものではなく、「XDG Autostart」という共通仕様に基づいています。

ざっくり言うと、

  • ログイン時に
  • ~/.config/autostart//etc/xdg/autostart/ を読み込み
  • そこにある .desktop ファイルを実行する

というルールです。

そのため、LXQtから別のデスクトップ環境に乗り換えても、同じディレクトリ構造がそのまま使われることが多いです。

Linuxのデスクトップ界隈では、このXDG仕様が“共通言語”のような役割を果たしているみたいです。

流れとしてはこうです。

  1. ログインする
  2. デスクトップ環境が起動する
  3. 登録されたアプリが実行される

これはWindowsのスタートアップにかなり近い感覚です。

今回のInput Leapクライアントのように「GUIが起動してから動けばいいもの」なら、この方法で十分でした。

ただし、この方法は

  • 落ちても自動再起動しない
  • GUIが前提

という特徴があります。

厳密な方法:systemdサービス

もうひとつが systemd を使う方法です。

systemdはLinuxの起動管理システムで、いわばWindowsの“サービス”に近い存在です。

.serviceファイルを作ることで、

  • OS起動時に開始
  • ログイン不要で常駐
  • 依存関係の制御
  • 自動再起動設定

といったことができます。

たとえばWebサーバー、データベース、Samba、SSHなどはこの方法で管理されます。

また、systemdには

  • システムサービス(rootで動く)
  • ユーザーサービス(ユーザー単位で動く)

の2種類があります。

正直なところ、個人デスクトップ用途では少しオーバースペックに感じることもあります。ただ、安定性や再起動制御が必要ならこちらが適しています。

どちらを選ぶべきか

自分が考えるところの基準はこんな感じです。

GUIツールなら

  • ログイン後でよい
  • トレイ常駐アプリ
  • 個人用ユーティリティ

→ デスクトップ環境の自動起動で十分

サーバー用途なら

  • ログイン前から必要
  • 他サービスに依存する
  • 落ちたら困る

→ systemdサービス

Input Leapクライアントの場合は完全に前者でした。

他に手段はある?

調べてみると、他にもいくつか方法があります。

  • crontab の @reboot
  • .profile や .bashrc に書く
  • ウィンドウマネージャの autostart ファイル

ただし、これらは用途が限定的だったり、管理が曖昧になりやすい印象があります。

いまの主流は

  • GUI用途 → XDG Autostart
  • サービス用途 → systemd

という住み分けになっているようです。

まとめ

Linuxの「自動起動」はひとつの仕組みではなく、起動タイミングによって分かれています。

最初は全部同じに見えますが、

  • ログイン後でいいのか
  • OS起動と同時でないと困るのか

を考えると整理できます。

今回のInput LeapはLXQtの自動起動で十分でした。

逆に、サーバー的なものを動かすならsystemdに触れる必要が出てきます。

Linuxは選択肢が多い分ややこしく見えますが、目的から逆算すると意外とシンプルなのかもしれません。

コメント

タイトルとURLをコピーしました