Apa yang setara dengan Linux untuk Windows Startup?

16

Apakah ada cara untuk menambahkan aplikasi / skrip ke startup Linux sehingga setiap kali sistem boot itu akan dieksekusi?

Saya mencari beberapa cara otomatis, yaitu pengguna tidak boleh menambahkan ini dengan pekerjaan cron atau sesuatu seperti itu.

Sourav
sumber
jika ubuntu cukup gunakan $ gnome-session-properties
user3804598

Jawaban:

11

Sesuatu seperti Cron ?

Perhatikan @rebootentri

Ini adalah pendekatan yang paling fleksibel, dan yang paling mirip dengan Windows "Tugas Terjadwal" (sebenarnya lebih baik).

kevlar1818
sumber
apakah mungkin menambahkan pekerjaan di CRON tanpa niat pengguna?
Sourav
Iya. cukup tulis /etc/cron.d, atau panggil crontab dari program Anda tanpa mereka sadari.
Apa maksudmu? Jika Anda secara manual menambahkan satu secara terprogram, maka ya. Crontab hanyalah file teks.
10

Xorg mulai otomatis

Terlepas dari skrip startup tingkat sistem, lingkungan desktop Anda mungkin memiliki caranya sendiri untuk menjalankan program. Folder .config/autostartini seharusnya menjadi cara netral untuk mendefinisikan entri autorun di desktop. /etc/xdg/autostartadalah untuk konfigurasi seluruh sistem. Rincian tentang spesifikasi di http://developer.gnome.org/autostart-spec/ .

Untuk entri autostart LXDE juga dapat diatur ~/.config/lxsession/LXDE/autostart.

Ini sedikit berbeda jika Anda perlu menjalankan skrip Anda setelah jaringan aktif dan berjalan. Dalam hal ini Anda harus memeriksa skrip post-connect khusus yang dapat ditentukan untuk manajer jaringan Anda. Kedua NetworkManager dan Wicd memiliki cara mereka sendiri menentukan entri autorun pasca-connect. Jika jaringan dikonfigurasi melalui ifupdown, maka skrip post-up dapat ditempatkan di /etc/network/if-up.d/folder. Tetapi pendekatan yang lebih baik untuk menjalankan skrip post-connect mungkin systemd (untuk sistem yang mendukungnya, yang merupakan mayoritas dari distro modern).

Mulai otomatis sebagai layanan systemd

Jika hal yang ingin Anda autostart bukan aplikasi grafis yang memerlukan desktop maka yang terbaik adalah menghindari menggunakan fasilitas autostart yang disediakan oleh xorg atau oleh lingkungan desktop Anda saat ini.

systemd telah menjadi mana-mana di banyak distro modern, dan ia menawarkan banyak kontrol dan fleksibilitas dalam hal bagaimana layanan Anda dimulai dan bagaimana mereka dijalankan.

Saya akan merangkum beberapa manfaat ( systemd dapat melakukan lebih banyak ):

  • Jalankan sebagai root atau sebagai pengguna spesifik: mis User=myuser
  • Mulai ulang layanan yang gagal dengan batas waktu yang dapat dikonfigurasi: Restart=on-failure|on-watchdog|on-abnormal|always
  • Mengatur jenis layanan: Type=simple|forking|oneshot|notify|dbus
  • Tetapkan prakondisi dan dependensi startup, yaitu Anda dapat mengatur layanan Anda untuk memulai setelah jaringan menyala ( Wants=network-online.targetdi [Unit]bagian).

Contoh layanan yang memulai daemon telegram-cli. Tempatkan dalam /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

Sekarang Anda dapat mengaktifkan layanan untuk memulai kembali secara otomatis:

sudo systemctl enable tg

Mulai layanan:

sudo systemctl start tg

Hentikan layanan:

sudo systemctl stop tg

Periksa status:

systemctl status tg

Nonaktifkan layanan:

sudo systemctl disable tg

Untuk menghemat Anda mengetik tambahan, Anda dapat menambahkan di ~/.bashrcbaris alias sc='sudo systemctl $*'Anda maka Anda akan dapat mempersingkat perintah di atas untuk misalnya sc start tg.

CATATAN: Jika Anda telah menggunakan cronmaka sadar bahwa entri crontab dijalankan dalam lingkungan terbatas - hal yang sama berlaku untuk systemd: selalu menggunakan jalur absolut, dan tidak membuat asumsi variabel apa pun yang didefinisikan. Secara eksplisit mengatur variabel apa pun yang bergantung pada skrip Anda. systemd tidak akan menggunakan pengguna Anda .bashrcdan $PATH.

Info lebih lanjut:

ccpizza
sumber
7

Ya, adalah mungkin untuk menjalankan program saat startup di Linux dengan mendefinisikan path ke executable rc.localyang berada di direktori /etcatau /etc/rc.d, misalnya:

#!/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

Catatan: jangan lupa untuk memberikan hak yang dapat dieksekusi seperti yang dijelaskan dalam dokumentasi file, yaitu Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure that this script will be executed during boot.

Dirk Eddelbuettel
sumber
menambahkan entri dalam file akan memulai program setiap kali?
Sourav
2
Setiap kali Anda reboot, ya. Jika Anda ingin pekerjaan yang dijadwalkan secara rutin (setiap hari, jam, minggu, atau kombinasi aneh) maka cronpenjadwal adalah teman Anda.
3
  1. Pencarian untuk Startup applications menggunakan tombol home
  2. Klik Add
  3. Masukkan nama untuk memanggil aplikasi (nama apa pun akan melakukannya)
  4. Dalam Startup command box masukkan perintah
  5. Klik OK (Anda akan melihat perintah baru Anda dalam daftar)
  6. Klik Close

Tes dengan memulai kembali atau keluar dan kembali.

Sumber: https://help.ubuntu.com/community/AddingProgramToSessionStartup

coder1111
sumber
1

Setiap distribusi menggunakan masing-masing teknik bootstrap sendiri, jadi perlu melihat dokumen untuk distro Anda. /etc/rc.local adalah tempat di mana Anda dapat meletakkan beberapa skrip otomatis, tetapi ini benar-benar ketinggalan zaman. Sekarang sebagian besar sistem berbasis linux menggunakan runlevels atau systemd bootstraping, sehingga sebagian besar pekerjaan autostarted dapat dikontrol dengan baik.

galadog
sumber
0

Saya menemukan jawaban saya di sini: /programming/7221757/run-automatically-program-on-startup-under-linux-ubuntu saya dapat membuat file / skrip untuk mematikan trackpad saya saat saya di sesi Linux Ubuntu 12.10 saya.

CatGuyTX
sumber
3
Senang Anda menemukan solusinya, bisakah Anda memasukkan ringkasan langkah-langkah dalam jawaban Anda, supaya jawaban ini lebih bermanfaat daripada sekadar tautan. Terima kasih!
slm
Sedang mencari cara untuk mengotomatisasi dan mematikan trackpad saya saat startup. Perintah yang saya masukkan di Terminal adalah 'sudo modprobe -r psmouse' Ini akan mematikan trackpad saat dalam sesi saat ini. Saya ingin mengotomatisasi ini saat boot. Saya melakukan riset dan menulis skrip dengan memodifikasi file /etc/rc.local, menambahkan 'sudo modprobe -r psmouse. Kemudian mengeluarkan perintah berikut dari Terminal: 'sudo mv / nama file /etc/init.d/' 'sudo chmod + x /etc/init.d/filename' 'sudo update-rc.d default nama file' Sekarang touchpad tidak aktif saat startup.
CatGuyTX