උබුන්ටු ආරම්භ වන විට ස්ක්රිප්ට් ස්වයංක්රීයව ධාවනය කරන්නේ කෙසේද, එබැවින් ආරම්භයෙන් පසු ඒවා අතින් ධාවනය කිරීමට මට අවශ්ය නොවේ.
උබුන්ටු ආරම්භ වන විට ස්ක්රිප්ට් ස්වයංක්රීයව ධාවනය කරන්නේ කෙසේද, එබැවින් ආරම්භයෙන් පසු ඒවා අතින් ධාවනය කිරීමට මට අවශ්ය නොවේ.
Answers:
ඔබ ධාවනය කළ යුත්තේ කුමන ආකාරයේ ස්ක්රිප්ට් මතද .. සේවා සඳහා සහ ඒ හා සමාන දෑ සඳහා ඔබ ඉහළට භාවිතා කළ යුතුය . නමුත් පරිශීලක ස්ක්රිප්ටයක් සඳහා මේවා සැසි ස්ක්රිප්ට් ලෙස ග්නෝම් විසින් දියත් කළ යුතුය! පද්ධතිය> මනාපයන්> ආරම්භක යෙදුම් යටතේ බලන්න.
පැති සටහනක ටර්මිනල් පිවිසුම් මත ධාවනය කිරීමට ඔබට ස්ක්රිප්ට් කිහිපයක් අවශ්ය නම් ඔබට ඒවා ඔබගේ නිවාස නාමාවලියෙහි .bash_login ගොනුවට එක් කළ හැකිය .
සරල විධානයකට (දිගටම ක්රියාත්මක වීමට අවශ්ය නොවන) ඉහළට වැනි කාර්යයක් භාවිතා කළ හැකිය:
start on startup
task
exec /path/to/command
මෙය .conf
ගොනුවක සුරකින්න /etc/init
(පද්ධතිය ආරම්භ වන විට එය root ලෙස ක්රියාත්මක කිරීමට ඔබට අවශ්ය නම්), හෝ ~/.config/upstart
(ඔබ ලොග් වූ විට එය ඔබේ පරිශීලකයා ලෙස ක්රියාත්මක කිරීමට අවශ්ය නම්).
system->pref->startup applications
සොයා ගත /etc/init/
නොහැක ~/.config/upstart
. ඒ නිසා එහිදී ආරම්භක අයදුම්පත් අර්ථ නිරූපනය කර ඇත?
එක් ප්රවේශයක් වන්නේ @reboot cron කාර්යයක් එක් කිරීමයි :
crontab -e
කිරීමෙන් ඔබේ ක්රෝන් සංස්කරණය කිරීමට ඉඩ ලබා දේ.මෙයට රේඛාවක් එකතු කිරීම:
@reboot /path/to/script
ඔබේ පරිගණකය ආරම්භ වූ වහාම එම ස්ක්රිප්ට් ක්රියාත්මක කරනු ඇත.
@reboot
පදය ඉතා හොඳ තොරතුරක් වන බැවින් එය පුළුල් ලෙස නොදන්නා බැවිනි.
man 5 crontab
බව පවසයි @reboot
(ක්රෝන් ඩීමන් ආරම්භ කළ විට).
rc.local
පද්ධතිය වඩා සැකසුමක් ලෙස පෙනෙන බැවින් (PATH, ආදිය) වඩා මෙය වඩා හොඳ බව පෙනේ . පද්ධති ආරම්භයෙන් පසුව යමක් ඇමතීම එතරම් අපහසු නොවන බව අමුතුයි ..
ඔබට විධාන එකතු කළ හැකිය /etc/rc.local
:
sudo nano /etc/rc.local
මෙය විධාන root ලෙස ක්රියාත්මක කරයි.
නිශ්චිත පරිශීලකයෙකු ලෙස විධාන ක්රියාත්මක කිරීමට, භාවිතා කරන්න sudo -i -u
( -i
පිවිසුම් කවචය ද ක්රියාත්මක කිරීමට). උදාහරණයක් ලෙස, දිගටම පවතින SSH උමග ස්ථාපිත කිරීමට, එහිදී myhost
definde වේ johndoe
ගේ ~/.ssh/config
ගොනුව:
sudo -i -u johndoe autossh -nNT -L 1234:localhost:1234 myhost
/etc/rc.local/
හිස් නම් එය නොතිබෙන්නට ඇති බව සලකන්න , එබැවින් ඔබට ඉහළින් (උදා ) ෂෙබාං රේඛාවක් එක් කළ යුතු #!/bin/bash
අතර ගොනුව ක්රියාත්මක කළ හැකි බව සහතික කරන්න:
sudo chmod +x /etc/rc.local
chmod 755 rc.local
එක් #!/bin/bash
කළ යුතු බව සලකන්න .
ආරම්භයේ දී (කෙටිකාලීන) 1 විධානයක් ක්රියාත්මක කිරීම සඳහා systemd
, ඔබට systemd වර්ගයේ ඒකකයක් භාවිතා කළ හැකිය OneShot
. උදාහරණයක් ලෙස, /etc/systemd/system/foo.service
අඩංගු දේ සාදන්න :
[Unit]
Description=Job that runs your user script
[Service]
ExecStart=/some/command
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
ඉන්පසු ධාවනය කරන්න:
sudo systemctl daemon-reload
sudo systemctl enable foo.service
අත්යවශ්යයෙන්ම, මෙය සාමාන්ය Upstart රැකියාවක් systemd එකක් බවට පරිවර්තනය කිරීමකි ( Upstart භාවිතා කරන්නන් සඳහා Systemd බලන්න ).
ඔබට එකම සේවා ගොනුවෙන් බහු ExecStart
රේඛා භාවිතා කරමින් විධාන කිහිපයක් ක්රියාත්මක කළ හැකිය :
[Service]
ExecStart=/some/command
ExecStart=/another/command some args
ExecStart=-/a/third/command ignore failure
විධානය සෑම විටම සම්පූර්ණ මාර්ගයෙන් ලබා දිය යුතුය. කිසියම් විධානයක් අසමත් වුවහොත්, අනෙක් ඒවා ක්රියාත්මක නොවේ. මාර්ගයට -
පෙර පද්ධතියට ශුන්ය නොවන පිටවීමේ තත්වයක් නොසලකා හරින ලෙස පවසයි (එය අසාර්ථක යැයි සලකනවා වෙනුවට).
අදාළ:
පරිශීලක සැසි සඳහා, ඔබට ~/.config/systemd
ඒ වෙනුවට systemd ඒකකය සෑදිය හැකිය . මෙය 16.04 සිට ක්රියාත්මක විය යුතුය, නමුත් මීට පෙර උබුන්ටු systemd සමඟ නිකුත් නොකෙරේ (පරිශීලක සැසි සඳහා තවමත් Upstart භාවිතා කර ඇති බැවින්). පරිශීලක සැසි ඒකක පද්ධති සේවාවන් හා සමාන විධානයන් සමඟ පාලනය කළ හැකි නමුත් එකතු කළ --user
විකල්පය සමඟ :
systemctl --user daemon-reload
systemctl --user status foo.service
Upstart මෙන් නොව systemd Exec*
විධාන කවචයක් හරහා ධාවනය නොකරන බව සලකන්න . එය යම් සීමිත විචල්ය ප්රසාරණයක් සහ බහු විධානයක් (වෙන් කොට ;
) සිදු කරයි, නමුත් එය ෂෙල් වැනි වාක්ය ඛණ්ඩයට යන තාක් දුරට වේ. වඩාත් සංකීර්ණ ඕනෑම දෙයක් සඳහා, යළි හරවා යැවීම හෝ පයිප්ප කියන්න, ඔබේ විධානය ඔතා sh -c '...'
හෝ bash -c '...'
.
1 දිගු කලක් පැවති භූතයන්ට වඩා වෙනස්ව.
WantedBy
මෙහිදී පාවිච්චි, උදාහරණයක් ලෙස, විට එය ආරම්භ කරයි multi-user.target
ළඟා වේ. ඔබට භාවිතා කළ හැකි Before
, After
, Requires
ආදිය, බලන්නman systemd.unit
RemainAfterExit
ඔබ ආරම්භ කරන සේවාව සහ එහි අපේක්ෂිත හැසිරීම මත රඳා පවතී. උදාහරණයක් ලෙස, /bin/df -h
<s> වනු ඇත </ s> තිබිය යුතුය RemainAfterExit=no
.
df
එම අවශ්යතාවන්ට ආවේනික කිසිවක් නොමැත RemainAfterExit=no
. ඔබ ධාවනය කරන සෑම අවස්ථාවකම විධානය නැවත නැවත ක්රියාත්මක කිරීමට ඔබට අවශ්ය නැතිනම් systemctl start foo
.
විධාන ස්වයංක්රීයව ක්රියාත්මක කිරීමට විවිධ ක්රම තිබේ:
මෙම මත් වර්ජකයන්ගේ පද්ධතිය එය නාමාවලියේ වින්යාස සම්බ වන සියලු පිටපත් ක්රියාත්මක වනු ඇත /etc/init
. මෙම ස්ක්රිප්ට් පද්ධති ආරම්භයේදී ක්රියාත්මක වේ (හෝ සමහර සිදුවීම් වලට ප්රතිචාර වශයෙන්, උදා: වසා දැමීමේ ඉල්ලීමක්) සහ පරිශීලකයා සමඟ අන්තර්ක්රියා නොකරන විධානයන් ක්රියාත්මක කිරීමට ස්ථානයද; සියලුම සේවාදායකයන් මෙම යාන්ත්රණය භාවිතයෙන් ආරම්භ කර ඇත.
ඔබට මෙහි කියවිය හැකි හැඳින්වීමක් සොයාගත හැකිය: http://upstart.ubuntu.com/getting-started.html මිනිසාගේ පිටු man 5 init
සහ man 8 init
සම්පූර්ණ විස්තර ඔබට ලබා දෙන්න.
.gnomerc
ඔබ GNOME සැසියකට පිවිසෙන සෑම අවස්ථාවකම ඔබගේ නිවාස නාමාවලියෙහි නම් කර ඇති ෂෙල් ස්ක්රිප්ට් ස්වයංක්රීයව ලබා ගනී. ඔබට එහි අත්තනෝමතික විධානයන් තැබිය හැකිය; මෙම ස්ක්රිප්ටයේ ඔබ විසින් සකසා ඇති පරිසර විචල්යයන් ඔබගේ සැසිය තුළ ක්රියාත්මක වන ඕනෑම වැඩසටහනක් මඟින් දැකගත හැකිය.
.gnomerc
ස්ක්රිප්ට් එක අවසන් වන තුරු සැසිය ආරම්භ නොවන බව සලකන්න ; එමනිසා, ඔබට දිගුකාලීනව ක්රියාත්මක වන යම් වැඩසටහනක් ස්වයංක්රීයව ආරම්භ කිරීමට අවශ්ය නම්, එය ක්රියාත්මක වන කවචයෙන් &
වෙන් කර ගැනීම සඳහා වැඩසටහන් ආයාචනයට එකතු කළ යුතුය.
මෙනු විකල්පය පද්ධතිය -> මනාපයන් -> ආරම්භක යෙදුම් මඟින් ඔබේ චිත්රක සැසිය ආරම්භ වන විට ආරම්භ කළ යුතු යෙදුම් මොනවාද යන්න නිර්වචනය කිරීමට ඉඩ ලබා දේ (උබුන්ටු පූර්ව නිශ්චය කරයි), ඒවා ඔබේ රසයට එකතු කරන්න හෝ ඉවත් කරන්න. .gnomerc
ඔබට sh
වාක්ය ඛණ්ඩය දැන ගැනීමට අවශ්ය නොවන්නේ නම් (නමුත් ඔබට කිසිදු sh
ක්රමලේඛන ඉදිකිරීමක් භාවිතා කළ නොහැක) හැර, පිටපතෙහි එකම අරමුණ හා විෂය පථය ඇත .
.gnomerc
පෙනෙන හැටියට යුනිටි පැටවීමට පෙර ධාවනය වන අතර Startup Applications
පෙනෙන පරිදි යුනිටි පැටවීමෙන් පසුව ධාවනය වේ. මට යුනිටිගේ මෙනු තීරුවේ වාඩිවී සිටින වැඩසටහනක් ක්රියාත්මක කිරීමට සිදු වූ අතර එය මෙම නඩුවේ විශාල වෙනසක් ඇති කළේය!
sudo update-rc.d myscript.sh defaults
, /etc/init.d/myscript.sh ඔබේ ස්ක්රිප්ට් එක වන අතර එය ආරම්භයේදීම ක්රියාත්මක කරයි.
$HOME/.config/autostart
ආරම්භක යෙදුම් ලැයිස්තුව අඩංගු වේ. .desktop
මෙම ෆෝල්ඩරයේ ඇති ගොනු ආරම්භයේදී ක්රියාත්මක වේ. එයට ක්රියාත්මක කළ හැකි අවසරය අවශ්ය විය හැකිය ( chmod +x startup.desktop
).
.desktop
ගොනුව සඳහා නියැදි උදාහරණය :
[Desktop Entry]
Type=Application
Exec="</path/to/script>"
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=Startup Script
මෙන්න "</path/to/script>"
ඔබේ මාර්ගය සමඟ ආදේශ script.sh
ඔබ ඔබේ තිර රචනය සිදු නම් myscript
දී /usr/local/bin
එය විධානය මගින් සෘජුවම ක්රියාත්මක කරනු ලැබිය හැකි වන පරිදි, ඔබ ලිවීමට හැකිය myscript
වෙනුවට "</path/to/script>"
.
නියැදි උදාහරණය myscript.sh
:
#!/bin/bash
<commands to be executed>
exit
ප්රති ult ලය:
ස්ක්රිප්ට් මඟින් ක්රියාත්මක කරන .desktop
ගොනුව දියත් $HOME/.config/autostart
කෙරේExec=
$HOME/.config/autostart
ඩ්රොප්බොක්ස් සඳහා එක් ගොනුවක් අඩංගු වන නමුත් BTW ක්රියාත්මක කළ නොහැක.
සරල දේවල් සඳහා ඔබේ ස්ක්රිප්ටයේ පිහිටීම පෙන්වා දෙන System-> Preferences-> සැසි තුළ විධානයක් එක් කළ හැකිය .
අකාරයට ඔබට /etc/init.d/rc.local වෙත එක් හෝ කළ හැකි මත් වර්ජකයන්ගේ එය තව නම් රැකියා අඩු මට්ටමේ දේවල්.
වැඩි විස්තර සඳහා https://help.ubuntu.com/community/UbuntuBootupHowto බලන්න
cron
ඉහළ ඡන්දයට වඩා වෙනස් පිළිතුර ක්රියාත්මක වියමෙම පිළිතුර තවමත් භාවිතා කරන cron
නමුත් ඉහළ ඡන්දය දුන් පිළිතුරට වඩා වෙනස් ක්රමයක් භාවිතා කරයි. මෙය උබුන්ටු 16.04 සිට ක්රියාත්මක වන නමුත් බොහෝ විට ඉක්මනින් සහාය වනු ඇත. cron
16.04 සිට පරිගණකය ආරම්භ වන විට මම රැකියා ක්රියාත්මක කිරීමට භාවිතා කිරීම ආරම්භ කළෙමි .
cron
ධාවනය වන්නේ කවදාද ?අදහස් දැක්වීමේදී යමෙකු ඇසුවේ "ඔවුන් දුවන්නේ කවදාද?". ඔබට syslog / magazinectl හි පැවසිය හැකිය:
$ 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
සැලකිල්ලට cron
ගත යුතු එක් දෙයක් නම්, ඔබට රැකියා වල තත්වය සහ රැකියා ක්රියාත්මක වීමේ තත්වය ඊමේල් කළ හැකි @reboot
බැවින් sleep
ඔබේ ස්ක්රිප්ට් (ය) වලට විධානයක් දැමුවහොත් මිස මුල් ජාල කළමනාකරු සහ විද්යුත් තැපෑල ක්රියාත්මක නොවේ .
ඔබගේ ස්ක්රිප්ට් නාමාවලියෙහි තබන්න /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
එක් එක් ඇරඹුම ක්රියාත්මක කිරීම සඳහා මා විසින් සකසා ඇති ස්ක්රිප්ට් කිහිපයක් මෙන්න:
$ 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`
@reboot
.
crontab -e
සමහරු කළු කලාවන්ගෙන් එකක් ලෙස සලකන්නේ විචිත්රවත් අතුරු මුහුණතක් නිසා ය. අනෙක් අතට, මෙම පිළිතුර යම් ආකාරයකින් මොළය රැහැන්ගත කර ඇති අයට ආයාචනා කළ හැකිය. අප සියල්ලන්ම එකම අච්චුවකින් වාත්තු නොවේ. නැවතත් මෙම පිළිතුරට දැනටමත් අඩු ඡන්දයක් ඇත, එබැවින් අපි ප්රජාතන්ත්රවාදයට ඇගේ ගමන යාමට ඉඩ දෙමු.
මේ සඳහා ඔබ ඉහළට භාවිතා කළ යුතුය . ස්වයංක්රීයව ආරම්භ වන උබුන්ටු ක්රියාවලි සඳහා Upstart භාවිතා කරයි. එය පැරණි System-V init.d ස්ක්රිප්ට් වැනි වැඩි දියුණු කළ විසඳුමකි. එය ඔබගේ ස්ක්රිප්ට් ආරම්භයට පූර්වාවශ්යතාවක් තැබීමට ද ඉඩ දෙයි (එනම් ඔබට ජාල ධාවනය අවශ්යද? ආදිය)