Linux kullanıcıları için, özellikle Ubuntu gibi modern dağıtımlarda, en kullanışlı araçlardan biri systemctl komutu'dir. Bu komut satırı aracı, genellikle systemd ile yani sistem ve servis yöneticisiyle etkileşim kurmak için kullanılır.
Bu komut sayesinde sistem servislerini yönetebilir, durumlarını görebilir, başlatıp durdurabilir ve sistem açılışında etkinleştirip devre dışı bırakabilirsiniz. Oldukça kullanışlı, değil mi? Ancak systemctl komutu bulunamaz ya da tanınmazsa şu hatayla karşılaşırsınız: "sudo:systemctl: command not found" hata.
Şimdi "systemctl: command not found" hatasının ne anlama geldiğini, bu hatayla neden karşılaştığınızı ve nasıl çözebileceğinizi ele alalım.
systemctl: Command Not Found Hatası Ne Anlama Gelir?
Kısaca açıklamak gerekirse, "systemctl: command not found" hatası, systemctl komut satırı aracının mevcut ortamda mevcut olmadığı veya erişilemez durumda olduğu anlamına gelir. Bunun birden fazla nedeni olabilir; ancak hepsi ya ortamın systemd'siz bir ortam olmasına ya da systemd paketinin sisteme kurulu olmamasına dayanır.
Temel olarak şu ihtimaller söz konusudur: systemd paketi kurulu değildir, Linux dağıtımınız veya sürümünüz systemd kullanmıyor olabilir ve bunun yerine init.d gibi daha eski servis yönetim sistemleri kullanıyor olabilir. Bir diğer olasılık ise PATH ortam değişkeninin systemctl'nin bulunduğu dizini içermemesidir; bu durumda kabuğunuz komutu bulamaz.
Sisteminizde neyin yanlış gittiğine dair bir fikir edindikten sonra, "systemctl: command not found" hatasına yol açan sorunun tam olarak nerede olduğunu nasıl doğrulayabileceğinize ve nasıl düzeltebileceğinize bakalım.
systemctl: Command Not Found Hatasını Düzeltme
Aşağıdaki adımlarda, sisteminizde systemd'nin kurulu olup olmadığını ve systemctl'nin kullanılıp kullanılmadığını doğrulayacağız; aynı zamanda systemctl'nin yolunu kontrol edeceğiz. Sorunu tespit ettikten sonra hatayı gidermek için gerekli adımları atacağız.
1. Sisteminizin systemd Kullanıp Kullanmadığını Doğrulama
Ubuntu'de systemctl yalnızca systemd paketi kuruluysa çalışır. Bu nedenle, önce aşağıdaki komutu çalıştırarak sisteminizin systemd kullanması gerekip gerekmediğini kontrol edeceğiz:
ps -p 1 -o comm=
Ya da aşağıdaki komutla systemd sürümünü kontrol edebilirsiniz:
systemd --version
Çıktı systemd ise, systemd sizin init sisteminizdir ve Ubuntu systemctl kurulu olmalıdır. Ancak çıktı init veya başka bir süreç yöneticisiyse, sisteminiz alternatif bir başlatma sistemi kullanıyor demektir ve systemd'ye geçiş yapmadan systemctl çalışmaz.
Upstart veya SysVinit gibi eski bir başlatma sistemi görüyor ve systemctl kullanmak için systemd'ye geçmek istiyorsanız şu adımları izleyin:
1. Aşağıdaki komutu kullanarak systemd'yi kurarak systemctl'yi yükleyin:
sudo apt install systemd-sysv
2. Şu komutu çalıştırarak sisteminizi yeniden başlatın:
sudo reboot
3. Sisteminizin artık systemd kullandığını doğrulayın:
ps -p 1 -o comm=
Çıktı artık systemd olmalıdır.
2. systemd'nin Doğru Kurulduğunu Doğrulama
Normalde, systemd kurulu ve init sisteminiz olarak çalışıyorsa, systemctl komutu sorunsuz çalışır. Çalışmıyorsa, systemd paketi ya eksiktir ya da hatalı kurulmuştur.
Ubuntu'nin Docker container veya bulut örneği gibi minimal bir sürümünü kullanıyorsanız, systemd varsayılan olarak kurulmamış olabilir. systemd'yi kurarak systemctl'yi kullanılabilir hale getirmek için şu komutları çalıştırın:
sudo apt update sudo apt install systemd
Kurulum tamamlandıktan sonra systemctl komutunun kullanılabilir olup olmadığını kontrol edin.
3. systemctl'nin PATH Değişkenini Kontrol Etme
systemctl not found hatasının yaygın nedenlerinden biri, systemctl'nin kurulu olmasına rağmen sistem PATH'inize eklenmemiş olmasıdır. systemd ikili dosyalarının /bin, /usr/bin veya /usr/local/bin gibi tipik dizinlerde bulunup bulunmadığını kontrol etmek için şu komutu kullanabilirsiniz:
which systemctl
systemctl, PATH'inizde listelenen dizinlerden birinde bulunuyorsa çıktı şu şekilde görünür:
/usr/bin/systemctl
systemctl, PATH'teki dizinlerin hiçbirinde bulunmuyorsa which komutu herhangi bir çıktı vermez.
Ancak systemctl dizinlerde bulunsa bile çalışmayabilir. Bunun nedeni, systemctl'nin PATH'e dahil edilmemiş bir dizinde yer alıyor olmasıdır. Bu durumda, systemctl'nin bulunduğu dizini şu komutla doğrulamanız gerekir:
echo $PATH
Çıktı şu şekilde görünmelidir:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Şimdi yapmanız gereken tek şey, systemctl'nin bulunduğu dizinin (which komutuyla öğrendiğiniz) echo $PATH çıktısındaki dizinler arasında yer alıp almadığını kontrol etmektir.
systemctl'nin dizini echo $PATH çıktısında yer almıyorsa, bu dizini PATH değişkeninize eklemeniz gerekir. Bunun için şu komutu çalıştırın:
İçin Bash shell kullanıcıları, bir metin editöründe ~/.bashrc dosyasını açın:
nano ~/.bashrc
Dosyanın sonuna şu satırı ekleyin:
export PATH=$PATH:/usr/bin
Bu örnekte /usr/bin, systemctl'nin bulunduğu tipik bir dizindir.
Dosyayı kaydetmek ve kapatmak için CTRL + X tuşlarına basın, ardından onaylamak için Y'ye, kaydetmek için Enter'a basın.
İçin Zsh kullanıcıları, Bir metin editöründe ~/.zshrc dosyasını açın:
nano ~/.zshrc
Dosyanın sonuna şu satırı ekleyin:
export PATH=$PATH:/usr/bin
Bu örnekte /usr/bin, systemctl'nin bulunduğu tipik bir dizindir.
Dosyayı kaydetmek ve kapatmak için CTRL + X tuşlarına basın, ardından onaylamak için Y'ye, kaydetmek için Enter'a basın.
Yukarıdaki adımları tamamladıktan sonra, systemctl'nin dizininin PATH'inize eklenip eklenmediğini echo $PATH komutuyla doğrulayın. Artık "systemctl: command not found" hatasıyla karşılaşmadan systemctl'yi çalıştırabilmeniz gerekir.
4. systemd'yi Yeniden Yükleme
Önceki çözümler işe yaramadıysa ve hata devam ediyorsa, systemd'yi tamamen yeniden kurmak sorunu çözebilir. Bunun için şu komutları çalıştırın:
sudo apt purge systemd sudo apt install systemd
Ardından sisteminizi şu komutla yeniden başlatın:
sudo reboot
systemctl'nin çalışıp çalışmadığını kontrol edin.
5. systemd'nin Doğru Yapılandırıldığını Doğrulama
Bazen sorun, systemd kurulumunun hatalı yapılandırılmış olmasından kaynaklanır ve bu durum "systemctl: command not found" hatasına yol açar. Bu sorunu çözmek için tek yapmanız gereken şu komutu çalıştırmaktır:
sudo dpkg-reconfigure systemd
6. Güncel Olmayan Windows, Linux için Alt Sistemi (WSL)
Eğer Ubuntu'yi WSL (Windows Subsystem for Linux) altında kullanıyorsanız, WSL 1 gibi eski WSL sürümlerinin systemctl'yi yerel olarak desteklemediğini bilmeniz gerekir. Dolayısıyla önceki çözümlerin hangisini uygularsanız uygulayın, systemctl'yi çalıştıramazsınız.
systemctl işlevlerinden yararlanmak istiyorsanız, systemd desteği daha iyi olan WSL 2'ye yükseltme yapmanız gerekir. WSL kullanıp kullanmadığınızdan emin değilseniz, aşağıdaki komutu çalıştırarak kontrol edebilirsiniz:
uname -a
Çıktıda WSL ifadesi geçiyorsa, "systemctl: command not found" hatasının nedeni budur.
7. systemctl'ye Alternatif Olarak sudo Service Kullanımı
Sisteminiz systemd kullanmadığı için "systemctl: command not found" hatasıyla karşılaşıyorsanız, servisleri yönetmek için sudo service komutunu kullanabilirsiniz. Bu komut, SysVinit veya Upstart gibi eski init sistemleriyle çalışır. systemd yerine init betiklerine dayanan Ubuntu sistemleri için kullanışlı bir alternatiftir.
Örneğin, bir servisi başlatmak için şu komutu çalıştırırsınız:
sudo service <service_name> start
Son Düşünceler
systemd ve onun komut satırı aracı systemctl, SysVinit ve Upstart gibi eski init sistemlerinin büyük bölümünün yerini almıştır. Monolitik yapısı ve Unix felsefesine aykırı tasarımı nedeniyle systemd herkese hitap etmeyebilir; ancak genel olarak en yaygın tercih olmaya devam etmektedir. Umarız bu rehber sayesinde systemctl komutunun bulunamaması hatasını çözmüşsünüzdür. Zira systemd'nin komut satırı aracını kullanamamak, sisteminizin işlevselliğini ciddi ölçüde kısıtlar.
SSS
systemctl Nedir ve "systemctl: Command Not Found" Hatası Ne Anlama Gelir?
systemctl, Ubuntu gibi systemd çalıştıran Linux sistemlerinde servisleri yönetmek için kullanılan bir komut satırı aracıdır. "systemctl: command not found" hatası, bu araç mevcut olmadığında veya erişilemez olduğunda ortaya çıkar. Bunun başlıca nedenleri, sistemin systemd kullanmaması ya da systemd paketinin kurulu olmamasıdır.
systemctl, Ubuntu'nin tüm sürümlerinde kullanılabilir mi?
Hayır, systemctl Ubuntu'nin tüm sürümlerinde bulunmaz. systemctl, systemd init sisteminin bir parçasıdır ve bu sistem çoğu modern Ubuntu sürümünde (15.04 ve sonrasında) varsayılan olarak gelir. Eski sürümler veya bazı minimal kurulumlar, bunun yerine SysVinit ya da Upstart gibi alternatif init sistemleri kullanabilir.