格式:
while COMMANDS; do COMMANDS; done while CONDITION; do 循环体 done
说明:
CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为“false”终止循环,因此:CONDTION一般应该有循环控制变量;而此变量的值会在循环体不断地被修正
进入条件:CONDITION为true
退出条件:CONDITION为false
无限循环
while true; do 循环体 done
范例:
[root@rocky8 bin]# type while while is a shell keyword [root@rocky8 bin]# help while while: while COMMANDS; do COMMANDS; done Execute commands as long as a test succeeds. Expand and execute COMMANDS as long as the final command in the `while' COMMANDS has an exit status of zero. Exit Status: Returns the status of the last command executed.
范例:
[root@rocky8 bin]# help : :: : Null command. No effect; the command does nothing. Exit Status: Always succeeds. [root@rocky8 bin]# type true true is a shell builtin [root@rocky8 bin]# help true true: true Return a successful result. Exit Status: Always succeeds. #: 和 true 是一样的
范例:
[root@rocky8 ~]# vim while.sh #!/bin/bash # #********************************************************************************************** #Author: Raymond #QQ: 88563128 #Date: 2021-10-21 #FileName: while.sh #URL: raymond.blog.csdn.net #Description: The test script #Copyright (C): 2021 All rights reserved #********************************************************************************************* i=1 sum=0 while [ $i -le 100 ];do let sum+=i let i++ done echo $sum [root@rocky8 ~]# bash while.sh 5050
范例:
[root@rocky8 bin]# vim while_check_disk.sh #!/bin/bash # #********************************************************************************************** #Author: Raymond #QQ: 88563128 #Date: 2021-10-10 #FileName: while_check_disk.sh #URL: raymond.blog.csdn.net #Description: The test script #Copyright (C): 2021 All rights reserved #********************************************************************************************* WARNING=80 while :;do USE=`df|sed -rn '/^\/dev\/sd/s#.* ([0-9]+)%.*#\1#p' |sort -nr |head -1` if [ $USE -gt $WARNING ];then echo Disk will be full from `hostname -I` | mail -s "disk warning" 88563128@qq.com fi sleep 10 done [root@rocky8 bin]# bash while_check_disk.sh [root@rocky8 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 374M 0 374M 0% /dev tmpfs 392M 0 392M 0% /dev/shm tmpfs 392M 5.6M 386M 2% /run tmpfs 392M 0 392M 0% /sys/fs/cgroup /dev/sda2 100G 2.3G 98G 3% / /dev/sda3 50G 392M 50G 1% /data /dev/sda1 1014M 188M 827M 19% /boot tmpfs 79M 0 79M 0% /run/user/0 [root@rocky8 ~]# dd if=/dev/zero of=/boot/f1.img bs=1M count=800 800+0 records in 800+0 records out 838860800 bytes (839 MB, 800 MiB) copied, 1.42045 s, 591 MB/s [root@rocky8 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 374M 0 374M 0% /dev tmpfs 392M 0 392M 0% /dev/shm tmpfs 392M 5.6M 386M 2% /run tmpfs 392M 0 392M 0% /sys/fs/cgroup /dev/sda2 100G 2.3G 98G 3% / /dev/sda3 50G 392M 50G 1% /data /dev/sda1 1014M 988M 27M 98% /boot tmpfs 79M 0 79M 0% /run/user/0 #磁盘空间大于80%,邮箱会收到邮件 [root@rocky8 ~]# rm -f /boot/f1.img [root@rocky8 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 374M 0 374M 0% /dev tmpfs 392M 0 392M 0% /dev/shm tmpfs 392M 5.6M 386M 2% /run tmpfs 392M 0 392M 0% /sys/fs/cgroup /dev/sda2 100G 2.3G 98G 3% / /dev/sda3 50G 392M 50G 1% /data /dev/sda1 1014M 188M 827M 19% /boot tmpfs 79M 0 79M 0% /run/user/0
范例: 九九乘法表
[root@rocky8 ~]# vim while_99.sh #!/bin/bash # #********************************************************************************************** #Author: Raymond #QQ: 88563128 #Date: 2021-10-10 #FileName: while_99.sh #URL: raymond.blog.csdn.net #Description: The test script #Copyright (C): 2021 All rights reserved #********************************************************************************************* i=1 while [ $i -le 9 ];do j=1 while [ $j -le $i ];do echo -e "${j}x${i}=$[j*i]\t\c" let j++ done echo let i++ done [root@rocky8 ~]# bash while_99.sh 1x1=1 1x2=2 2x2=4 1x3=3 2x3=6 3x3=9 1x4=4 2x4=8 3x4=12 4x4=16 1x5=5 2x5=10 3x5=15 4x5=20 5x5=25 1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64 1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
1、编写脚本,求100以内所有正奇数之和
2、编写脚本,提示请输入网络地址,如192.168.0.0,判断输入的网段中主机在线状态,并统计在线和离线主机各多少
3、编写脚本,打印九九乘法表
4、编写脚本,利用变量RANDOM生成10个随机数字,输出这个10数字,并显示其中的最大值和最小值
5、编写脚本,实现打印国际象棋棋盘
6、后续六个字符串:efbaf275cd、4be9c40b8b、44b2395c46、f8c8873ce0、b902c16c8b、ad865d2f63是通过对随机数变量RANDOM随机执行命令: echo $RANDOM|md5sum|cut -c1-10 后的结果,请破解这些字符串对应的RANDOM值
格式:
until COMMANDS; do COMMANDS; done until CONDITION; do 循环体 done
说明:
进入条件: CONDITION 为false
退出条件: CONDITION 为true
无限循环
until false; do 循环体 Done
范例:
[root@rocky8 ~]# type until until is a shell keyword [root@rocky8 ~]# help until until: until COMMANDS; do COMMANDS; done Execute commands as long as a test does not succeed. Expand and execute COMMANDS as long as the final command in the `until' COMMANDS has an exit status which is not zero. Exit Status: Returns the status of the last command executed. [root@rocky8 ~]# type false false is a shell builtin [root@rocky8 ~]# help false false: false Return an unsuccessful result. Exit Status: Always fails.
范例:
[root@rocky8 ~]# useradd admin; echo 123456 |passwd --stdin admin Changing password for user admin. passwd: all authentication tokens updated successfully. [root@centos7 ~]# ssh admin@172.31.1.8 The authenticity of host '172.31.1.8 (172.31.1.8)' can't be established. ECDSA key fingerprint is SHA256:bSzdLQOWD7YlTznUn4y0YXH3WN9c11zb/0wqZRE/aHU. ECDSA key fingerprint is MD5:9b:4f:8b:8e:de:63:fa:7b:7c:b2:a5:f7:da:0b:ed:9f. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '172.31.1.8' (ECDSA) to the list of known hosts. admin@172.31.1.8's password: [admin@rocky8 ~]$ [root@rocky8 bin]# who |grep -q "^admin\>" [root@rocky8 bin]# echo $? 0 [admin@rocky8 ~]$ exit logout Connection to 172.31.1.8 closed. [root@centos7 ~]# [root@rocky8 bin]# who |grep -q "^admin\>" [root@rocky8 bin]# echo $? 1
范例:
[root@rocky8 bin]# vim until_hacker.sh #!/bin/bash # #********************************************************************************************** #Author: Raymond #QQ: 88563128 #Date: 2021-10-10 #FileName: until_hacker.sh #URL: raymond.blog.csdn.net #Description: The test script #Copyright (C): 2021 All rights reserved #********************************************************************************************* until who |grep -q "^admin\>" ;do sleep 10 done echo hacker login at `date +"%F %T"` |mail -s warning 88563128@qq.com [root@rocky8 bin]# bash until_hacker.sh [root@centos7 ~]# ssh admin@172.31.1.8 admin@172.31.1.8's password: Last login: Sun Oct 10 16:29:37 2021 from 172.31.0.7 [admin@rocky8 ~]$ #登录就发邮件 [root@rocky8 bin]# vim until_hacker2.sh #!/bin/bash # #********************************************************************************************** #Author: Raymond #QQ: 88563128 #Date: 2021-10-10 #FileName: until_hacker2.sh #URL: raymond.blog.csdn.net #Description: The test script #Copyright (C): 2021 All rights reserved #********************************************************************************************* until false ;do who |grep -q "^admin\>" && echo hacker login at `date +"%F %T"` |mail -s warning 88563128@qq.com sleep 10 done [root@rocky8 bin]# bash until_hacker2.sh [root@centos7 ~]# ssh admin@172.31.1.8 admin@172.31.1.8's password: Last login: Sun Oct 10 16:33:05 2021 from 172.31.0.7 [admin@rocky8 ~]$ [admin@rocky8 ~]$ exit logout Connection to 172.31.1.8 closed. #只要发现登录就一直发邮件
continue [N]:提前结束第N层的本轮循环,而直接进入下一轮判断;最内层为第1层
while CONDITION1; do CMD1 ... if CONDITION2; then continue fi CMDn ... done
范例:
[root@rocky8 ~]# vim continue_for.sh #!/bin/bash # #********************************************************************************************** #Author: Raymond #QQ: 88563128 #Date: 2021-10-20 #FileName: continue_for.sh #URL: raymond.blog.csdn.net #Description: The test script #Copyright (C): 2021 All rights reserved #********************************************************************************************* for ((i=0;i<10;i++));do [ $i -eq 5 ] && continue echo $i echo ------------------------ done [root@rocky8 ~]# bash continue_for.sh 0 ------------------------ 1 ------------------------ 2 ------------------------ 3 ------------------------ 4 ------------------------ 6 ------------------------ 7 ------------------------ 8 ------------------------ 9 ------------------------ # continue 结束本层循环 [root@rocky8 ~]# vim continue_for2.sh #!/bin/bash # #********************************************************************************************** #Author: Raymond #QQ: 88563128 #Date: 2021-10-20 #FileName: continue_for.sh #URL: raymond.blog.csdn.net #Description: The test script #Copyright (C): 2021 All rights reserved #********************************************************************************************* for ((i=0;i<10;i++));do for ((j=0;j<10;j++));do #[ $j -eq 5 ] && continue 2 echo j=$j done echo ------------------------ done [root@rocky8 ~]# bash continue_for2.sh j=0 j=1 j=2 j=3 j=4 j=5 j=6 j=7 j=8 j=9 ------------------------ j=0 j=1 j=2 j=3 j=4 j=5 j=6 j=7 j=8 j=9 ------------------------ j=0 j=1 j=2 j=3 j=4 j=5 j=6 j=7 j=8 j=9 ------------------------ j=0 j=1 j=2 j=3 j=4 j=5 j=6 j=7 j=8 j=9 ------------------------ j=0 j=1 j=2 j=3 j=4 j=5 j=6 j=7 j=8 j=9 ------------------------ j=0 j=1 j=2 j=3 j=4 j=5 j=6 j=7 j=8 j=9 ------------------------ j=0 j=1 j=2 j=3 j=4 j=5 j=6 j=7 j=8 j=9 ------------------------ j=0 j=1 j=2 j=3 j=4 j=5 j=6 j=7 j=8 j=9 ------------------------ j=0 j=1 j=2 j=3 j=4 j=5 j=6 j=7 j=8 j=9 ------------------------ j=0 j=1 j=2 j=3 j=4 j=5 j=6 j=7 j=8 j=9 ------------------------ [root@rocky8 ~]# vim continue_for2.sh #!/bin/bash # #********************************************************************************************** #Author: Raymond #QQ: 88563128 #Date: 2021-10-20 #FileName: continue_for.sh #URL: raymond.blog.csdn.net #Description: The test script #Copyright (C): 2021 All rights reserved #********************************************************************************************* for ((i=0;i<10;i++));do for ((j=0;j<10;j++));do [ $j -eq 5 ] && continue 2 echo j=$j done echo ------------------------ done [root@rocky8 ~]# bash continue_for2.sh j=0 j=1 j=2 j=3 j=4 j=0 j=1 j=2 j=3 j=4 j=0 j=1 j=2 j=3 j=4 j=0 j=1 j=2 j=3 j=4 j=0 j=1 j=2 j=3 j=4 j=0 j=1 j=2 j=3 j=4 j=0 j=1 j=2 j=3 j=4 j=0 j=1 j=2 j=3 j=4 j=0 j=1 j=2 j=3 j=4 j=0 j=1 j=2 j=3 j=4 #continue 2 结束上一层循环
break [N]:提前结束第N层整个循环,最内层为第1层
范例:
[root@rocky8 ~]# vim break_for.sh #!/bin/bash # #********************************************************************************************** #Author: Raymond #QQ: 88563128 #Date: 2021-10-20 #FileName: continue_for.sh #URL: raymond.blog.csdn.net #Description: The test script #Copyright (C): 2021 All rights reserved #********************************************************************************************* for ((i=0;i<10;i++));do for ((j=0;j<10;j++));do [ $j -eq 5 ] && break echo j=$j done echo ------------------------ done [root@rocky8 ~]# bash break_for.sh j=0 j=1 j=2 j=3 j=4 ------------------------ j=0 j=1 j=2 j=3 j=4 ------------------------ j=0 j=1 j=2 j=3 j=4 ------------------------ j=0 j=1 j=2 j=3 j=4 ------------------------ j=0 j=1 j=2 j=3 j=4 ------------------------ j=0 j=1 j=2 j=3 j=4 ------------------------ j=0 j=1 j=2 j=3 j=4 ------------------------ j=0 j=1 j=2 j=3 j=4 ------------------------ j=0 j=1 j=2 j=3 j=4 ------------------------ j=0 j=1 j=2 j=3 j=4 ------------------------ #break 退出本层循环 [root@rocky8 ~]# vim break_for.sh #!/bin/bash # #********************************************************************************************** #Author: Raymond #QQ: 88563128 #Date: 2021-10-20 #FileName: continue_for.sh #URL: raymond.blog.csdn.net #Description: The test script #Copyright (C): 2021 All rights reserved #********************************************************************************************* for ((i=0;i<10;i++));do for ((j=0;j<10;j++));do [ $j -eq 5 ] && break 2 echo j=$j done echo ------------------------ done [root@rocky8 ~]# bash break_for.sh j=0 j=1 j=2 j=3 j=4 #break 2 退出上一层循环
范例:
[root@rocky8 ~]# vim menu.sh #!/bin/bash # #********************************************************************************************** #Author: Raymond #QQ: 88563128 #Date: 2021-10-20 #FileName: menu.sh #URL: raymond.blog.csdn.net #Description: The test script #Copyright (C): 2021 All rights reserved #********************************************************************************************* sum=0 COLOR='echo -e \033[1;31m' COLOR2='echo -e \033[1;32m' END="\033[0m" while true;do echo -e "\033[33;1m\c" cat <<-EOF 1) 鲍鱼 2) 满汉全席 3) 龙虾 4) 燕窝 5) 帝王蟹 6) 退出 EOF echo -e "\033[0m" read -p "请点菜(1-6): " MENU case $MENU in 1|4) $COLOR'菜价: $10'$END let sum+=10 ;; 3|5) $COLOR'菜价: $20'$END let sum+=20 ;; 2) $COLOR'菜价: $1000'$END let sum+=1000 ;; 6) $COLOR2"你点的菜总价格是:\$$sum"$END break ;; *) echo "点错了,没有这道菜" ;; esac $COLOR2"你点的菜总价格是:\$$sum"$END done [root@rocky8 ~]# bash menu.sh 1) 鲍鱼 2) 满汉全席 3) 龙虾 4) 燕窝 5) 帝王蟹 6) 退出 请点菜(1-6): 1 菜价: $10 你点的菜总价格是:$10 1) 鲍鱼 2) 满汉全席 3) 龙虾 4) 燕窝 5) 帝王蟹 6) 退出 请点菜(1-6): 5 菜价: $20 你点的菜总价格是:$30 1) 鲍鱼 2) 满汉全席 3) 龙虾 4) 燕窝 5) 帝王蟹 6) 退出 请点菜(1-6): 6 你点的菜总价格是:$30
范例:
[root@rocky8 ~]# vim guess.sh #!/bin/bash # #********************************************************************************************** #Author: Raymond #QQ: 88563128 #Date: 2021-10-20 #FileName: guess.sh #URL: raymond.blog.csdn.net #Description: The test script #Copyright (C): 2021 All rights reserved #********************************************************************************************* NUM=$[RANDOM%10] while read -p "输入 0-9 之间的数字: " INPUT ;do if [ $INPUT -eq $NUM ];then echo "恭喜你猜对了!" break elif [ $INPUT -gt $NUM ];then echo "数字太大了,重新猜!" else echo "数字太小了,重新猜!" fi done [root@rocky8 ~]# bash guess.sh 输入 0-9 之间的数字: 8 数字太大了,重新猜! 输入 0-9 之间的数字: 7 数字太大了,重新猜! 输入 0-9 之间的数字: 5 恭喜你猜对了!
shift [n] 用于将参量列表 list 左移指定次数,缺省为左移一次。
参量列表 list 一旦被移动,最左端的那个参数就从列表中删除。while 循环遍历位置参量列表时,常用到 shift
范例:
[root@rocky8 ~]# vim createuser.sh #!/bin/bash # #********************************************************************************************** #Author: Raymond #QQ: 88563128 #Date: 2021-10-20 #FileName: createuser.sh #URL: raymond.blog.csdn.net #Description: The test script #Copyright (C): 2021 All rights reserved #********************************************************************************************* while true;do [ -z "$1" ] && break useradd $1 && echo $1 is created shift done [root@rocky8 ~]# bash createuser.sh a b c d e f a is created b is created c is created d is created e is created f is created [root@rocky8 ~]# vim for_createuser.sh #!/bin/bash # #********************************************************************************************** #Author: Raymond #QQ: 88563128 #Date: 2021-10-20 #FileName: for_createuser.sh #URL: raymond.blog.csdn.net #Description: The test script #Copyright (C): 2021 All rights reserved #********************************************************************************************* for i in $*;do useradd $i && echo $i is created done [root@rocky8 ~]# bash for_createuser.sh user{1..5} user1 is created user2 is created user3 is created user4 is created user5 is created [root@rocky8 ~]# vim createuser2.sh [root@rocky8 ~]# cat createuser2.sh #!/bin/bash # #********************************************************************************************** #Author: Raymond #QQ: 88563128 #Date: 2021-10-20 #FileName: createuser2.sh #URL: raymond.blog.csdn.net #Description: The test script #Copyright (C): 2021 All rights reserved #********************************************************************************************* while [ $1 ];do useradd $1 && echo $1 is created shift done [root@rocky8 ~]# bash createuser2.sh user{6..10} user6 is created user7 is created user8 is created user9 is created user10 is created [root@rocky8 ~]# vim createuser3.sh #!/bin/bash # #********************************************************************************************** #Author: Raymond #QQ: 88563128 #Date: 2021-10-20 #FileName: createuser3.sh #URL: raymond.blog.csdn.net #Description: The test script #Copyright (C): 2021 All rights reserved #********************************************************************************************* if [ $# -eq 0 ];then echo "Usage: `basename $0` user1 user2 ..." exit fi while [ "$1" ];do if id $1 &> /dev/null;then echo $1 is exist else useradd $1 echo "$1 is created" fi shift done echo "All user is created" [root@rocky8 ~]# bash createuser3.sh Usage: createuser3.sh user1 user2 ... [root@rocky8 ~]# bash createuser3.sh tom jack bob user{1..5} tom is created jack is created bob is created user1 is exist user2 is exist user3 is exist user4 is exist user5 is exist All user is created
1、每隔3秒钟到系统上获取已经登录的用户的信息;如果发现用户hacker登录,则将登录时间和主机记录于日志/var/log/login.log中,并退出脚本
2、随机生成10以内的数字,实现猜字游戏,提示比较大或小,相等则退出
3、用文件名做为参数,统计所有参数文件的总行数
4、用二个以上的数字为参数,显示其中的最大值和最小值
while 循环的特殊用法,遍历文件或文本的每一行
格式:
while read line; do 循环体 done < /PATH/FROM/SOMEFILE
说明:依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将行赋值给变量line
范例:
[root@rocky8 ~]# read a 1 [root@rocky8 ~]# echo $a 1 [root@rocky8 ~]# while read name;do echo $name done zhang zhang wang wang li li ^C [root@rocky8 ~]# while read name age ;do echo name=$name;echo age=$age ; done zhang 18 name=zhang age=18 wang 20 name=wang age=20 ^C [root@rocky8 ~]# echo raymond | read X ; echo $X [root@rocky8 ~]# echo raymond | while read X ; do echo $X;done raymond [root@rocky8 ~]# echo raymond | { read X ; echo $X; } raymond [root@rocky8 ~]# echo raymond | ( read X ; echo $X ) raymond [root@rocky8 ~]# echo zhang wang li | ( read X Y Z; echo $X $Y $Z ) zhang wang li [root@rocky8 ~]# echo zhang wang li | while read X Y Z; do echo $X $Y $Z;done zhang wang li [root@rocky8 ~]# vim user.txt zhang 123456 wang 555555 li 666666 [root@rocky8 ~]# while read name password ; do useradd $name && echo $name is created; echo $password| passwd --stdin $name &> /dev/null;done < user.txt zhang is created wang is created li is created
范例:
[root@rocky8 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 382688 0 382688 0% /dev tmpfs 400580 0 400580 0% /dev/shm tmpfs 400580 5688 394892 2% /run tmpfs 400580 0 400580 0% /sys/fs/cgroup /dev/sda2 104806400 2287884 102518516 3% / /dev/sda3 52403200 1446976 50956224 3% /data /dev/sda1 1038336 191796 846540 19% /boot tmpfs 80116 0 80116 0% /run/user/0 [root@rocky8 ~]# df|sed -rn '/^\/dev\/sd/s#^([^ ]+).* ([0-9]+)%.*#\1 \2#p' /dev/sda2 3 /dev/sda3 3 /dev/sda1 19 [root@rocky8 ~]# vim disk_check.sh #!/bin/bash # #********************************************************************************************** #Author: Raymond #QQ: 88563128 #Date: 2021-10-20 #FileName: disk_check.sh #URL: raymond.blog.csdn.net #Description: The test script #Copyright (C): 2021 All rights reserved #********************************************************************************************* WARNING=80 df|sed -rn '/^\/dev\/sd/s#^([^ ]+).* ([0-9]+)%.*#\1 \2#p' |while read part use ;do [ $use -ge $WARNING ] && echo "$part will be full,use:$use" |mail -s "disk warning" 88563128@qq.com done [root@rocky8 ~]# cp /dev/zero /boot/f1.img cp: error writing '/boot/f1.img': No space left on device [root@rocky8 ~]# bash disk_check.sh
范例:
[root@rocky8 ~]# vim while_read_check_ddos.sh #!/bin/bash # #********************************************************************************************** #Author: Raymond #QQ: 88563128 #Date: 2021-10-20 #FileName: while_read_check_ddos.sh #URL: raymond.blog.csdn.net #Description: The test script #Copyright (C): 2021 All rights reserved #********************************************************************************************* lastb | sed -rn '/ssh:/s@.* ([0-9.]{1,3}{3}[0-9]{1,3}) .*@\1@p'|sort |uniq -c |while read count ip ;do if [ $count -gt 3 ];then iptables -A INPUT -s $ip -j REJECT fi done
范例:查看/sbin/nologin的shell类型的用户名和UID
[root@rocky8 ~]# vim while_read_passwd.sh #!/bin/bash # #********************************************************************************************** #Author: Raymond #QQ: 88563128 #Date: 2021-10-20 #FileName: while_read_passwd.sh #URL: raymond.blog.csdn.net #Description: The test script #Copyright (C): 2021 All rights reserved #********************************************************************************************* while read line ;do if [[ "$line" =~ /sbin/nologin$ ]] ;then echo $line | cut -d: -f1,3 fi done < /etc/passwd [root@rocky8 ~]# bash while_read_passwd.sh bin:1 daemon:2 adm:3 lp:4 mail:8 operator:11 games:12 ftp:14 nobody:65534 dbus:81 systemd-coredump:999 systemd-resolve:193 tss:59 polkitd:998 unbound:997 sssd:996 sshd:74