Kako pokrenuti Linux program pri pokretanju sa systemd-om

Stilizirani prozor terminala na prijenosnom računalu.

Fatmawati Achmad Zaenuri/Shutterstock



Trebate pokrenuti Linux program pri pokretanju? Systemd softver pruža način da to učinite na bilo kojem Linux distribucija sa systemd —što ih je većina ovih dana, uključujući Ubuntu. Provest ćemo vas kroz proces stvaranja integrirane usluge - a ona čak i razgovara s časopisom.

Ovaj vodič pokazuje kako postaviti uslugu sustava koja se pokreće kada pokrenete sustav. Za pokretanje grafičkog programa kada se prijavite, umjesto toga koristite upravitelja pokretanja vašeg desktopa .





Pokretanje programa pri pokretanju

Ponekad se softver koji instalirate na svoje računalo zakači u proces pokretanja Linuxa, tako da se program automatski pokreće svaki put kada se računalo pokrene. To isto ponašanje možete lako postići sa svojim vlastitim programima i skriptama, ili zapravo bilo kojim drugim programom koji se nalazi na vašem računalu.

Programi koji se pokreću pri pokretanju kontroliraju |_+_|, the sustav i servis menadžer. |_+_| je prvi proces koji se pokreće pri pokretanju. Uvijek je bilo ID procesa (PID) 1. Svaki drugi proces koji se izvodi na vašem računalu pokreće |_+_|, ili proces koji |_+_| već je počela.



Pozivaju se programi koji rade u pozadini demone ili usluge. D na kraju |_+_| označava daemon. U ovom članku ćemo izraditi primjer usluge. Da biste označili sve okvire, naša usluga mora biti:

  • Integrirano s |_+_| putem datoteke servisne jedinice
  • Pokrenut pri pokretanju
  • Upravlja se pomoću |_+_|, kontrolno sučelje za |_+_|
  • Može pisati u časopis

Izrada servisnog programa

Moramo imati program koji |_+_| će pokrenuti. Napravit ćemo jednostavnu skriptu, nazvanu htg.sh. Ovaj vodič koristi uređivač teksta Gedit, ali možete koristiti bilo koji uređivač teksta koji želite.

systemd systemd



Oglas

The |_+_| otvorit će se uređivač. Kopirajte i zalijepite sljedeći tekst u uređivač.

systemd

Spremite promjene i zatvorite uređivač.

htg.sh skripta u uređivaču gedit

Scenarij ne radi puno, ali postoji nekoliko točaka koje vrijedi istaknuti.

  • Dva |_+_| linije se vode kroz |_+_|, program koji uzima izlaz iz programa i šalje ga u dnevnik . Unosi u časopis imaju prioritet. Koristimo |_+_| (prioritetna) opcija koja označava da su naše poruke samo informativne (informativne). Nisu važne pogreške ili upozorenja.
  • Postoji beskrajni |_+_| petlja.
  • The |_+_| varijabla je postavljena na trenutni datum i vrijeme. To se oblikuje u poruku i šalje u časopis.
  • Skripta tada spava 60 sekundi.
  • Nakon 60 sekundi petlja se ponavlja. Dakle, ova skripta upisuje poruku s vremenskim žigom u dnevnik jednom u minuti.

Kopirat ćemo skriptu u |_+_| imenik.

systemd

I moramo ga učiniti izvršnim:

systemd

Stvaranje datoteke servisne jedinice

Svaki program koji pokreće |_+_| ima datoteku definicije, koja se zove datoteka servisne jedinice. Ovo ima određene atribute |_+_| može koristiti za lociranje i pokretanje programa, te za definiranje nekih njegovih ponašanja.

Moramo stvoriti jediničnu datoteku za našu novu uslugu, ali je razborito osigurati da nijedna od postojećih datoteka jedinica nema naziv koji želimo dati našoj novoj usluzi.

systemd

Možete se pomicati kroz popis datoteka jedinica, koji je poredan po abecedi, i provjeriti da naziv koji želite koristiti nije zauzet.

Oglas

Naša usluga će se zvati htg.service. Nijedna datoteka jedinice nema taj naziv, tako da možemo nastaviti i stvoriti našu jediničnu datoteku.

systemctl

The |_+_| otvorit će se uređivač. Kopirajte i zalijepite sljedeći tekst u uređivač:

systemd

Spremite promjene i zatvorite uređivač.

htg.service unit datoteku u uređivaču gedit

Unosi imaju ova značenja. Ovo su tipični unosi. Naša jednostavna usluga zapravo ne treba većinu njih, ali njihovo uključivanje nam omogućuje da ih objasnimo.

    Opis:Ovo je tekstualni opis vaše usluge. želi:Naša usluga želi – ali ne zahtijeva – da mreža bude aktivna prije nego što se naša usluga pokrene. Nakon:Popis naziva jedinica koje bi se trebale pokrenuti nakon uspješnog pokretanja ove usluge, ako već nisu pokrenute. Tip:Jednostavan. |_+_| smatrat će da je ova usluga pokrenuta čim proces navede |_+_| je račvano. ExecStart:Put do procesa koji treba započeti. Ponovno pokretanje:Kada i ako uslugu treba ponovno pokrenuti. Postavili smo ga na neuspjeh. RestartSec:Koliko treba čekati prije pokušaja ponovnog pokretanja usluge. Ova vrijednost je u sekundama. KillMode:Definira kako |_+_| treba ubiti proces ako tražimo |_+_| za zaustavljanje usluge. Imamo ovaj set za obradu. To uzrokuje |_+_| koristiti |_+_| signal samo na glavnom procesu. Da je naša usluga ne-trivijalan program umjesto jednostavne skripte, postavili bismo ovo na mješovito kako bismo osigurali da su svi pokrenuti procesi također prekinuti. Trazi:Ovo je postavljeno na multi-user.target, što znači da se usluga treba pokrenuti sve dok je sustav u stanju u kojem se više korisnika može prijaviti, bez obzira na to je li dostupno grafičko korisničko sučelje ili ne.

Datoteka jedinice ne mora biti izvršna, ali dozvole za jediničnu datoteku trebaju ograničiti tko je može uređivati. Ne želite da zlonamjerni ili nestašni korisnik mijenja datoteku jedinice tako da ona izvršava potpuno drugačiji program.

Ova naredba će vlasniku dati dopuštenja za čitanje i pisanje te dopuštenja za čitanje grupi. Drugi neće imati nikakva dopuštenja.

systemd

Možemo imati |_+_| provjerite sintaksu naše datoteke jedinice, čak i ako usluga još nije pokrenuta. Sve pogreške će biti prijavljene. (Zapravo, dio .service nije obavezan za većinu naredbi.)

gedit

Oglas

Pogreške nisu istaknute, što znači da je naša jedinica datoteka sintaktički točna.

Pokretanje usluge

Kada dodate novu datoteku jedinice ili uredite postojeću, morate reći |_+_| za ponovno učitavanje definicija datoteke jedinice.

echo

Ako želite da se usluga pokrene pri pokretanju, morate omogućiti to:

systemd-cat

Omogućavanje usluge ne pokreće je, već samo postavlja da se pokrene u vrijeme pokretanja. Za pokretanje usluge sada , morate koristiti |_+_| sa |_+_| opcija.

-p

Provjera usluge

Nakon ručnog pokretanja usluge ili nakon ponovnog pokretanja računala, možemo provjeriti radi li naša usluga ispravno.

while

Prikazuje nam se status usluge.

Status htg.service u terminalu widnow

  • Zelena točka znači da naša usluga radi bez problema.
  • Naziv usluge je htg.service, a dugi opis je onaj koji smo dali u datoteci jedinice.
  • Pokazano nam je koja je datoteka jedinice učitana /etc/systemd/system/htg.service.
  • Usluga je aktivna, a navedeno nam je vrijeme kada je usluga pokrenuta.
  • Njegov PID je 7762.
  • Dva su zadatka povezana s uslugom.
  • Ukupno 928 kibibajti memorije koristi ih služba.
  • Kontrolna grupa uključuje skriptu htg.sh i |_+_| naredbu, koju je pokrenuo htg.sh. Većinu vremena, |_+_| zapovjedništvo će obavljati posao za ovu uslugu.

Također nam je prikazano zadnjih 10 unosa u dnevnik koje je proizvela ova usluga. Nije iznenađujuće, svi su u razmaku od jedne minute.

Zaustavljanje i onemogućavanje usluge

Ako trebate zaustaviti uslugu, to možete učiniti s ovom naredbom:

TIMESTAMP

Oglas

To zaustavlja uslugu, ali ne sprječava je da se ponovno pokrene sljedeći put kada se računalo ponovno pokrene. Da biste zaustavili pokretanje usluge pri pokretanju, morate to učiniti onemogućiti to:

/usr/local/bin

Ako je usluga pokrenuta, ova naredba je ne zaustavlja. Jednostavno govori |_+_| da ne pokrenete uslugu pri sljedećem ponovnom pokretanju.

Ako želite zaustaviti uslugu i spriječiti njeno pokretanje pri pokretanju, koristite obje naredbe.

Savjet za uslugu

Provjerite radi li vaš program prema očekivanjima prije nego što ga pokušate pokrenuti kao uslugu.

Linux naredbe
Datoteke katran · pv · mačka · tac · chmod · zahvat · razl · sed · S · čovjek · pushd · popd · fsck · testdisk · sljed · F D · pandok · CD · $PATH · awk · pridružiti · jq · preklopiti · jedinstven · journalctl · rep · država · ls · fstab · izbaciti · manje · chgrp · chown · rev · izgled · žice · tip · preimenovati · patentni zatvarač · otvoriti rajsfešlus · montirati · razmontirati · instalirati · fdisk · mkfs · rm · rmdir · rsync · df · gpg · mi · nano · mkdir · iz · ln · zakrpa · Pretvoriti · rclone · usitniti · SRM
Procesi alias · zaslon · vrh · Lijepo · renice · napredak · strace · sustav · tmux · chsh · povijesti · na · serija · besplatno · koji · dmesg · usermod · p.s · chroot · xargs · tty · ružičasti · lsof · vmstat · pauza · zid · Da · ubiti · spavati · sudo · njegov · vrijeme · groupadd · usermod · grupe · lshw · ugasiti · ponovno podizanje sustava · Stop · isključenje · passwd · lscpu · crontab · datum · bg · fg
Umrežavanje netstat · ping · traceroute · ip · ss · tko je · fail2ban · bmon · vas · prst · nmap · ftp · kovrča · wget · tko · tko sam ja · U · iptables · ssh-keygen · ufw

POVEZANO: Najbolja prijenosna računala s Linuxom za programere i entuzijaste

PROČITAJTE SLJEDEĆE Fotografija profila Davea McKaya Dave McKay
Dave McKay je prvi put koristio računala kada je bušena papirna traka bila u modi i od tada se bavi programiranjem. Nakon više od 30 godina u IT industriji, sada je stalni tehnološki novinar. Tijekom svoje karijere radio je kao freelance programer, voditelj međunarodnog tima za razvoj softvera, voditelj projekta IT usluga, a nedavno i kao službenik za zaštitu podataka. Njegovo pisanje objavili su howtogeek.com, cloudsavvyit.com, tenterpriser.com i opensource.com. Dave je Linux evanđelist i zagovornik otvorenog koda.
Pročitajte cijelu biografiju

Zanimljivi Članci