Jinsi ya kuendesha hati juu ya kuanza?


Nenda kwa jibu lililokubaliwa


Je! Ninawezaje kuendesha maandishi kiotomati wakati Ubuntu inapoanza ili sihitaji kuzisimamia baada ya kuanza?


540





2010-08-04




Idadi ya majibu: 9


Kulingana na aina gani ya maandiko unahitaji kuendesha .. Kwa huduma na kama unazopaswa kutumia kichwa . Lakini kwa hati ya mtumiaji hizi zinapaswa kuzinduliwa kama hati za kikao na utoto! Kuwa na kuangalia chini ya Mfumo> Mapendeleo> Programu za Kuanzisha.

Kwenye kumbuka ya upande ikiwa unahitaji maandishi mengine kuendeshwa kwenye kuingia kwa terminal unaweza kuwaongeza kwenye faili ya .bash_login kwenye saraka yako ya nyumbani.

Kwa 14.04 na zaidi

Amri rahisi (ambayo haiitaji kubaki inayoendesha) inaweza kutumia kazi ya Upstart kama:

 start on startup
task
exec /path/to/command
 

Hifadhi hii kwenye .conf faili katika /etc/init (ikiwa unahitaji ni mzizi wakati mfumo unasonga), au ~/.config/upstart (ikiwa unahitaji ili iendeshe kama mtumiaji wako unapoingia).


212


2010-08-04

Njia moja ni kuongeza kazi ya cron @reboot :

  1. Running crontab -e itakuruhusu kuhariri cron yako.
  2. Kuongeza mstari kama huu kwake:

     @reboot /path/to/script
     

    itatoa hati hiyo mara tu kompyuta yako itakaposonga.


574


2010-08-04

Unaweza kuongeza amri kwa /etc/rc.local :

 sudo nano /etc/rc.local
 

Hii inafanya amri kama mzizi.

Ili kutekeleza maagizo kama mtumiaji maalum, tumia sudo -i -u ( -i pia kukimbia ganda la kuingia). Kwa mfano, kuanzisha handaki ya SSH inayoendelea, myhost iko wapi upungufu kwenye faili ya johndoe s ~/.ssh/config :

 sudo -i -u johndoe autossh -nNT -L 1234:localhost:1234 myhost
 

Kumbuka kuwa ikiwa /etc/rc.local/ haikuwa tupu, inaweza kuwa haikuwepo, kwa hivyo unahitaji kuongeza mstari wa shebang hapo juu (kwa mfano #!/bin/bash ), na uhakikishe kuwa faili inatekelezwa:

 sudo chmod +x /etc/rc.local
 

168


2010-08-05

Kwa 15.04 na baadaye:

Kuendesha amri (ya muda mfupi) 1 kwa kuanza kutumia systemd , unaweza kutumia kitengo cha aina ya aina OneShot . Kwa mfano, unda /etc/systemd/system/foo.service vyenye:

 [Unit]
Description=Job that runs your user script

[Service]
ExecStart=/some/command
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
 

Kisha kukimbia:

 sudo systemctl daemon-reload
sudo systemctl enable foo.service
 

Kimsingi, hii ni kubadilisha tu kazi ya kawaida ya Upstart kuwa moja ya mfumo (ona Systemd ya watumiaji wa Upstart ).

Unaweza kuendesha amri nyingi kutoka faili hiyo ya huduma, ukitumia ExecStart mistari mingi :

 [Service]
ExecStart=/some/command
ExecStart=/another/command some args
ExecStart=-/a/third/command ignore failure
 

Amri lazima itolewe kila wakati na njia kamili. Ikiwa amri yoyote itashindikana, iliyobaki haijaendeshwa. - Kabla ya njia anaelezea systemd kupuuza zisizo sifuri kutoka ya hali ya juu (badala ya kuzingatia ni kushindwa).

Inayohusika:


Kwa vikao vya watumiaji, unaweza kuunda kitengo cha mfumo mahali hapo ~/.config/systemd . Hii inapaswa kufanya kazi na 16.04 kuendelea, lakini sio kutolewa mapema kwa Ubuntu na systemd (kwani zile zilizotumiwa Upstart kwa vikao vya watumiaji). Sehemu za kikao cha watumiaji zinaweza kudhibitiwa na maagizo sawa na huduma za mfumo, lakini kwa --user chaguo kilichoongezwa:

 systemctl --user daemon-reload
systemctl --user status foo.service
 

Shell syntax

Kumbuka kuwa, tofauti na Upstart, mfumo haudhibiti Exec* amri kupitia ganda. Inafanya utendaji mdogo wa upanuzi tofauti na amri nyingi (iliyotengwa na ; ) yenyewe, lakini hiyo ni karibu na syntax kama ganda inavyokwenda. Kwa kitu chochote ngumu zaidi, sema uelekezaji au mabomba, funga amri yako sh -c '...' au bash -c '...' .


1 Kinyume na daemons zilizoishi kwa muda mrefu.


81


2016-01-09

Kuna njia tofauti za kuendesha amri kiatomatiki:

  1. Mfumo wa juu utatumia maandiko yote ambayo hupata usanidi katika saraka /etc/init . Maandishi haya yataanza wakati wa kuanza kwa mfumo (au kujibu hafla fulani, mfano, ombi la kuzima) na hivyo ndio mahali pa kutekeleza amri ambazo haziingiliani na mtumiaji; seva zote zinaanza kutumia utaratibu huu.

    Unaweza kupata utangulizi unaoweza kusomeka kwa: http://upstart.ubuntu.com/getting-started.html kurasa za mtu huyo man 5 init na man 8 init kukupa maelezo kamili.

  2. Nakala ya ganda iliyopewa jina .gnomerc kwenye saraka ya nyumba yako hutolewa kiatomati kila wakati unapoingia kwenye kikao cha GNOME. Unaweza kuweka amri za kiholela huko; mazingira anuwai ambayo umeweka kwenye hati hii itaonekana na programu yoyote ambayo unaendesha katika kikao chako.

    Kumbuka kuwa kikao hakianza hadi .gnomerc hati imekamilika; kwa hivyo, ikiwa unataka kujaza programu fulani inayoendesha kwa muda mrefu, unahitaji kuendana & na ombi la mpango, ili kuifuta kutoka kwa ganda linaloendesha.

  3. Mfumo wa chaguo la menyu -> Mapendeleo -> Programu za Kuanzisha hukuruhusu kufafanua matumizi gani yanapaswa kuanza wakati kikao chako cha picha kinaanza (Ubuntu anafafanua mengi), na uwaongeze au uwaondoe kwa ladha yako. Hii ina kusudi karibu na upeo wa .gnomerc maandishi, isipokuwa sh hauitaji kujua syntax (lakini pia hauwezi kutumia sh programu yoyote ya ujenzi).


71


2010-08-05

 $HOME/.config/autostart
 
  • Mahali hapa pana orodha ya maombi ya anza.
  • .desktop faili inaweza kuwekwa hapa ambayo itatekelezwa kwa kuanza.

Mfano wa .desktop faili:

Kuweka .desktop faili ifuatayo $HOME/.config/autostart na kupewa chmod +x :

 [Desktop Entry]
Type=Application
Exec="</path/to/script>"
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=Startup Script
 

Hapa "</path/to/script>" inabadilishwa na njia ya kwako script.sh
(kawaida hupendekezwa kwa /usr/local/bin hivyo- ambayo inaweza kutekelezwa na amri ya moja kwa moja myscript isemayo "</path/to/script>" ).

Mfano wa script.sh :

 #!/bin/bash
<commands to be executed>
exit
 

Matokeo: .desktop faili itazinduliwa $HOME/.config/autostart ambayo nitafanya hati na Exec=

Kwa hivyo, unaweza kukimbia hati yako ya taka ya mwanzi wakati wa kuanza!


27


2014-07-20

Kwa vitu rahisi unaweza kuongeza amri katika Mfumo-> Mapendeleo-> Vikao vinaashiria eneo la hati yako.

Vinginevyo unaweza kuiongeza kwa /etc/init.d/rc.local au fanya kazi ya upstart ikiwa ni vitu vya chini zaidi .

Angalia https://help.ubuntu.com/community/UbuntuBootupHowto kwa habari zaidi


18


2010-08-04

cron jibu lililotekelezwa tofauti na lililopigwa zaidi

Jibu hili bado linatumia cron lakini hutumia njia tofauti kuliko jibu la juu lililopigwa. Hii inafanya kazi tangu Ubuntu 16.04 lakini labda iliungwa mkono mapema. Ni kwamba nilianza kutumia cron kazi wakati kompyuta inapoongezeka tangu 16.04.

Inakimbia lini cron ?

Kwenye maoni mtu aliuliza "wanakimbia lini?". Unaweza kuwaambia kwa syslog / jarida:

 $ journalctl -b | grep cron
Jan 02 16:54:40 alien cron[919]: (CRON) INFO (pidfile fd = 3)
Jan 02 16:54:40 alien cron[919]: (CRON) INFO (Running @reboot jobs)
Jan 02 16:54:40 alien systemd[1]: Started Run anacron jobs.
Jan 02 16:54:40 alien anacron[949]: Anacron 2.3 started on 2018-01-02
Jan 02 16:54:40 alien anacron[949]: Normal exit (0 jobs run)
Jan 02 16:54:40 alien CRON[952]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[954]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[951]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[950]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[985]: (root) CMD (   /usr/local/bin/cron-reboot-cycle-grub-background)
Jan 02 16:54:40 alien CRON[954]: pam_unix(cron:session): session closed for user root
Jan 02 16:54:40 alien cron[919]: sendmail: Cannot open smtp.gmail.com:587
Jan 02 16:54:40 alien CRON[952]: pam_unix(cron:session): session closed for user root
Jan 02 16:54:40 alien cron[919]: sendmail: Cannot open smtp.gmail.com:587
Jan 02 16:54:40 alien CRON[950]: pam_unix(cron:session): session closed for user root
 

Jambo moja la kuzingatia ni kwamba cron barua pepe ya hali ya ajira inaendeshwa na @reboot kazi zinaendeshwa ili meneja wa mtandao wa mapema na barua pepe haitatumika isipokuwa utaweka sleep amri kwenye hati yako.

Mahali pa kuweka hati zako

Weka hati zako kwenye saraka /etc/cron.d :

 $ ll /etc/cron.d
total 44
drwxr-xr-x   2 root root  4096 Nov 26 19:53 ./
drwxr-xr-x 139 root root 12288 Dec 31 13:58 ../
-rw-r--r--   1 root root   244 Dec 28  2014 anacron
-rw-r--r--   1 root root   148 Feb 18  2017 cycle-grub-background
-rw-r--r--   1 root root   138 Mar  5  2017 display-auto-brightness
-rw-r--r--   1 root root   460 Nov 26 19:53 nvidia-hdmi-sound
-rw-r--r--   1 root root   102 Feb  9  2013 .placeholder
-rw-r--r--   1 root root   224 Nov 19  2016 touch-vmlinuz
-rw-r--r--   1 root root   700 Aug  5 11:15 turn-off-hyper-threading
 

Maandishi yanaonekanaje?

Hapa kuna maandishi kadhaa ambayo nimeanzisha kuanzisha kila boot:

 $ cat /etc/cron.d/cycle-grub-background SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 
@reboot   root    /usr/local/bin/cron-reboot-cycle-grub-background

$ cat /etc/cron.d/touch-vmlinuz
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot   root    touch "/boot/vmlinuz-"`uname -r`
 

8


2018-01-03

Unapaswa kutumia kichwa kwa hii. Upstart hutumiwa kwa michakato ya Ubuntu ambayo imeanza kiatomati. Ni suluhisho iliyoimarishwa kama hati ya zamani ya System-V init.d. Pia hukuruhusu kuweka prerequisites mwanzo wa hati yako (yaani unahitaji mtandao unaendesha? Nk)


5


2010-08-04