LinuxはWindowsスタートアップに相当しますか?


16

Linuxの起動にアプリケーション/スクリプトを追加して、システムが起動するたびに実行されるようにする方法はありますか?

自動化された方法を探しています。つまり、ユーザーはcronジョブなどでこれを追加しないでください。



ubuntuの場合は、$ gnome-session-propertiesを使用します
-user3804598

回答:


11

クロンのようなもの?

@rebootエントリに注意してください

これは最も柔軟なアプローチであり、Windowsの「スケジュールされたタスク」に最も似たアプローチです(実際には)。


ユーザーの意図なしにCRONにジョブを追加することは可能ですか?
Sourav

はい。単にに書き込むか/etc/cron.d、知らないうちにプログラムからcrontabを呼び出します。

どういう意味ですか?プログラムで手動で追加する場合は、はい。crontabは単なるテキストファイルです。

10

Xorgの自動起動

システムレベルの起動スクリプトとは別に、デスクトップ環境にはプログラムを自動実行する独自の方法がある場合があります。このフォルダ.config/autostartは、自動実行エントリを定義するデスクトップ中立な方法であると想定されています。/etc/xdg/autostartシステム全体の構成用です。http://developer.gnome.org/autostart-spec/にある仕様の詳細。

LXDEの場合、自動開始エントリもで設定できます~/.config/lxsession/LXDE/autostart

ネットワークの稼働にスクリプトを実行する必要がある場合は少し異なります。その場合は、ネットワークマネージャー用に定義できる特別な接続後スクリプトを確認する必要があります。両方のNetworkManagerwicd、接続後の自動実行エントリを指定する独自の方法を持っています。ネットワークがを介して構成されているifupdown場合、ポストアップスクリプトを/etc/network/if-up.d/フォルダーに配置できます。ただし、接続後スクリプトを実行するためのより良いアプローチはsystemd(それをサポートするシステムの場合です。これは現代のディストリビューションの大部分です)。

systemdサービスとしての自動起動

自動起動したいものがデスクトップを必要とするグラフィカルアプリではない場合、xorgまたは現在のデスクトップ環境で提供されている自動起動機能を使用しないことをお勧めします。

systemd 現代の多くのディストリビューションで広く普及しており、サービスの開始方法と実行方法に関して多くの制御と柔軟性を提供しています。

いくつかの利点を要約します(systemdにはもっと多くのことができます):

  • rootまたは特定のユーザーとして実行:例 User=myuser
  • 構成可能なタイムアウトで障害時にサービスを再起動します。 Restart=on-failure|on-watchdog|on-abnormal|always
  • サービスタイプの設定: Type=simple|forking|oneshot|notify|dbus
  • スタートアップの前提条件と依存関係を確立し、あなたはネットワークが(アップ後に起動するようにサービスを設定することができますすなわちWants=network-online.target[Unit]セクション)。

telegram-cliデーモンを開始するサンプルサービス。に配置し/etc/systemd/system/tg.serviceます。

[Unit]
Description=MyDaemon
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/bin/telegram-cli -k /etc/telegram-cli/tg-server.pub -W -P 1234 -d -vvvRC
ExecStop=/usr/bin/pkill -f telegram-cli

User=jicu

[Install]
WantedBy=multi-user.target

これで、サービスの自動開始を有効にできます。

sudo systemctl enable tg

サービスを開始します。

sudo systemctl start tg

サービスを停止します。

sudo systemctl stop tg

ステータスを確認します。

systemctl status tg

サービスを無効にします。

sudo systemctl disable tg

余分な入力を省くために~/.bashrc、行に追加して、alias sc='sudo systemctl $*'上記のコマンドをに短縮できますsc start tg

注:使用した場合cron、crontabエントリは制限された環境で実行されることに注意してください。同じことがsystemd常に適用されます。常に絶対パスを使用し、変数が定義されることを想定しません。スクリプトが依存する変数を明示的に設定します。ユーザーのとsystemd 使用しません.bashrc$PATH

より詳しい情報:


7

はい、で実行ファイルへのパスを定義することにより、Linux上で起動時にプログラムを実行することが可能であるrc.localのその存在のいずれか/etcまたは/etc/rc.dディレクトリ、例えば:

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
/path/to/executable

注:ファイルのドキュメントで説明されているように、実行可能権限を割り当てることを忘れないでください。 Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure that this script will be executed during boot.


ファイルにエントリを追加すると、毎回プログラムが起動しますか?
Sourav

2
はい、再起動するたびに。定期的にスケジュールされたジョブ(毎日、時間、週、または任意の奇妙な組み合わせ)が必要な場合は、cronスケジューラがあなたの友達です。

3
  1. Startup applicationsホームボタンを使用して検索
  2. クリック Add
  3. アプリケーションを呼び出すための名前を入力します(どの名前でもかまいません)
  4. Startup command boxコマンドを入力します。
  5. クリックOK(リストに新しいコマンドが表示されるはずです)
  6. クリック Close

再起動するか、ログアウトして再度ログインしてテストします。

ソース:https : //help.ubuntu.com/community/AddingProgramToSessionStartup


1

各ディストリビューションはそれぞれ独自のブートストラップ手法を使用しているため、ディストリビューションのドキュメントを確認する必要があります。/etc/rc.localは自動化されたスクリプトを置くことができる場所ですが、本当に時代遅れです。現在、Linuxベースのシステムのほとんどはランレベルまたはsystemdブートストラップを使用しているため、自動開始ジョブのほとんどは細かく制御できます。


0

私はここに答えを見つけました:https : //stackoverflow.com/questions/7221757/run-automatically-program-on-startup-under-linux-ubuntu ファイル/スクリプトを作成して、トラックパッドをオフにすることができましたLinux Ubuntu 12.10セッション。


3
解決策を見つけたら、答えに手順の要約を含めてください。この答えは単なるリンクよりも便利です。ありがとう!
SLM

起動時にトラックパッドを自動化してオフにする方法を探していました。ターミナルで入力したコマンドは「sudo modprobe -r psmouse」でした。これにより、現在のセッション中にトラックパッドがオフになります。ブート時にこれを自動化したかった。いくつかの調査を行い、ファイル/etc/rc.localを変更してスクリプトを作成し、「sudo modprobe -r psmouse」を追加しました。次に、ターミナルから次のコマンドを発行します。 'sudo mv / filename /etc/init.d/' 'sudo chmod + x /etc/init.d/filename' 'sudo update-rc.d filename defaults'タッチパッドがオフになりました起動時に。
CatGuyTX
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.