RHCSA Serisi: RHEL 7'de Süreç Yönetimi: Önyükleme, Kapatma ve Aradaki Her Şey – Bölüm 5


Bu makaleye, RHEL 7 sunucunuzu açmak için Güç düğmesine bastığınız andan itibaren size oturum açma bilgileri sunulana kadar olanların genel ve kısa bir revizyonuyla başlayacağız. Komut satırı arayüzündeki ekran.

Lütfen bunu not al:

1. aynı temel ilkeler, belki küçük değişikliklerle birlikte diğer Linux dağıtımları için de geçerlidir ve
2. Aşağıdaki açıklamanın önyükleme işleminin kapsamlı bir açıklamasını sunması amaçlanmamıştır; yalnızca temelleri temsil etmektedir.

Linux Önyükleme Süreci

1. POST (Açılışta Otomatik Test) donanım kontrollerini başlatır ve gerçekleştirir.

2. POST tamamlandığında, sistem kontrolü, sabit disklerden birinin önyükleme sektöründe (daha eski olanlar için) depolanan ilk aşama önyükleme yükleyicisine aktarılır. BIOS ve MBR kullanan sistemler) veya özel bir (U)EFI bölümü.

3. İlk aşama önyükleyici daha sonra ikinci aşama önyükleyiciyi yükler; genellikle GRUB (GRand Unified Boot Loader), < içinde bulunur. Strong>/boot, bu da çekirdeği ve başlangıçtaki RAM tabanlı dosya sistemini yükler (initramfs olarak da bilinir; bu sistem, sonuçta gerekli eylemleri gerçekleştiren programları ve ikili dosyaları içerir). gerçek kök dosya sistemini bağlayın).

4. Önyüklenecek işletim sistemini ve çekirdeği seçmemize olanak tanıyan bir açılış ekranıyla karşılaşıyoruz:

5. Çekirdek, sisteme bağlı donanımı kurar ve kök dosya sistemi bağlandıktan sonra PID 1 ile süreci başlatır, bu da diğer süreçleri başlatacak ve sunacaktır. bir giriş istemiyle bize ulaşın.

Not: Bunu daha sonra yapmak istersek, dmesg komutunu kullanarak bu sürecin ayrıntılarını inceleyebilir ve kullandığımız araçları kullanarak çıktısını filtreleyebiliriz. Bu serinin önceki makalelerinde açıklamıştık.

Yukarıdaki örnekte, ana süreci (veya başka bir deyişle, onları başlatan süreç) systemdolan mevcut süreçlerin bir listesini görüntülemek için iyi bilinen ps komutunu kullandık. > (çoğu modern Linux dağıtımının geçiş yaptığı sistem ve hizmet yöneticisi) sistem başlatma sırasında:

ps -o ppid,pid,uname,comm --ppid=1

-o bayrağının (–format'ın kısaltması), aşağıdakileri kullanarak ps çıktısını ihtiyaçlarınıza uygun özelleştirilmiş bir biçimde sunmanıza olanak tanıdığını unutmayın. man ps'deki STANDART FORMAT BELİRTİCİLERİ bölümünde belirtilen anahtar kelimeler.

Varsayılanı kullanmak yerine ps çıktısını tanımlamak isteyeceğiniz başka bir durum da, önemli miktarda CPU ve/veya bellek yüküne neden olan işlemleri bulmanız ve bunları buna göre sıralamanız gerektiği zamandır:

ps aux --sort=+pcpu              # Sort by %CPU (ascending)
ps aux --sort=-pcpu              # Sort by %CPU (descending)
ps aux --sort=+pmem              # Sort by %MEM (ascending)
ps aux --sort=-pmem              # Sort by %MEM (descending)
ps aux --sort=+pcpu,-pmem        # Combine sort by %CPU (ascending) and %MEM (descending)

SystemD'ye Giriş

Linux dünyasında çok az karar, büyük Linux dağıtımlarının systemd'yi benimsemesinden daha fazla tartışmaya neden olmuştur. Systemd'in savunucuları, aşağıdaki gerçekleri ana avantajları olarak adlandırıyor:

Ayrıca Okuyun: 'init' ve 'systemd'nin Arkasındaki Hikaye

1. Systemd, sistem başlatılırken paralel olarak daha fazla işlemin yapılmasına olanak tanır (işlemleri birer birer başlattığı için her zaman daha yavaş olma eğiliminde olan eski SysVinit'in aksine) biri diğerine bağlıysa ve daha fazla hizmetin başlayabilmesi için arka plan programlarının başlatılmasını beklerse) ve

2. Çalışan bir sistemde dinamik kaynak yönetimi olarak çalışır. Böylece hizmetler, önyükleme sırasında geçerli bir neden olmadan başlatılmak yerine, ihtiyaç duyulduğunda (kullanılmıyorsa sistem kaynaklarının tüketilmesini önlemek için) başlatılır.

3. SysVinit komut dosyalarıyla geriye dönük uyumluluk.

Systemd, systemctl yardımcı programı tarafından kontrol edilir. SysVinit geçmişinden geliyorsanız muhtemelen aşağıdakilere aşina olacaksınız:

  1. eski sistemlerde SysVinit komut dosyalarını yönetmek için kullanılan hizmet aracı ve
  2. sistem hizmetleri için çalışma seviyesi bilgilerinin güncellenmesi ve sorgulanması amacına hizmet eden chkconfig yardımcı programı.
  3. Çalışan bir sistemi yeniden başlatmak veya durdurmak için birkaç kez kullanmış olmanız gereken kapatma.

Aşağıdaki tabloda bu eski araçların kullanımı ile systemctl arasındaki benzerlikler gösterilmektedir:

Legacy tool Systemctl equivalent Description
service name start systemctl start name Start name (where name is a service)
service name stop systemctl stop name Stop name
service name condrestart systemctl try-restart name Restarts name (if it’s already running)
service name restart systemctl restart name Restarts name
service name reload systemctl reload name Reloads the configuration for name
service name status systemctl status name Displays the current status of name
service –status-all systemctl Displays the status of all current services
chkconfig name on systemctl enable name Enable name to run on startup as specified in the unit file (the file to which the symlink points). The process of enabling or disabling a service to start automatically on boot consists in adding or removing symbolic links inside the /etc/systemd/system directory.
chkconfig name off systemctl disable name Disables name to run on startup as specified in the unit file (the file to which the symlink points)
chkconfig –list name systemctl is-enabled name Verify whether name (a specific service) is currently enabled
chkconfig –list systemctl –type=service Displays all services and tells whether they are enabled or disabled
shutdown -h now systemctl poweroff Power-off the machine (halt)
shutdown -r now systemctl reboot Reboot the system

Systemd ayrıca birimler (bir hizmet, bir bağlama noktası, bir cihaz veya bir ağ yuvası olabilir) ve hedefler (bu, systemd'nin aynı anda birden fazla ilgili işlemi başlatmayı nasıl başardığı) kavramlarını da tanıttı. SysVinit sistemlerdeki çalışma düzeylerinin eşdeğeri olarak kabul edilebilir - eşit olmasa da.

Özetliyor

Süreç yönetimiyle ilgili diğer görevler arasında, bunlarla sınırlı olmamak üzere, aşağıdakiler yer alır:

1. Bir süreçle ilgili sistem kaynaklarının kullanımı söz konusu olduğunda yürütme önceliğini ayarlayın:

Bu, bir veya daha fazla çalışan işlemin planlama önceliğini değiştiren renice yardımcı programı aracılığıyla gerçekleştirilir. Basit bir ifadeyle, planlama önceliği, çekirdeğin (=> 2.6 sürümlerinde mevcut) sistem kaynaklarını, atanan yürütme önceliğine (başka bir deyişle nezaket, aralığında) göre tahsis etmesine olanak tanıyan bir özelliktir. Belirli bir sürecin -20 ila 19)'u.

Renice'in temel sözdizimi aşağıdaki gibidir:

renice [-n] priority [-gpu] identifier

Yukarıdaki genel komutta, ilk bağımsız değişken kullanılacak öncelik değeridir; diğer bağımsız değişken ise işlem ID'leri (varsayılan ayardır), süreç grubu kimlikleri, kullanıcı kimlikleri veya kullanıcı adları. Normal bir kullanıcı (root hariç) sahip olduğu bir prosesin sadece zamanlama önceliğini değiştirebilir ve sadece nicelik seviyesini arttırabilir (bu da daha az sistem kaynağı kullanmak anlamına gelir).

2. Gerektiğinde bir işlemi sonlandırın (veya normal yürütülmesini kesintiye uğratın):

Daha kesin bir ifadeyle, bir süreci öldürmek, ona, kill veya pkill yoluyla yürütmesini zarif bir şekilde (SIGTERM=15) veya hemen (SIGKILL=9) bitirmesi için bir sinyal gönderme hakkı verir. komutlar.

Bu iki araç arasındaki fark, ilkinin belirli bir süreci veya süreç grubunu tamamen sonlandırmak için kullanılması, ikincisinin ise aynı şeyi ada ve diğer niteliklere dayalı olarak yapmanıza izin vermesidir.

Ayrıca pkill, pkill'in kullanılması durumunda etkilenecek PID'leri gösteren pgrep ile birlikte gelir. Örneğin çalıştırmadan önce:

pkill -u gacanepa

gacanepa'ya ait PID'lerin hangileri olduğunu bir bakışta görmek faydalı olabilir:

pgrep -l -u gacanepa

Varsayılan olarak hem kill hem de pkill, sürece SIGTERM sinyalini gönderir. Yukarıda bahsettiğimiz gibi, bu sinyal göz ardı edilebilir (işlem yürütülmesini tamamlarken veya kalıcı olarak), dolayısıyla çalışan bir işlemi geçerli bir nedenden dolayı ciddi şekilde durdurmanız gerektiğinde, SIGKILL 'i belirtmeniz gerekecektir. komut satırında sinyal:

kill -9 identifier               # Kill a process or a process group
kill -s SIGNAL identifier        # Idem
pkill -s SIGNAL identifier       # Kill a process by name or other attributes 

Çözüm

Bu makalede, bir RHEL 7 sisteminde önyükleme işleminin temellerini açıkladık ve ortak yardımcı programları kullanarak süreçleri yönetmenize yardımcı olacak mevcut araçlardan bazılarını analiz ettik. ve systemd'ye özgü komutlar.

Bu listenin bu konunun tüm önemli noktalarını kapsamadığını unutmayın; bu nedenle, aşağıdaki yorum formunu kullanarak kendi tercih ettiğiniz araçları ve komutları bu makaleye eklemekten çekinmeyin. Sorularınız ve diğer yorumlarınız da memnuniyetle karşılanacaktır.