Systemd සඳහා ආරම්භක ස්ක්‍රිප්ට් ලියන්නේ කෙසේද


237

මගේ ලැප්ටොප් පරිගණකයේ ග්‍රැෆික් කාඩ්පත් 2 ක් ඇත. එකක් පොලිස්පතිවරයා වන අතර තවත් අයෙකි.

විවික්ත ග්‍රැෆික් කාඩ්පත අක්‍රිය කිරීම සඳහා මම ෂෙල් ස්ක්‍රිප්ට් එකක් ලියා ඇත.

ආරම්භයේදීම එය ක්‍රියාත්මක කිරීම සඳහා එය systemd ස්ක්‍රිප්ට් බවට පරිවර්තනය කරන්නේ කෙසේද?

Answers:


341

ඒ සඳහා ප්‍රධාන වශයෙන් ප්‍රවේශයන් දෙකක් තිබේ:

  • ඔබට ස්ක්‍රිප්ට් එකක් ධාවනය කිරීමට සිදුවුවහොත්, ඔබ එය පරිවර්තනය නොකර systemdසේවාවක් හරහා ස්ක්‍රිප්ට් ධාවනය කරන්න .

එබැවින් ඔබට ගොනු දෙකක් අවශ්‍ය වේ: ස්ක්‍රිප්ට් සහ .serviceගොනුව (ඒකක වින්‍යාස ගොනුව).
ඔබගේ ස්ක්‍රිප්ට් ක්‍රියාත්මක කළ හැකි බවත් පළමු පේළිය ( ෂෙබාං ) බවත් තහවුරු කරගන්න #!/bin/sh. ඉන්පසු .serviceගොනුව සාදන්න /etc/systemd/system(සරල පෙළ ගොනුවක්, අපි එය අමතමු vgaoff.service).
උදාහරණයක් වශයෙන්:

  1. පිටපත: /usr/bin/vgaoff
  2. ඒකක ගොනුව: /etc/systemd/system/vgaoff.service

දැන්, ඒකක ගොනුව සංස්කරණය කරන්න. එහි අන්තර්ගතය ඔබගේ ස්ක්‍රිප්ට් ක්‍රියා කරන ආකාරය මත රඳා පවතී:

vgaoffGpu වලින් බලය ලබා ගන්නේ නම් , උදා:

exec blah-blah pwrOFF etc 

එවිට අන්තර්ගතය විය vgaoff.serviceයුත්තේ:

[Unit]
Description=Power-off gpu

[Service]
Type=oneshot
ExecStart=/usr/bin/vgaoff

[Install]
WantedBy=multi-user.target

නම් vgaoffGPU හි ලකුණු ද බලයට බලය භාවිතා එය මත පිටුබලය, උදා:

start() {
  exec blah-blah pwrOFF etc
}

stop() {
  exec blah-blah pwrON etc
}

case $1 in
  start|stop) "$1" ;;
esac

එවිට අන්තර්ගතය විය vgaoff.serviceයුත්තේ:

[Unit]
Description=Power-off gpu

[Service]
Type=oneshot
ExecStart=/usr/bin/vgaoff start
ExecStop=/usr/bin/vgaoff stop
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
  • වඩාත්ම සුළු කාරණා සඳහා, ඔබට ස්ක්‍රිප්ට් නොමැතිව කළ හැකි අතර යම් විධානයක් කෙලින්ම ක්‍රියාත්මක කරන්න:

ක්‍රියා විරහිත කිරීමට:

[Unit]
Description=Power-off gpu

[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo OFF > /whatever/vga_pwr_gadget/switch"

[Install]
WantedBy=multi-user.target

ක්‍රියා විරහිත කිරීමට සහ ක්‍රියාත්මක කිරීමට:

[Unit]
Description=Power-off gpu

[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo OFF > /whatever/vga_pwr_gadget/switch"
ExecStop=/bin/sh -c "echo ON > /whatever/vga_pwr_gadget/switch"
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

ඔබ ලිපිගොනු අවසන් කළ පසු, සේවාව සක්‍රීය කරන්න:

systemctl enable vgaoff.service

එය ඊළඟ ඇරඹුමෙන් ස්වයංක්‍රීයව ආරම්භ වේ. ඔබට එකවරම සේවාව සක්‍රීය කර ආරම්භ කළ හැකිය

systemctl enable --now vgaoff.service

වන විට systemd v.220(පැරණි අග්ර සැකසුම සඳහා ඔබ එය අතින් ආරම්භ කිරීමට සිදුවේවි.)
වැඩි විස්තර සඳහා systemd.serviceඅත්පොත බලන්න.


දෝශ නිරාකරණ .
මෙතැනින් ආරම්භ කරන්න: සේවාවක
සම්පූර්ණ ලොගය දකින්නේ කෙසේද systemd?
systemdසේවා පිටවීමේ කේත සහ තත්ව තොරතුරු පැහැදිලි කිරීම


සවිස්තරාත්මක පිළිතුරට ස්තූතියි. පිටපතෙහි එක් විධානයක් අඩංගු වේ "echo OFF> / sys / kernel / debug / vgaswitcheroo / switch"
Sharique

එය පහත දැක්වෙන පණිවිඩය සමඟ අසමත් වේ vgaoff.service - බලයෙන් ක්‍රියා විරහිත gpu පටවා ඇත: පටවා ඇත (/usr/lib/systemd/system/vgaoff.service; සක්‍රීය) සක්‍රීය: අසාර්ථක (ප්‍රති ult ලය: පිටවීමේ කේතය) අඟහරුවාදා සිට 2012 සැප්තැම්බර් 11 23: 46:46 +0530; 30s පෙර ක්‍රියාවලිය: 5258 ExecStart = / usr / lib / systemd / scripts / vgaoff (code = exited, status = 203 / EXEC) CGroup: name = systemd: /system/vgaoff.service
Sharique

අපොයි, නැවත නොවේ, මට මේ කුඩා දේ මග හැරුණි, එය හොඳින් ක්‍රියාත්මක වේ .. නැවතත් ස්තූතියි.
ෂරික්

5
Az බසොන් - මෙම තර්කනයට අනුව, මෙම වෙබ් අඩවියේ පිළිතුරු දහස් ගණනක් අද්දැකීම් අඩු පරිශීලකයින් සඳහා “විභව උගුල්” වේ. කුමක් කරන්නේ දැයි නොදන්නා / සම්පූර්ණයෙන් තේරුම් echo SOMETHING > /some/fileනොගන්නා පුද්ගලයින් (හෝ වෙනත් විධානයක් ඇත්ත වශයෙන්ම) ඔවුන්ගේ පද්ධතිවල දේවල් ක්‍රියාත්මක කිරීමට උත්සාහ කිරීමට පෙර CLI හි මූලික කරුණු දැන සිටිය යුතුය. එය පසෙක තබා, FYI, ලැප්ටොප් මාදිලි කිහිපයක dGPU ක්‍රියා විරහිත කරන්නේ කෙසේදැයි කියවන්න , එහි භාවිතා කරන විධානයන් ඔබ යෝජනා කරන දෙයක් සමඟ ප්‍රතිස්ථාපනය කළ හැකිදැයි බලන්න. එසේම, මුල් ගොනුව යථා තත්වයට පත් කිරීම සඳහා ඔබ සාමාන්‍යයෙන් එහි ඇති පැකේජය නැවත ස්ථාපනය කරන්න.
don_crissti

4
@don_crissti අපොයි! ඔත්තුවට ස්තූතියි. (නොමඟ යවන තොරතුරු ප්‍රචාරය නොකිරීමට මගේ මුල් අදහස මකා දැමීය.)
වුඩ්‍රෝ බාර්ලෝ
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.