Di mana skrip startup untuk Unity Desktop?

11

Saya ingin menjalankan skrip segera setelah autentikasi lightdm saya berhasil, dan Unity saya mulai memuat. dan saya ingin menjalankan skrip saya sebagai pengguna root.

di mana skrip startup berada di Unity?

Shnd
sumber
Saya ingin menjalankan skrip setelah X saya dimuat.
Shnd
kemungkinan rangkap dari Cara menjalankan skrip saat boot sebagai root
rubo77
@Shnd X sebenarnya dimulai sebelum lightdm, karena lightdm juga berjalan di X. Jadi jika Anda ingin menjalankan sesuatu sebagai pengguna Anda, Anda mungkin menginginkannya "setelah autentifikasi lightdm berhasil" atau dengan kata lain "ketika desktop mulai". Dimungkinkan juga untuk menjalankan skrip ketika komputer Anda hanya bootet, tidak peduli apakah Anda memiliki pengguna yang masuk atau tidak (itulah yang dimulai X misalnya) daripada itu adalah pertanyaan yang sama sekali berbeda. Jika Anda ingin menjalankan sesuatu sebagai pengguna, Anda mungkin menginginkannya dan jawabannya tergantung pada sistem init Anda.
erikbwork

Jawaban:

5

Pertama, masukkan skrip Anda /usr/bindan berikan izin eksekusi.

Sekarang buat file .desktop /home/[user-name]/.config/autostart/yang menjalankan skrip Anda yang berjalan saat startup.

Contoh: - Biarkan nama file skrip Anda adalah "contoh" atau "contoh.sh"

Buat file .desktop dengan gedit dengan baris berikut dan simpan sebagai filename.desktop di /home/[user-name]/.config/autostart/

[Desktop Entry]
Type=Application
Exec=sudo example
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=myscript
Comment=Startup Script

Di sini Exec=sudo exampleatau Exec=sudo example.shjalankan skrip Anda sebagai root dari /usr/bin Berikan izin eksekusi ke file .desktop.

Sekarang, Script berjalan saat startup.

Pandya
sumber
1
untuk menjalankan sudo tanpa kata sandi, lihat askubuntu.com/questions/39281/…
Pandya
Terima kasih, itu berhasil. Tetapi dengan pemula, Anda dapat membuat hal yang sama mungkin sedikit lebih sederhana (lihat jawaban saya).
TuKsn
Ini akan sempurna dengan tautan ke spec
erikbwork
Saya tidak berpikir file .desktop perlu ditandai dapat dieksekusi.
Julian
4

Kemungkinan lain:

Buat file dalam $HOME/.config/upstart/my-upstart-script.conf

start on desktop-start
stop on desktop-end

script
  sudo fdisk -l > /home/[user-name]/upstart-test.txt        
end script

Rincian lebih lanjut untuk Pemula :

http://ifdeflinux.blogspot.de/2013/04/upstart-user-sessions-in-ubuntu-raring.html

http://upstart.ubuntu.com/cookbook/

Info berjalan sudotanpa kata sandi:

Bagaimana menjalankan aplikasi menggunakan sudo tanpa kata sandi?

Bagaimana cara menjalankan perintah sudo tertentu tanpa kata sandi?

TuKsn
sumber
"$ HOME / .config / pemula" tidak ada direktori seperti itu di komputer saya.
Kalamalka Kid
1
@KalamalkaKid Versi Ubuntu mana yang Anda gunakan? Direktori pemula harus di lokasi ini /home/yourusername/.config/upstart/. Buka direktur rumah Anda di nautilus, tekan Ctrl + H dan Anda akan melihat direktori .config
TuKsn
2

Untuk menjalankan perintah sebagai root , setelah login, ada trik sederhana lain:

Dibutuhkan dua langkah:

  • buat file pemicu saat masuk
  • buat cronjob, jalankan dengan root (atur /etc/crontab), untuk menjalankan skrip kecil (menjalankan perintah Anda) jika dan hanya jika file pemicu ada. Karena file pemicu dihapus oleh skrip yang sama, perintah Anda hanya berjalan sekali.

Urutannya adalah:

USER LOGIN > trigger file is created > cronjob runs script (with your command) and removes trigger file, > next time the script passes, since the trigger file does not exist anymore

Pengaturan

Dua skrip kecil:

Satu untuk membuat file pemicu saat masuk:

#!/bin/sh
touch $HOME/.trigger

dan satu dua jalankan perintah:

#!/bin/bash

FILE="/path/to/your/homedirectory/.trigger"
# don't use $HOME here, since you run it by root

if [ -f $FILE ]; then
   <your command here, run by root>
   rm -f $FILE
fi
  • salin kedua skrip ke dalam dua file kosong, simpan sebagai create_trigger.shdan run_command.sh.
  • Untuk alasan kenyamanan, buat keduanya bisa dieksekusi.
  • Tambahkan perintah berikut ke Aplikasi Startup Anda (Dash> Startup Applications> Add)

    /path/to/create_trigger.sh
    
  • Tambahkan baris berikut ke /etc/crontabfile ( sudo nano /etc/crontab):

    * * * * * root /path/to/run_command.sh
    

Sekarang perintah yang ditentukan dijalankan dalam waktu satu menit dalam satu menit dari login.

Yakub Vlijm
sumber