כיצד לתקן את השגיאה "פקודה Systemctl לא נמצאה" בלינוקס

תיקון מהיר לפתרון הבעיה עם הפקודה 'systemctl' והצגה של כמה חלופות יעילות לה

systemctl בהיותך כלי עזר חשוב במערכת האקולוגית של לינוקס, נפוץ מאוד שאתה עלול להיתקל בשגיאת "systemctl: הפקודה לא נמצאה" כאשר אתה מנסה להפעיל את systemctl פקודה. זה אולי לא המקרה עבור כל ההפצות של לינוקס, אבל אתה כנראה יכול להיתקל בשגיאה זו כאשר אתה משתמש בגרסה ישנה יותר של הפצת לינוקס שאינה תומכת ב- systemctl פקודה.

הבעיה שעלתה לך היא בעיה נפוצה מאוד וניתן לתקן אותה בקלות. אז אל תדאג כלל ופשוט תעבור על המדריך המלא כדי למצוא פתרון מהיר וקל.

תחילה ננסה להבין את הבעיה ולאחר מכן לתקן אותה.

תובנות לגבי systemctl ו systemd

מכיוון שהשגיאה היא בהתייחסות ל systemctl פקודה, זה יהיה טוב לדעת את היסודות של פקודה זו כדי להבין טוב יותר את התיקון לשגיאה זו.

systemctl הוא כלי שורת פקודה שמציעה לינוקס, המשמש לניטור ושליטה על כלי שורת פקודה אחר בשם 'systemd'. הוא גם בודק ושולט במנהל המערכת יחד עם 'systemd' שירות.

תחביר כללי:

systemctl [אופציה] [שם]

systemd הוא חבילה של דמונים, ספריות וכלי עזר השולטים בתוכניות הפועלות כאשר המערכת שלך מאתחלת. systemd מצליח גם ליזום עבודה חשובה כמו פתיחת יומן של פעילות מערכת.

כלי זה מתפקד ככלי הניהול המרכזי עבור רוב אם לא כל מערכות ההפעלה המבוססות על לינוקס.

סיבת השורש של השגיאה

הסיבה הסבירה ביותר לשגיאה זו עשויה להיות שאתה משתמש בגרסה ישנה יותר של הפצת לינוקס. רבות מהגרסאות הישנות משתמשות ב- SysV init במקום ה systemd תוֹעֶלֶת.

systemd כלי השירות נעדר בגרסאות לינוקס הקודמות מכיוון שהוא תוספת עדכנית לסל כלי השירות שסופק על ידי לינוקס. systemctl תואם לתפקוד ולניטור עם systemd כלי השירות ולא יצליח לעבוד עם התצורות הקודמות כמו SysVinit אוֹ מתחיל.

אם אתה לא משתמש 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 זה רעיון טוב ופותר את הבעיה בצורה טובה מאוד. אנחנו יכולים להשתמש בקלות ב שֵׁרוּת פקודה לאחר הבנת הדוגמאות הממחישות המוצגות במדריך.