תיקון מהיר לפתרון הבעיה עם הפקודה 'systemctl' והצגה של כמה חלופות יעילות לה
systemctl
בהיותך כלי עזר חשוב במערכת האקולוגית של לינוקס, נפוץ מאוד שאתה עלול להיתקל בשגיאת "systemctl: הפקודה לא נמצאה" כאשר אתה מנסה להפעיל את systemctl
פקודה. זה אולי לא המקרה עבור כל ההפצות של לינוקס, אבל אתה כנראה יכול להיתקל בשגיאה זו כאשר אתה משתמש בגרסה ישנה יותר של הפצת לינוקס שאינה תומכת ב- systemctl
פקודה.
הבעיה שעלתה לך היא בעיה נפוצה מאוד וניתן לתקן אותה בקלות. אז אל תדאג כלל ופשוט תעבור על המדריך המלא כדי למצוא פתרון מהיר וקל.
תחילה ננסה להבין את הבעיה ולאחר מכן לתקן אותה.
תובנות לגבי systemctl
ו systemd
מכיוון שהשגיאה היא בהתייחסות ל systemctl
פקודה, זה יהיה טוב לדעת את היסודות של פקודה זו כדי להבין טוב יותר את התיקון לשגיאה זו.
systemctl
הוא כלי שורת פקודה שמציעה לינוקס, המשמש לניטור ושליטה על כלי שורת פקודה אחר בשם 'systemd
'. הוא גם בודק ושולט במנהל המערכת יחד עם 'systemd
' שירות.
תחביר כללי:
systemctl [אופציה] [שם]
systemd
הוא חבילה של דמונים, ספריות וכלי עזר השולטים בתוכניות הפועלות כאשר המערכת שלך מאתחלת. systemd
מצליח גם ליזום עבודה חשובה כמו פתיחת יומן של פעילות מערכת.
כלי זה מתפקד ככלי הניהול המרכזי עבור רוב אם לא כל מערכות ההפעלה המבוססות על לינוקס.
סיבת השורש של השגיאה
הסיבה הסבירה ביותר לשגיאה זו עשויה להיות שאתה משתמש בגרסה ישנה יותר של הפצת לינוקס. רבות מהגרסאות הישנות משתמשות ב- SysV init
במקום ה systemd
תוֹעֶלֶת.
systemd
כלי השירות נעדר בגרסאות לינוקס הקודמות מכיוון שהוא תוספת עדכנית לסל כלי השירות שסופק על ידי לינוקס. systemctl
תואם לתפקוד ולניטור עם systemd
כלי השירות ולא יצליח לעבוד עם התצורות הקודמות כמו SysV
init
אוֹ מתחיל
.
אם אתה לא משתמש systemd
, אז שגיאה זו צפויה. זה פשוט וישר כמו זה.
אתה עלול להיתקל בשגיאה זו בדרך הבאה.
gaurav@ubuntu:~$ sudo systemctl התחל ufw [sudo] סיסמה עבור gaurav: sudo: systemctl: הפקודה לא נמצאה gaurav@ubuntu:~$
כאן, ניסינו להפעיל את חומת האש של אובונטו (ufw
) משתמש ב systemctl
הפקודה ונתקל בשגיאה "systemctl: הפקודה לא נמצאה".
אז מה לעשות עכשיו אם אינך רוצה לשנות את הפצת הלינוקס הנוכחית שלך המשתמשת בכלי עזר ניהול מרכזי אחר מלבד systemd
? ובכן, יש לנו תיקון מהיר עבורך שיאפשר לך לשמור על הפצת לינוקס הנוכחית שלך וכן לתקן את השגיאה שלך תוך זמן קצר.
הבה נבחן את התיקון כעת.
תיקון שגיאת "systemctl: הפקודה לא נמצאה".
לבסוף, הבה נבחן כעת את פתרון הבעיה הנדונה לאחר ניתוח הגורמים והעובדות הבסיסיות לגבי הבעיה.
תיקון 1: החלפה systemctl
עם שֵׁרוּת
פקודה
תיקון פשוט לשגיאה המדוברת הוא להשתמש ב- שֵׁרוּת
פקודה במקום השגיאה שגורמת systemctl
פקודה.
שֵׁרוּת
הפקודה עוזרת בהפעלת ה SystemV init
סקריפט המשמש את ההפצות הישנות יותר של לינוקס. אם אינך רוצה להתקין את systemd
כלי השירות במערכת שלך, התיקון הזה בוודאי יעבוד בשבילך.
אתה יכול להפעיל, להפעיל מחדש או לעצור כל שירותים ודמונים בהפצת הלינוקס שלך באמצעות שֵׁרוּת
פקודה.
ה שֵׁרוּת
הפקודה וה systemctl
פונקציית הפקודה באותו אופן, ההבדל היחיד כאן הוא התאימות של הפקודה לכלי השירות שאחראים לריצה החיננית של המערכת שלך.
תן לנו לראות את שֵׁרוּת
פקודה עם איור.
תחביר כללי:
sudo service [service_name] [פעולה]
בתחביר לעיל, ה [פעולה]
החלל עשוי לכלול פעולות כמו הַתחָלָה
, תפסיק
, אתחול
אוֹ סטָטוּס
.
נריץ את אותה פקודה כדי להפעיל את ufw
שירות באמצעות שֵׁרוּת
פקודה.
שירות sudo ufw start
תְפוּקָה:
gaurav@ubuntu:~$ שירות sudo ufw התחל gaurav@ubuntu:~$ שירות sudo ufw status ● ufw.service - חומת אש לא מסובכת נטען: נטען (/lib/systemd/system/ufw.service; מופעל; הגדרה מראש של ספק: enab פעילה: פעיל (יצא) מאז יום שני 2020-09-28 11:22:34 IST; לפני שעה 5 דקות מסמכים: man:ufw(8) תהליך: 333 ExecStart=/lib/ufw/ufw-init start שקט (קוד=יצא, סטטוס =0/SU PID ראשי: 333 (קוד=יצא, סטטוס=0/SUCCESS) 28 בספטמבר 11:22:34 ubuntu systemd[1]: הופעל חומת אש לא מסובכת. אזהרה: היומן עבר סיבוב מאז שהיחידה הופעלה. פלט היומן הוא לא שלם
הנה ה שֵׁרוּת
נעשה שימוש בפקודה במקום systemctl
פקודה וזה עבד בסדר גמור.
הבה נראה עוד דוגמה אחת של שֵׁרוּת
פקודה כדי לקבל הבנה נכונה של זה.
שירות sudo apache2 התחל
תְפוּקָה:
gaurav@ubuntu:~$ sudo service apache2 status ● apache2.service - שרת ה-Apache HTTP נטען: נטען (/lib/systemd/system/apache2.service; מופעל; ספק מוגדר מראש: Drop-In: /lib/systemd/system/ apache2.service.d └─apache2-systemd.conf פעיל: פעיל (פועל) מאז יום שני 2020-09-28 11:22:47 IST; לפני שעה 16 דקות תהליך: 1172 ExecStart=/usr/sbin/apachectl start (קוד= exited, status=0/SUCCE PID ראשי: 1248 (apache2) משימות: 55 (מגבלה: 4456) CGroup: /system.slice/apache2.service ├─1248 /usr/sbin/apache2 -k start ├─1249 /usr/ sbin/apache2 -k start └─1250 /usr/sbin/apache2 -k start 28 בספטמבר 11:22:43 ubuntu systemd[1]: הפעלת שרת ה-Apache HTTP... 28 בספטמבר 11:22:47 ubuntu apachectl[1172 ]: AH00112: אזהרה: DocumentRoot [/var/www 28 ספט' 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: לא ניתן היה לזהות באופן מהימן 28 בספטמבר 11:22:47 ubuntu systemd[1]: הופעל ה-Apache HTTP שרת. gaurav@ubuntu:~$
השתמשנו ב- שֵׁרוּת
הפקודה כדי להפעיל את כלי השירות apache2. משתמש ב סטָטוּס
אפשרות עם ה שֵׁרוּת
הפקודה תציג את המצב הנוכחי של השירות. נקבל את הפרטים אם הוא פועל או מת (לא פעיל).
הבה נשתמש כעת ב- תפסיק
פעולה להפסקת שירות apache2 באמצעות ה שֵׁרוּת
פקודה.
gaurav@ubuntu:~$ שירות sudo apache2 stop gaurav@ubuntu:~$ שירות sudo apache2 שורות סטטוס 1--1...דילוג... ● apache2.service - שרת ה-Apache HTTP נטען: נטען (/lib/systemd/ system/apache2.service; enabled; ספק מראש: מופעל) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf פעיל: לא פעיל (מת) מאז יום שני 2020-09-28 12 :42:06 IST; לפני 1 שניות תהליך: 4928 ExecStop=/usr/sbin/apachectl עצירה (קוד=יצא, סטטוס=0/SUCCESS) תהליך: 1172 ExecStart=/usr/sbin/apachectl התחלה (קוד=יצא, סטטוס=0/SUCCESS) PID ראשי : 1248 (קוד=יצא, מצב=0/הצלחה) 28 בספטמבר 11:22:43 ubuntu systemd[1]: הפעלת שרת ה-Apache HTTP... 28 בספטמבר 11:22:47 ubuntu apachectl[1172]: AH00112: אזהרה : DocumentRoot [/var/www/html] לא קיים 28 בספטמבר 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: לא ניתן היה לקבוע באופן מהימן את שם הדומיין המלא של השרת, באמצעות ::1. הגדר את 'S 28 בספטמבר 11:22:47 ubuntu systemd[1]: הפעל את שרת ה-Apache HTTP.
מהדוגמאות המפורטות שהוסבר לעיל, אנו יכולים להסיק שאנו יכולים להשתמש בפקודה זו במקום ב- systemctl
פקודה לשלוט ולנטר דמונים ושירותים אחרים תחת הפצת לינוקס.
תיקון 2: בודק עבור systemd
חֲבִילָה
לפעמים זה יכול להיות המקרה שרק systemd
התקנת החבילה עשויה לפתור את הבעיה. ראשית, עליך לבדוק את מצב ההתקנה של systemd
חבילה במערכת שלך.
השתמש בפקודה הבאה כדי לבדוק את החבילה במערכת שלך.
sudo dpkg -l | grep systemd
אם ה systemd
כלי השירות כבר מותקן תקבל פלט דומה כפי שמוצג להלן.
gaurav@ubuntu:~$ sudo dpkg -l | grep systemd [sudo] סיסמה עבור gaurav: ii dbus-user-session 1.12.2-1ubuntu1.2 amd64 מערכת הודעות פשוטה בין תהליכים (systemd -- שילוב משתמש) ii libnss-systemd:amd64 237-3ubuntu10.42 מודול amd64 nss דינמי רזולוציית שם משתמש וקבוצה ii libpam-systemd:amd64 237-3ubuntu10.42 amd64 מנהל מערכת ושירות - PAM module ii libsystemd0:amd64 237-3ubuntu10.42 amd64 systemd utility library ii libsystemd0:i3386 system utility i386 23170. ii networkd-dispatcher 1.7-0ubuntu3.3 כל שירות Dispatcher עבור שינויים במצב חיבור systemd-networkd ri python3-systemd 234-1build1 amd64 Python 3 bindings for systemd ii systemd 237-3ubuntu10.42 amd64 system and service manager i2 3ubuntu10.42 amd64 מנהל מערכת ושירות - SysV קישורים gaurav@ubuntu:~$
אם אתה מקבל פלט דומה לזה, זה אומר ש systemd
מותקן במערכת שלך.
אם זה לא מותקן, אתה יכול להתקין אותו בדרך הבאה.
sudo apt-get update
sudo apt-get install systemd
אם הוא מותקן ועדיין השגיאה נמשכת, נסה להתקין אותו מחדש באמצעות הפקודה הבאה.
sudo apt-get install --reinstall systemd
זה יפתור את הבעיה שלך על ידי התקנת systemd
תוֹעֶלֶת.
סיכום
למדנו לתקן את "systemctl: הפקודה לא נמצאה" במדריך זה. אנו יכולים להסיק בבטחה ששימוש ב- שֵׁרוּת
פקודה במקום ה systemctl
זה רעיון טוב ופותר את הבעיה בצורה טובה מאוד. אנחנו יכולים להשתמש בקלות ב שֵׁרוּת
פקודה לאחר הבנת הדוגמאות הממחישות המוצגות במדריך.