Cara Menjalankan Program Linux pada Startup dengan systemd

Tetingkap terminal bergaya pada komputer riba.

Fatmawati Achmad Zaenuri/Shutterstock



Perlu melancarkan program Linux semasa boot? Perisian systemd menyediakan cara untuk melakukannya pada mana-mana Distro Linux dengan systemd —yang kebanyakannya hari ini, termasuk Ubuntu. Kami akan membimbing anda melalui proses mencipta perkhidmatan bersepadu—dan ia juga bercakap dengan jurnal.

Tutorial ini menunjukkan cara menyediakan perkhidmatan sistem yang dilancarkan apabila anda memulakan sistem anda. Untuk melancarkan program grafik apabila anda log masuk, gunakan pengurus permulaan desktop anda sebaliknya .





Menjalankan Program di Startup

Kadangkala perisian yang anda pasang pada komputer anda menghubungkan dirinya ke dalam proses permulaan Linux, supaya program dilancarkan secara automatik setiap kali komputer dimulakan. Anda boleh mencapai tingkah laku yang sama ini dengan mudah dengan program dan skrip anda sendiri, atau sebenarnya sebarang program lain yang ada pada komputer anda.

Program yang dilancarkan pada permulaan dikawal oleh |__+_|, the sistem dan perkhidmatan pengurus. |_+_| adalah proses pertama yang dijalankan pada permulaan. Ia sentiasa ada ID proses (PID) 1. Setiap proses lain yang berjalan dalam komputer anda dimulakan oleh |_+_|, atau oleh proses yang |_+_| telah pun bermula.



Program yang berjalan di latar belakang dipanggil daemon atau perkhidmatan. D pada akhir |__+_| bermaksud daemon. Dalam artikel ini, kami akan mencipta perkhidmatan contoh. Untuk menanda semua kotak, perkhidmatan kami mestilah:

  • Disepadukan dengan |__+_| melalui fail unit perkhidmatan
  • Dilancarkan pada permulaan
  • Boleh dikawal menggunakan |__+_|, the antara muka kawalan untuk |_+_|
  • Boleh menulis ke jurnal

Mencipta Program Perkhidmatan

Kita perlu mempunyai program yang |__+_| akan dilancarkan. Kami akan mencipta skrip ringkas, dipanggil htg.sh. Tutorial ini menggunakan editor teks Gedit, tetapi anda boleh menggunakan apa sahaja editor teks yang anda suka.

systemd systemd



Iklan

|_+_| editor akan dibuka. Salin dan tampal teks berikut ke dalam editor.

systemd

Simpan perubahan anda dan tutup editor.

skrip htg.sh dalam editor gedit

Skrip tidak melakukan banyak perkara, tetapi terdapat beberapa perkara yang perlu diberi perhatian.

  • Kedua-duanya |_+_| talian disalurkan melalui |__+_|, program yang mengambil output daripada program dan menghantarnya ke jurnal . Penyertaan ke dalam jurnal diberi keutamaan. Kami menggunakan |__+_| pilihan (keutamaan) untuk menunjukkan bahawa mesej kami adalah untuk maklumat (maklumat) sahaja. Ia bukan ralat atau amaran penting.
  • Terdapat |__+_| yang tidak berkesudahan gelung.
  • |_+_| pembolehubah ditetapkan kepada tarikh dan masa semasa. Ini diformatkan menjadi mesej dan dihantar ke jurnal.
  • Skrip kemudian tidur selama 60 saat.
  • Selepas 60 saat gelung diulang. Jadi, skrip ini menulis mesej bercap masa ke jurnal sekali setiap minit.

Kami akan menyalin skrip ke |_+_| direktori.

systemd

Dan kita perlu menjadikannya boleh dilaksanakan:

systemd

Mencipta Fail Unit Perkhidmatan

Setiap program yang dimulakan oleh |__+_| mempunyai fail definisi, dipanggil fail unit perkhidmatan. Ini memegang atribut tertentu yang |_+_| boleh digunakan untuk mencari dan melancarkan atur cara, dan untuk menentukan beberapa kelakuannya.

Kami perlu mencipta fail unit untuk perkhidmatan baharu kami, tetapi adalah bijak untuk memastikan tiada fail unit sedia ada mempunyai nama yang kami mahu berikan perkhidmatan baharu kami.

systemd

Anda boleh menatal senarai fail unit, yang diisih mengikut abjad dan pastikan nama yang anda ingin gunakan tidak diambil.

Iklan

Perkhidmatan kami akan dipanggil htg.service. Tiada fail unit mempunyai nama itu, jadi kami boleh meneruskan dan mencipta fail unit kami.

systemctl

|_+_| editor akan dibuka. Salin dan tampal teks berikut ke dalam editor:

systemd

Simpan perubahan anda dan tutup editor.

htg.service unit fail dalam editor gedit

Entri mempunyai makna ini. Ini adalah entri biasa. Perkhidmatan ringkas kami sebenarnya tidak memerlukan kebanyakannya, tetapi memasukkannya membolehkan kami menerangkannya.

    Penerangan:Ini ialah perihalan teks perkhidmatan anda. Mahu:Perkhidmatan kami mahu—tetapi tidak memerlukan—rangkaian dibuka sebelum perkhidmatan kami dimulakan. Selepas:Senarai nama unit yang harus dimulakan selepas perkhidmatan ini berjaya dimulakan, jika ia belum dijalankan. Jenis:Mudah. |_+_| akan mempertimbangkan perkhidmatan ini bermula sebaik sahaja proses yang ditentukan oleh |__+_| telah bercabang. ExecStart:Laluan ke proses yang sepatutnya dimulakan. Mula semula:Bila dan jika perkhidmatan perlu dimulakan semula. Kami telah menetapkannya kepada kegagalan. RestartSec:Berapa lama perlu menunggu sebelum cuba memulakan semula perkhidmatan. Nilai ini dalam saat. KillMode:Mentakrifkan bagaimana |__+_| harus mematikan proses jika kita bertanya |_+_| untuk menghentikan perkhidmatan. Kami mempunyai set ini untuk diproses. Ini menyebabkan |_+_| untuk menggunakan |__+_| isyarat pada proses utama sahaja. Jika perkhidmatan kami adalah program yang tidak remeh dan bukannya skrip ringkas, kami akan menetapkan ini kepada campuran untuk memastikan bahawa sebarang proses yang dihasilkan turut ditamatkan. WantedOleh:Kami menetapkan ini kepada multi-user.target, yang bermaksud perkhidmatan harus dimulakan selagi sistem berada dalam keadaan di mana berbilang pengguna boleh log masuk, sama ada antara muka pengguna grafik tersedia atau tidak.

Fail unit tidak perlu boleh dilaksanakan, tetapi kebenaran pada fail unit harus mengehadkan orang yang boleh mengeditnya. Anda tidak mahu pengguna yang berniat jahat atau nakal menukar fail unit supaya ia melaksanakan program yang berbeza sama sekali.

Perintah ini akan memberi pemilik kebenaran membaca dan menulis, dan kebenaran membaca kepada kumpulan. Orang lain tidak akan mempunyai kebenaran.

systemd

Kita boleh mempunyai |__+_| semak sintaks fail unit kami untuk kami, walaupun perkhidmatan itu belum berjalan lagi. Sebarang kesilapan akan dilaporkan. (Sebenarnya, bahagian .service adalah pilihan untuk kebanyakan arahan.)

gedit

Iklan

Tiada ralat diserlahkan, yang bermaksud fail unit kami betul dari segi sintaksis.

Memulakan Perkhidmatan

Apabila anda menambah fail unit baharu atau mengedit fail sedia ada, anda mesti memberitahu |_+_| untuk memuat semula definisi fail unit.

echo

Jika anda mahu perkhidmatan dilancarkan pada permulaan anda mesti membolehkan ia:

systemd-cat

Mendayakan perkhidmatan tidak memulakannya, ia hanya menetapkannya untuk dilancarkan pada masa but. Untuk memulakan perkhidmatan sekarang , anda mesti menggunakan |__+_| dengan |_+_| pilihan.

-p

Mengesahkan Perkhidmatan

Selepas memulakan perkhidmatan secara manual atau selepas but semula komputer, kami boleh mengesahkan bahawa perkhidmatan kami berjalan dengan betul.

while

Status perkhidmatan dipaparkan untuk kami.

Status htg.service dalam widnow terminal

  • Titik hijau bermakna perkhidmatan kami berjalan dengan lancar.
  • Nama perkhidmatan ialah htg.service, dan penerangan panjang adalah yang kami berikan dalam fail unit.
  • Kami menunjukkan fail unit yang telah dimuatkan /etc/systemd/system/htg.service.
  • Perkhidmatan ini aktif, dan masa perkhidmatan itu dilancarkan disenaraikan untuk kami.
  • PIDnya ialah 7762.
  • Terdapat dua tugas yang berkaitan dengan perkhidmatan.
  • Sejumlah 928 kibibait ingatan sedang digunakan oleh perkhidmatan tersebut.
  • Kumpulan kawalan termasuk skrip htg.sh dan |__+_| arahan, yang telah dilancarkan oleh htg.sh. Selalunya, |__+_| arahan akan melakukan kerja untuk perkhidmatan ini.

Kami juga menunjukkan 10 entri jurnal terakhir yang dihasilkan oleh perkhidmatan ini. Tidak mengejutkan, mereka semua selang satu minit.

Menghentikan dan Melumpuhkan Perkhidmatan

Jika anda perlu menghentikan perkhidmatan, anda boleh melakukannya dengan arahan ini:

TIMESTAMP

Iklan

Ini menghentikan perkhidmatan, tetapi ia tidak menghalangnya daripada dimulakan semula apabila komputer dibut semula. Untuk menghentikan perkhidmatan yang dilancarkan pada permulaan, anda perlu melumpuhkan ia:

/usr/local/bin

Jika perkhidmatan sedang berjalan, arahan ini tidak menghentikannya. Ia hanya memberitahu |__+_| bukan untuk melancarkan perkhidmatan pada but semula seterusnya.

Jika anda ingin menghentikan perkhidmatan dan menghalangnya daripada dilancarkan pada permulaan, gunakan kedua-dua arahan.

Petua Perkhidmatan

Pastikan program anda berjalan seperti yang diharapkan sebelum anda cuba melancarkannya sebagai perkhidmatan.

Perintah Linux
Fail tar · pv · kucing · tac · chmod · cengkaman · perbezaan · sed · Dengan · lelaki · pushd · popd · fsck · testdisk · seq · fd · pandoc · CD · $PATH · awk · sertai · jq · lipat · uniq · journalctl · ekor · negeri · ls · fstab · dibuang · kurang · chgrp · chown · rev · tengok · rentetan · taip · menamakan semula · zip · buka zip · lekapkan · umount · pasang · fdisk · mkfs · rm · rmdir · rsync · df · gpg · kita · nano · mkdir · daripada · ln · tampalan · menukar · rclone · carik-carik · SRM
Proses alias · skrin · atas · bagus · renice · kemajuan · jejak · sistem · tmux · chsh · sejarah · di · kumpulan · percuma · yang · dmesg · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · masa tamat · dinding · ya · bunuh · tidur · sudo · miliknya · masa · tambah kumpulan · usermod · kumpulan · lshw · menutup · but semula · berhenti · matikan · passwd · lscpu · crontab · Tarikh · bg · fg
Rangkaian netstat · ping · traceroute · ip · ss · siapakah · fail2ban · bmon · awak · jari · nmap · ftp · keriting · wget · who · siapakah saya · Dalam · iptables · ssh-keygen · ufw

BERKAITAN: Komputer Riba Linux Terbaik untuk Pembangun dan Penggemar

BACA SETERUSNYA Foto Profil untuk Dave McKay Dave McKay
Dave McKay pertama kali menggunakan komputer apabila pita kertas yang ditebuk sedang popular, dan dia telah memprogramkan sejak itu. Selepas lebih 30 tahun dalam industri IT, beliau kini seorang wartawan teknologi sepenuh masa. Semasa kerjayanya, beliau telah bekerja sebagai pengaturcara bebas, pengurus pasukan pembangunan perisian antarabangsa, pengurus projek perkhidmatan IT, dan, yang terbaru, sebagai Pegawai Perlindungan Data. Tulisannya telah diterbitkan oleh howtogeek.com, cloudsavvyit.com, itenterpriser.com, dan opensource.com. Dave ialah seorang penginjil Linux dan penyokong sumber terbuka.
Baca Bio Penuh

Artikel Yang Menarik