Controlling services and daemons

Daemonlar backgroundda gözləmədə olan və ya runningdə olan müxtəlif taskları icra edən prosesslərdir.Adətən daemonlar boot time da başlayır və os söndürülənə və ya əllə dayandırılana qədər icra olur.
Daemonlar bağlantıları dinləmək üçün socketlərdən istifadə edir.

Red Hat Enterprise Linux yeni versiyalarında artıq
service SERVİS_ADİ status deyil
systemctl status SERVİS_ADİ ilə əvəzlənib

Servis vəziyyətləri (Service states)

[root@localhost sysconfig]# systemctl status httpd
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: active (running) since cüm 2015-10-16 11:25:05 AZST; 3 days ago
Process: 30021 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
Process: 19722 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
Main PID: 30061 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─19742 /usr/sbin/httpd -DFOREGROUND
├─19743 /usr/sbin/httpd -DFOREGROUND
├─19744 /usr/sbin/httpd -DFOREGROUND
├─19745 /usr/sbin/httpd -DFOREGROUND
├─19746 /usr/sbin/httpd -DFOREGROUND
└─30061 /usr/sbin/httpd -DFOREGROUND

Okt 16 11:25:04 localhost.localdomain systemd[1]: Starting The Apache HTTP Se...
Okt 16 11:25:04 localhost.localdomain httpd[30061]: AH00558: httpd: Could not...
Okt 16 11:25:05 localhost.localdomain systemd[1]: Started The Apache HTTP Ser...
Okt 18 03:13:01 localhost.localdomain systemd[1]: Reloading The Apache HTTP S...
Okt 18 03:13:02 localhost.localdomain httpd[19722]: AH00558: httpd: Could not...
Okt 18 03:13:02 localhost.localdomain systemd[1]: Reloaded The Apache HTTP Se...
Hint: Some lines were ellipsized, use -l to show in full.

Listing unit files with systemctl

Unit haqqında ətraflı baxmaq üçün
systemctl status httpd.service -l

[root@localhost sysconfig]# systemctl status httpd.service -l
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: inactive (dead) since ber 2015-10-19 11:47:33 AZST; 36min ago
Process: 8103 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
Process: 19722 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
Process: 30061 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=0/SUCCESS)
Main PID: 30061 (code=exited, status=0/SUCCESS)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"

Okt 16 11:25:04 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Okt 16 11:25:04 localhost.localdomain httpd[30061]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Okt 16 11:25:05 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
Okt 18 03:13:01 localhost.localdomain systemd[1]: Reloading The Apache HTTP Server.
Okt 18 03:13:02 localhost.localdomain httpd[19722]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Okt 18 03:13:02 localhost.localdomain systemd[1]: Reloaded The Apache HTTP Server.
Okt 19 11:47:32 localhost.localdomain systemd[1]: Stopping The Apache HTTP Server...
Okt 19 11:47:33 localhost.localdomain systemd[1]: Stopped The Apache HTTP Server.

Servisin aktivliyini yoxlamaq üçün

[root@localhost sysconfig]# systemctl is-active httpd
inactive

Servisin boot time da başladılıb başladılmadığına baxmaq üçün

[root@localhost sysconfig]# systemctl is-enabled httpd
enabled

Aktiv servislər üçün

[root@localhost sysconfig]# systemctl list-units --type=service

Deaktiv servisler də –all option ilə əlavə edilir

[root@localhost sysconfig]# systemctl list-units --type=service --all

Fail olmuş servisler üçün

[root@localhost sysconfig]# systemctl --failed --type=service
UNIT LOAD ACTIVE SUB DESCRIPTION
kdump.service loaded failed failed Crash recovery kernel arming
rngd.service loaded failed failed Hardware RNG Entropy Gatherer Daemon
vboxadd-service.service loaded failed failed LSB: VirtualBox Additions service
vboxadd.service loaded failed failed LSB: VirtualBox Linux Additions kernel modules

LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.

4 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

Masking Services 
[root@localhost sysconfig]# systemctl mask httpd
ln -s '/dev/null' '/etc/systemd/system/httpd.service'

Disable olunmuş servis boot time da başlaya bilmir amma manual üsulla başlaya bilər
amma servis mask olunduqda heç bir halda başlaya bilmir

[root@localhost sysconfig]# systemctl unmask httpd
rm '/etc/systemd/system/httpd.service'

Hər hansı servisi deamon kimi boot time -da başlatmaq üçün

[root@localhost sysconfig]# systemctl enable httpd

Disable etmək üçün

[root@localhost sysconfig]# systemctl disable httpd

rm '/etc/systemd/system/multi-user.target.wants/httpd.service'
Advertisements

Linux Killing processes

Creating-Monitoring-and-Killing-Processes-in-Linux
Linuxda running prosesslərə baxmaq üçün

ps -aux istifadə edirik

[root@localhost Desktop] ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 141528 4508 ? Ss Okt15 0:04 /usr/lib/system
root 2 0.0 0.0 0 0 ? S Okt15 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Okt15 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< Okt15 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S Okt15 0:01 [kworker/u2:0]
root 7 0.0 0.0 0 0 ? S Okt15 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S Okt15 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S Okt15 0:00 [rcuob/0]
root 10 0.0 0.0 0 0 ? S Okt15 0:14 [rcu_sched]
root 11 0.0 0.0 0 0 ? R Okt15 0:34 [rcuos/0]
root 12 0.0 0.0 0 0 ? S Okt15 0:01 [watchdog/0]
root 13 0.0 0.0 0 0 ? S< Okt15 0:00 [khelper]
root 14 0.0 0.0 0 0 ? S Okt15 0:00 [kdevtmpfs]
root 15 0.0 0.0 0 0 ? S< Okt15 0:00 [netns]

və yaxud terminala top və ya təkmilləşdirilmiş htop yazıb baxmaq olar

[root@localhost Desktop] yum install htop
Loaded plugins: fastestmirror, langpacks
base | 3.6 kB 00:00 
epel/x86_64/metalink | 5.3 kB 00:00 
epel | 4.3 kB 00:00 
extras | 3.4 kB 00:00 
mysql-connectors-community | 2.5 kB 00:00 
mysql-tools-community | 2.5 kB 00:00 
mysql56-community | 2.5 kB 00:00 
updates | 3.4 kB 00:00 
(1/3): epel/x86_64/group_gz | 169 kB 00:03 
(2/3): epel/x86_64/updateinfo | 369 kB 00:03 
(3/3): epel/x86_64/primary_db | 3.6 MB 00:22 
Determining fastest mirrors
* base: mirror.bakinter.net
* epel: epel.mirror.srv.co.ge
* extras: mirror.bakinter.net
* updates: mirror.bakinter.net
Resolving Dependencies
--> Running transaction check
---> Package htop.x86_64 0:1.0.3-3.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
htop x86_64 1.0.3-3.el7 epel 87 k

Transaction Summary
================================================================================
Install 1 Package

Total download size: 87 k
Installed size: 181 k
Is this ok [y/d/N]: y
Downloading packages:
htop-1.0.3-3.el7.x86_64.rpm | 87 kB 00:03 
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : htop-1.0.3-3.el7.x86_64 1/1 
Verifying : htop-1.0.3-3.el7.x86_64 1/1 

Installed:
htop.x86_64 0:1.0.3-3.el7 

Complete!

[root@localhost Desktop] htop

Tasks: 157 total,   2 running, 153 sleeping,   2 stopped,   0 zombie
%Cpu(s):  0,7 us,  0,4 sy,  0,0 ni, 98,6 id,  0,2 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem :  1017480 total,    63332 free,   744844 used,   209304 buff/cache
KiB Swap:  2097148 total,  1897280 free,   199868 used.   112512 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND      
 1788 root      20   0  130020   1748   1232 R  5,9  0,2   0:00.01 top          
    1 root      21   1  141528   2932    856 S  0,0  0,3   0:04.09 systemd      
    2 root      20   0       0      0      0 S  0,0  0,0   0:00.03 kthreadd     
    3 root      20   0       0      0      0 S  0,0  0,0   0:00.85 ksoftirqd/0  
    5 root       0 -20       0      0      0 S  0,0  0,0   0:00.00 kworker/0:0H 
    6 root      20   0       0      0      0 S  0,0  0,0   0:01.11 kworker/u2:0 
    7 root      rt   0       0      0      0 S  0,0  0,0   0:00.00 migration/0  
    8 root      20   0       0      0      0 S  0,0  0,0   0:00.00 rcu_bh       
    9 root      20   0       0      0      0 S  0,0  0,0   0:00.00 rcuob/0      
   10 root      20   0       0      0      0 S  0,0  0,0   0:14.20 rcu_sched    
   11 root      20   0       0      0      0 R  0,0  0,0   0:34.69 rcuos/0      
   12 root      rt   0       0      0      0 S  0,0  0,0   0:01.14 watchdog/0   
   13 root       0 -20       0      0      0 S  0,0  0,0   0:00.00 khelper      
   14 root      20   0       0      0      0 S  0,0  0,0   0:00.00 kdevtmpfs    
   15 root       0 -20       0      0      0 S  0,0  0,0   0:00.00 netns        
   16 root       0 -20       0      0      0 S  0,0  0,0   0:00.00 writeback    
   17 root       0 -20       0      0      0 S  0,0  0,0   0:00.00 kintegrityd

bütün siqnallara baxmaq üçün
kill -l istifadə edirik

[root@localhost Desktop] kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX

kill -15 prosess ID = kill -SIGTERM prosess ID (SIGTERM)
kill -9 prosess ID = kill -SIGKILL prosess ID (SIGKILL)

Bir dəfəyə çoxlu prosessi sonlandıra bilərik

kill PİD1,PİD2,PİD3

pidof əmri ilə prosess PID -ə baxırıq

[root@localhost Desktop] pidof httpd
29737 29736 29735 29734 29733 29731

pgrep əmri ilə prosessin adına görə PID -ə baxırıq

[root@localhost Desktop] pgrep httpd
29731
29733
29734
29735
29736
29737

kill əmrindən fərqli olaraq pkill prosessi adına görə sonlandırır

[root@localhost Desktop] pkill -9 httpd # httpd servisi sonlandırırıq
[root@localhost Desktop] pidof httpd # prosess id -sinə baxırıq
[root@localhost Desktop] service httpd start # servisi yenidən başladırıq
Redirecting to /bin/systemctl start httpd.service
[root@localhost Desktop] pidof httpd #prosess id-sinə baxırıq
29737 29736 29735 29734 29733 29731

Managing local linux users and groups

id – command
id username – user adı və onun qrupunu göstərir.
[root@localhost etc]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

UID – is user id
GID – is user’s primary group id
GECOS – arbitrary text field,which usually includes user’s real name

————————————————————————————–

cat /etc/passwd

camoufl4g3:x:1000:1000:camoufl4g3:/home/camoufl4g3:/bin/bash
1(user) :x(password) 1000(primary group id)
Yeni bir user yaradılanda onun primary qrupu öz adı ilə eyni olur və bu UPG adlanır (User Private Group)
Bir userin supplementary(əlavə) qrupları da ola bilər

Qruplar /etc/group direktoriyasında olur

su – əmri bir userdən digər user -in hesabına keçmək üçün istifadə olunur
sudo – əmri commandları root kimi execute etməyə imkan verir. /etc/sudoers
bu command vasitəsi ilə execute edilən hər şey /var/log/secure faylında loglanır
—————————————————————————————————-
Red Hat 7 də wheel qrupu sudo əmrindən root permissionlar üçün istifadə edə bilərlər

useradd username execute etdikdə əgər heç bir option da istifadə edilməyibsə default olaraq user üçün password set edilmir.

userdel username – useri /etc/passwd faylından silir amma home dir də (intact – bütov) qalır.
userdel -r username – recursive olaraq həm useri həmdə home dir i silir.

userdel əmrini -n optionu ilə sildikdə ehtiyatlı olmaq lazımdır.Çünki user silindikdə onun home dir i qalır və yeni bir user yaradılanda silinmiş userin id -si yeni user-ə reassign edilir.Bunun qarşısını almaq üçün “unowned” faylları root vasitəsi ilə tapıb həll etmək olar

find / -nouser -o -nogroup 2> /dev/null

———————————————————————————————————————————————-
groupadd -g burada verilən gid -ə görə qrupun id-si yaradılır.
groupadd -r valid system gid lərinə görə avtomatik qrupa gid verilir.

Qrupun adını dəyişmək istədikdə
groupmod -n yeni və əvvəlki adlarını yazırıq

groupdel qrupu silmək üçün istifadə olunur

Əgər qrup hər hansısa mövcud user in primary qrupudursa onu silmək olmur.

usermod -g
userin qrupunu dəyişirik

[root@localhost etc]# id camoufl4g3
uid=1000(camoufl4g3) gid=1000(camoufl4g3) groups=1000(camoufl4g3),10(wheel)
[root@localhost etc]# useradd camcam
[root@localhost etc]# id camcam
uid=1001(camcam) gid=1001(camcam) groups=1001(camcam)
[root@localhost etc]# usermod -g qumarxana camcam
[root@localhost etc]# id camcam
uid=1001(camcam) gid=988(qumarxana) groups=988(qumarxana)

Userə supplementary (əlavə) qrup verməy istəyiriksə -aG optionundan istifadə edirik

[root@localhost etc]# usermod -aG wheel camcam
[root@localhost etc]# id camcam
uid=1001(camcam) gid=988(qumarxana) groups=988(qumarxana),10(wheel)

——————————————————————————————————-
chage əmri ilə user – ə bəzi restrictionlar vermək mümkündür.

[root@localhost camcam]# usermod -L camcam
[root@localhost camcam]# su - camcam

Last login: Fri Aug 28 12:05:11 AZST 2015 on pts/0
[camcam@localhost ~]$ su - camcam
Password: 
su: Authentication failure

usermod -L optionu ilə useri Lock edirik.
su – username ilə login olmaq istədikdə user lock olduğu üçün daxil ola bilmir.

usermod -U optionu ilə useri Unlock edirik.

Bəzən elə ola bilər ki,user-ə sadəcə interactive shell dən girişi qadağan etmək lazım gəlir,bu halda

usermod -s /sbin/nologin istifadə edirik və userimiz terminaldan artıq sisteme qoşula bilmir.

usermod -s /bin/bash ilə isə nologin restrictionumuzu aradan qaldırırıq

Controlling Access to Files with Linux File Sytem Permissions

rwx
r – read
w – write
x – execute
r = 4
w = 2
e = 1

Userlərin normalda read – only directory də read və exec permissionları olur.
ls -l command ilə directory də file və ownership i görmək olur
ls -ld ilə directory permissionlara baxmaq olar
————————————————————————————————

chmod + WhoWhatWhich file|directory

Who – ya aiddir
1) u – user
2) g – group
3) o – other
4) a – all

What
1) + add
2) – remove
3) = set exactly

numune ucun hesablama qaydasi

– rwx r – x – – –
rwx = 4+2+1 = 7
r – x = 4 + 0 + 1 = 5
perm is 750

sade formada hesablamaq ucun
stat -c ‘%A %a %n’ file | directory

[root@localhost camoufl4g3]# stat -c ‘%A %a %n’ index.php
-rw-r–r– 644 index.php

-rw-r–r–. 1 root root 5 Avq 28 14:59 index.php
rw = 4+2
r = 4
r = 4

—————————————————————————————————————————————

read ve write permissionlarini almaq ucun

[root@localhost test]# chmod u-rw index.php
[root@localhost test]# ls -l
total 4
—xrwxrwx. 1 root root 5 Avq 28 15:13 index.php

execute permission vermek ucun
chmod u+x file

Butun foldere de chmod vermek ucun -R optionundan istifade edirik
dir icindeki regular fayllara exec vermey ucun ise X den istifade edirik (kicik x yox boyuk X olmalidir)

Faylin ve ya dir in ownershipin deyismek ucun
chown command dan istifade edilir
chown -R ile resursive butun dir deyisilir
bir nece formada chown ile ownership deyisilmeye baxaq

chown
chown -R
chown :
chown :

—————————————————————————————————————————————

Set special permission

u + s (setuid) = 4 // Fayl owner terefinden run olunur
g + s (setgid) = 2 // File group owner terefinden execute olunur
o + t (sticky) = 1 // ancaq ozu yaratdigi fayli sile ve yaza biler diger userlerin faylini sile bilmez

————————————————————————————————————————————–
umask

[root@localhost Desktop]# umask -S
u=rwx,g=rx,o=rx


Her processin systemde oz umask - i olur,hansi ki her hansi octal bitmask process terefinden yaradilan  yeni fayl ve ya dir ler uzerinde permissionlari silmek ucun istifade olunur 
umask 077 yeni yaradilan fayl group ve other permissionlarini silir.


[root@localhost umasktest]# touch newfile1
[root@localhost umasktest]# ls -l

total 0
-rw-r–r–. 1 root root 0 Aug 31 10:38 newfile1

[root@localhost umasktest]# mkdirnewdir1
bash: mkdirnewdir1: command not found...
[root@localhost umasktest]# mkdir newdir1
[root@localhost umasktest]# ls -ld newdir1

drwxr-xr-x. 2 root root 6 Aug 31 10:38 newdir1

[root@localhost umasktest]# umask 0
[root@localhost umasktest]# touch newfile2
[root@localhost umasktest]# ls -l newfile2

-rw-rw-rw-. 1 root root 0 Aug 31 10:39 newfile2

[root@localhost umasktest]# mkdir newdir2
[root@localhost umasktest]# ls -ld newdir2

drwxrwxrwx. 2 root root 6 Aug 31 10:39 newdir2

[root@localhost umasktest]# umask 007
[root@localhost umasktest]# touch newfile3
[root@localhost umasktest]# ls -l newfile3

-rw-rw—-. 1 root root 0 Aug 31 10:39 newfile3

[root@localhost umasktest]# mkdir newdir3
[root@localhost umasktest]# ls -ld newdir3

drwxrwx—. 2 root root 6 Aug 31 10:40 newdir3

027 umask qrup uzvlerine write access verir ve butun ‘other ‘ permissionlarini yeni fayllara verir

[root@localhost umasktest]# umask 027
[root@localhost umasktest]# touch newfile4
[root@localhost umasktest]# ls -l newfile4

-rw-r—–. 1 root root 0 Aug 31 10:40 newfile4

[root@localhost umasktest]# mkdir newdir4
[root@localhost umasktest]# ls -ld newdir4

drwxr-x—. 2 root root 6 Aug 31 10:40 newdir4

Existing lock /var/run/yum.pid: another copy is running as pid xxxx.

Centos üzərində yum(Yellowdog Updater Modified) istifadəsi zaman yaranan /var/run/yum.pid faylında artıq başladılmış və lock olmuş prossesi sonlandırmaq üçün yum-un hansı prosses id de işlədiyinə baxmaq lazımdır

ps -aux | grep -i yum

[root@localhost ~]# ps -aux | grep -i yum
root      <strong>4015</strong>  0.0  0.1 112640  1028 pts/1    S+   14:27   0:00 grep --color=auto -i yum
 

proses id sinə buradan baxırıq 4015

və kill -9 ilə sonlandırırq

kill -9 4015

#fix