学习笔记
HCIA初级部分
1、vm中openeuler容易上不了网使用以下方法nmcli dev con ens33nmcli con up ens33systemctl restart NetworkManager
2、图形界面相关配置安装ukui桌面系统(系统ISO没有带,必须通过openEuler的yum源安装)yum install ukui -y
装完后下次启动用图形启动systemctl set-default graphical.target
Elure只支持三个图形界面统信的dde,只要安装了dde默认就安装gnome桌面、麒麟ukui
安装ukui后,切换图形登陆,只有普通账号,没有root账号的解决方法:vim /etc/lightdm/lightdm.conf打开注释greeter-show-manual-login=trueallow-user-switching=trueallow-guest=true
systemctl restart lightdm重启服务后登陆选择login图标登陆输入root和密码就行了
3、首次重要包安装装自动补全软件包yum install bash-completion
查一个命令来自哪个包yum provides date
yum install ntfs-3g装完后就能识别到U盘了
/etc/default/grub改启动菜单grub2-mkconfig -o /boot/grub2/brub.cfg改完让其生效
虚拟机和真机互传文件dnf install lrzszrz就会弹出真机目录
4、解锁root(安装时禁用了root用户)sudo passwd root 设备密码就可以解锁了
openEuler只有管理员组的普通用户才能用su切到root用户,其它普通用户不能切root,只能用ssh以root用户连接过去,在一个就是sudo方法
5、语言设置设备临时语言为中文,退出当前shell失效echo $LANGLANG=zh_CN.UTF-8帮助也可以看中文的了
语言永久中文生效vi /etc/locale.confLANG=”zh_CN.UTF-8″
6、改时间和格式化输出date -s “2024-10-10 10:10:10″date “+%Y-%m-%d %H:%M:%S”
7、6个终端控制台f1-f6,f1是登陆界面,f2是图形化界面,f3-f6是文本界面控制台切换ctrl+alt+F1-F6
8、windows10 远程登陆服务器C:UsersAdministrator>ssh admin@192.168.168.130
9、用户及相当权限配置用户信息都保存在/etc/passwd文件用户密码都保存在/etc/shadow文件用户组都保存在/etc/group文件把/etc/passwd中的第二位密码位删除就能免密登陆root修改密码不受密码复杂度影响,可以设的非常简单,而普通用户会受复杂度限制/etc/shadow中把密码那行内容删除掉,就会锁定该用户啦
用户管理(根据uid确认用户身份)超级管理员root,uid永远为0系统用户(为系统服务应用,加入了管理员组),uid 为1-999普通用户(为业务创建的),uid为1000-60000
root用户临时指定passwd文件中不具有登陆权限的用户/sbin/nologinsu -s /bin/bash 临时指定该用户登陆
useradd使用-g 私有组-G 附加组-d 家目录-s 指定用户登陆shell程序能否登陆
userdel -r 删除用户相关文件-f 强制删除正在登陆使用的用户
chage root查看root用户创建时间
gpasswd -A设备管理员组-d删除组用户-a添加单个用户到组-M批量添加多个用户到组-l查看组用户
如果用户删除了,对应文件的用户所有者或所属组会变成该删除用户的UID
改文件或文件夹权限尽量用chmod +rwx因为这个不会覆盖旧权限
chown仅root用户可以执行
删除文件看该文件所在的文件夹的权限,但修改要看该文件的本身权限
openEuler中的普通用户和root用户创建的umask都是022,和红帽不一样所以创建的文件和文件夹是用最大权限减去umask的值就是新建立的权限文件最大是权限是666,目录最大是777,所以减去umask得文件是644,文件夹是755如果改的umask值被最大权限666减完有x权限,就会自动加1,因为不能让创建的文件有执行权限
suid针对文件,如果有一个文件有suid权限,则执行时按文件所有者权限执行,仅对二进制程序有效,shell脚本不生效,设置方法是chmod u+s 或者chmod 4777,如果再chmod u-s权限就会变成rwS,大写s不能执行,小写s才有权限
sgid针对目录,所属组加s,对组权限有效,一样大写S无权限,小s才有,chmod g+s或chmod 2777,在该目录下创建的文件,自动属于该组
sbit针对目录,通常用来做临时目录,如果一个目录有sbit,那么该目录下的只有文件创建所有者才可以自己的文件,其它用户不能改其它用户的文件,如果是小写t有权限,大写T无sbit权限,chmod o+t或chmod 1777
重置密码root启动菜单按e键—linux开头行最尾一直往前删除到ro—ro空格加参数rd.break—ctrl+x启动—不用输密码进入系统—mount -o remount,rw /sysroot(以能写的方式挂载真根)—chroot /sysroot(为了用passwd密码换成真根)—-passwd改密码—touch /.autorelabel(解决selinux允许操作)
注意在欧拉中如果系统中手动加载过引导菜单grub2-mkconfig -o /boot/grub2/brub.cfg再进入重置密码时按e会要求输入用户名和密码,默认为root/openEuler#12,这个默认密码可以用grub2-set-password命令改grub2的引导菜单密码
10、快捷键ctrl+r搜使用过的命令直接用alt+点/!$ 调用最后条命令后面的路径参数home/ctrl+u键快速跳到光标所在行的开头!!重复执行上一条命令!+histry数字执行那条命令!+开头执行那条命令end键快速到光标尾clear/ctrl+L/cls(windows)清屏
11、帮助查已安装的命令是哪个位置哪个包,再安装帮助说明后面加-help,再用whatis就有帮助了,最后用–help查看(Euler默认不安装命令帮助,要自己手动安装)which daterpm -qf /usr/bin/dateyum install coreutils-helpwhatis date //看有帮助了吗用man date也可以date –help
man帮助一共有9章,保存在/usr/share/man中,用的最多的是1、5、8章第1章用户指令第2章函数调用第3章是函数库第4章设备文件说明第5章是文件格式和约定第6章是游戏第7章是杂项第8章是系统管理命令第9章是内核例程
使用manman -f 命令 查命令作用man 章节 命令 查询指定章节的命令作用man -k 关键字 找关键字在哪个章节
安装的软件产品文档及帮助文档和例子都在/usr/share/doc/里面
openEuler在线产品文档docs.openeuler.org
12、文件夹作用/bin或/usr/bin下是普通用户可以执行的命令/sbin或/usr/sbin是管理员能够执行的命令/boot中开机引导文件及内核文件/dev放的接口文件及设备文件,操作设备用/etc配置文件/lib库文件,通常以.so结尾,类似于windows中的dll文件/mnt 临时挂载目录/opt 额外软件包下载存放位置,或安装到此目录也行/proc系统进程信息/sys系统运行的状态信息,重启后信息清空/home普通用户的家目录/srv存放服务启动之后要运行的数据/tmp临时文件目录,每个用户在该目录下创建文件后,只能管理自己的文件,其它用户的不行/usr里面存放指令,有3个重要目录:/usr/bin和/usr/sbin和/usr/local,/usr/local存自定义安装的软件目录/var存放日志和服务的数据/run应用程序服务进程使用的运行状态文件,进程PID套接字
13、常用命令cat /etc/os-release查系统情况hostnamectl也可以看系统情况lsblk查看所有的设备cd ~用户名返回指定用户家目录ls -t根据文件创建的时间排序,最近创建的文件最上面ls -R以目录树形式查看文件mkdir -p级连创建目录stat 查看文件的时间戳(访问时间atime、内容修改时间mtime、属性修改时间ctime、创建时间btime)cp -a复制过去属性不变cp -l创建硬连接mv当源文件和目标文件不在同一路径下就是移动,如果是不同路径就是重命名mv -f强制覆盖不提示cat -A每行出来尾部加$符,用于区分有没有加空格cat -n 输出带行号head只能看前10行tail只看后10行tail -f时间监控日志more/less分屏查看,空格翻页,回车一行行往下看less斜杠是从上往下搜,?号是从下住上搜grep -o只显示过滤的内容grep -v反选grep -i不区分大小写grep -v ‘^#’ filename | grep -v ‘^$’ 过滤掉空行和注释行grep -C 2 “error” /var/log/httpd/error_log 查看error行的前后2行grep -c 关键字的总行数grep -r 找关键字在该目录下的哪个文件中grep '^user'过滤以user开头的内容grep 'user$'过滤以user结尾的内容grep stud.t 一个点代表任意一位,想不来起中间的内容过滤用grep ‘stud*’ 星号代表一位或多位匹配grep -w 以完整的精确单词过滤,非包含grep -E或egrep为扩展grepegrep ‘failed|wan|error’ 对多个关键字匹配wc -l统计行数wc -w统计单词数sort 排序或去重复 sort -n按数字排序sort -t指定分隔符sort -k指定列sort -r倒序排sort -o重定向保存到指定文件中sort -u去不连续的重复uniq只能去除连续的重复uniq -c统计重复的行有多少diff a是新增的行 c不同的行 d删除的行vimdiff可视化比较两个文件的差异(要先安装vim软件才行)tr字符转换tr a-z A-Z把输出转成大写tr 1-3 a-c 把数字转字母tr -d 删除指定的字母或空格cut提取列cut -d指定分隔符、-f指定列cut -c 1-2取前两个字符awk -F 默认以空格为分割(有空格的一般不用cut都用awk)awk -F ‘:’ ‘{print $1, $3}’第一和第三列sed流编辑器,先加到缓冲区,在缓冲区里操作 -i代表写入文件sed -n ’13p’ 地址定界和动作,13行打印出来,-n其它不输出sed -n ‘/ftp/,/root/p’ ftp和root那2行打印出来sed -n ‘$p’ 最后一行sed ‘1a\hello’ 第一行后面加一行hellosed ‘/ftp/d’ 删除ftp行sed ‘1d’ 删除第一行sed ‘1 s/root/huawei/2’ 把第一行的第2个root换成huaweised ‘1 s/root/huawei/g’ 把第一行的所有的root换成huawei sed ‘1! s/root/huawei/g’ 把除了第一行外的所有的root换成huawei sed ‘s/root/huawei/g’ 把所有的root换成huawei sed ‘s/root//g’ 把所有的root换成空sed -i.bak ‘s/root/huawei/g’ 把所有的root换成huawei之前备份一个原文件
14、vim操作i光标左插入,a在光标右插入,o在光标下方另起一行插入I在行首插入,A在行尾插入,O向上另起一行插入gg跳到开头行,G跳到最后一行,数字+G跳到指定行home键/^/0都可以跳到行首,$/end都能跳到行尾x删除一个字符yy复制当前光标行ny复制多行,n代表数字dd删除光标行ndd 删除光标和指定的多行u撤销上一次操作ctrl+r将撤销的操作再撤销set number设置行号set nonumber取消行号1,3 copy 5把1-3行复制到第5行1,3 move 5把1-3行移动到第5行 /搜索从上往下,?从下往上搜索,n往下搜已搜到的结果,N往上搜已搜到的结果/croot 查root不区分大小写1 s/root/huawei/ 第一行第一个的root替换成huawei%s/root/huawei/g 所有的root替换成huawei%s/root/huawei/ig 所有的root替换成huawei,并且忽略大小写%s/root/huawei/igc 所有的root替换成huawei,并且忽略大小写,c表示要确认后才替换ctrl+v再安I选中第一列输入#号,再按esc所有选择的行就给注释了
15、重定向>正确输出2>错误输出&>全部输出重定向/dev/null 一般都重定向到黑洞
cat >>/opt/text.txt << eof 双重定向(eof可以随便自定义),后面的eof把内容给cat,cat再输入到text.txt
例如让shell脚本写文件#!/bin/bashcat >>/opt/text.txt << eof hello world!eof
执行脚本就会自动把hello world写入到text.txt中并生成一个文件
重定向改密码免交互第一种改密码方法passwd user1 < passwd.txt 提前把两行密码写到passwd.txt中passwd.txt不能放在家目录下,selinux会阻止
免交互改密码第二种方法echo admin | passwd –stdin user1
三通重定向tee
16、访问控制列表acl(ls查看到文件尾部有+号代表设备了acl)setfacl设置acl,etfacl -b test.txt删除所有的aclgetfacl查看aclchacl改acl
17、visudosudo -V查看sudo版本
sudo -i可以转到root用户,切一次默认五分钟内再次切不用输入密码
sudo -k 不用等五分钟,下次提权时立马要求输入密码
配置文件2个/etc/sudoers/etc/sudoers.d/*
vim /etc/sudoerszhangsan example.com=(root) NOPASSWD:/usr/bin/touch,/usr/sbin/juseraddzhangsan用户对example.com主机提权到root一样的权限,执行touch命令和useradd命令,并且不用输入密码
%wheel ALL=(ALL) ALL对一个组进行提权
如果多个用户多个命令提权,可以用别名的方法(注意要区分大小写)vim /etc/sudoersUser_Alias ADMINS = zhangsan, lisiHost_Alias TESTHOST = example1.com, exapmle2.comRunas_Alias SUDOUSER = root, bob aliceCmnd_Alias COMMAND = /usr/bin/touch, /usr/bin/useraddADMINS TESTHOST=(SUDOUSER) NOPASSWD:COMMAND
也可以在/etc/sudoers.d/*单独创建文件进行设置(可以一个用户创建一个文件)vim /etc/sudoers.d/zhangsanzhangsan example.com=(root) NOPASSWD:/usr/bin/touch,/usr/sbin/juseradd
查看配置语法有无错误visudo -cf /etc/sudoers
查看一个用户提取了哪些权限当前用户下执行sudo -l
18、软件包管理rpmfind.net可以查各种要下载的rpm包
openEuler只能通过iso系统自带的包
rpm -ivh 完整包名,安装rpm -q 查包是否安装rpm -evh 卸载(如果配置文件改过,会保留该文件,要手动删除,注意看提示)rpm -Uvh升级,不管有没有旧版本都可以rpm -Fvh必须在旧版的上面升级rpm -ql查所有安装位置rpm -qc 查配置文件安装位置rpm -qd查帮助文件rpm -qa查本机上所有的软件包rpm -qpi查已安装的具体包信息rpm -qp –scripts 查要安装的包具体执行啥脚本rpm -qf vsftpd.con 查该配置文件来自哪个包
rpm2cpio vsftp | cpio -id 解压rpm包如果配置文件改乱了没有备份就需要把该配置文件删除掉再安装一次,或者解压把原配置文件拿过来rpm -ivh –replacepkgs vsftpd 重新安装
yum和dnf命令其实都是依赖最新的dnf3,dnf兼容yum
yum软件仓库有2种配置方法/etc/dnf/dnf.conf/etc/yum.repos.d/*
导入公钥rpm –import /mnt/RPM-GPG-KEY-openEuler
查公钥是否安装rpm -qa|grep pubkey
rpm -K vsftpd 验证包有没有篡改
rpm -e pubkey-XXX 删除公钥
公钥保存位置ls -l /etc/pki/rpm-gpg/
取消安装软件公钥认证,把开户1改成0 vim /etc/yum.conf
yum仓库生效dnf clean alldnf makecache
yum 仓库软件就是rpm包
yum源的文件路径其实是找repodata,而不是具体放包的路径文件夹
yum install epel-release安装epel源
dnf remove 卸载dnf reinstall 重新安装dnf update 如果后面不更包名就是升级所有dnf groupinstall 组包安装dnf group info查组包信息
dnf group list查看仓库有哪些组包
源码包安装dnf install make gcc gcc-c++ 这三个编辑工具包必装./configure –help查看安装帮助./configure –prefix=/usr/local/ngingxmake -j4 用4个cpu编译make install
19、建立本地yum仓库,解决本地服务器不能上公网也不能装光驱iso的情况下(注意仓库系统和服务器系统要一致,不然可能因版本不一致导致安装失败)dnf install –downloadonly –downloaddir ./pkgs/ httpd把httpd软件下载到本地的pkgs文件中做本地httpd的yum仓库
生成repodnf install createrepo 先装这个工具createrepo /opt/pkgs/ 就会自动生成repodata文件,这里面放的就是包与包的索引关系
vim /etc/yum.repo.d/my.repo[openEuler]name=Euler pkgsbaseurl=file:///opt/pkgsenabled=1gpgcheck=1gpgkey=file:///RPM-GPG-KEY-openEuler
dnf clean alldnf makecache
20、系统守护进程systemdsystemctl list-unit-filessystemctl status httpd.servicesystemctl enable httpd.servicesystemctl reload httpd.servicesystemctl restart httpd.servicesystemctl reload-or-restart httpd.service先不停止服务加载更改的文件,不行再重启,防止掉线systemctl stop httpd.servicesystemctl disable httpd.servicesystemctl is-active httpd.service 查是否开机启动systemctl enable –now httpd.service 开启服务并开机启动systemctl disable –now httpd.service 关掉服务并关掉开机启动
21、swap把内存中不活跃的数据放到swap中
创建swapfdisk /dev/sdb按t转为82为swap分区类型mkswap /dev/sdb1格式化swapon /dev/sdb1挂载swap给系统
swapoff /dev/sdb1卸载
swapon -s查看具体的swap信息
用一个文件做swapdd if=/dev/zero of=swap.img bs=100M count=10mkswap /tmp/swap.img
fdisk -l查看硬盘情况
GPT所有的分区都是主分区,有分区表的备份能力
fdisk默认分的是mbr硬盘格式,目前fdisk工具已支持大硬盘GPT格式,按g可以硬盘转成gpt格式,转gpt立即生效不用按w
partprobe刚分完区如果lsblk不显示,就要刷新硬盘分区
mkfs.xfs /dev/sdb1格式化为xfs格式
mount挂载 mount -o 类型 mount -o noexec /dev/sdb1 /mnt/ 保护挂载后目录的安全不让里面的文件执行脚本
blkid查看文件系统挂载的uuid和类型mount UUID=“XXXX” /mnt/用uuid挂载
开机挂载vim /etc/fstab/dev/sdb1 /mnt ext4 defaults 0 00 0 可以不用写
测试fstab文件有没有问题,有问题就开不了机umount /dev/sdb1 mount -aswapon -a
如果fstab文件中有挂载有问题就开不了机自动进紧急模式
22、LVM逻辑卷物理硬盘—物理卷PV—卷组vg—逻辑卷LV逻辑卷中的最小寻址单元为LE,卷组中有PE最小存储单元,LE和PE对应
物理硬盘fdisk时,打上逻辑卷的标签可以直观看出类型为lvm,用t转换成8e类型pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3 创建PVpvscan/pvdisplay查看vgcreate vg1 /dev/sdb1 /dev/sdb2 vgscan/vgdisplay查看lvcreate -n LV1 -L 4G vg1mkfs.xfs /dev/vg1/LV1lvscan/lvdisplay查看mount /dev/vg1/LV1 /mnt 挂载lvremove /dev/vg1/LV1 删逻辑卷挂载点
扩容看vgs还有多少,如果不满足先扩容卷组vgextend vg1 /dev/sdb3lvextend /dev/vg1/LV1 -L 8G第一种扩容方法lvresize -L +1G /dev/vg1/lv1第二种扩容方法xfs_growfs /mnt/ xfs扩容后可以在原来基础上格式化,数据不会丢,但是xfs不支持缩容resize2fs /dev/vg1/LV1 其它格式扩容后要这样格式化文件系统
e2fsck -f /dev/vg1/lv1 磁盘错误修复
删除逻辑卷先卸载文件系统umount /mnt删除逻辑卷lvremove /dev/vg1/lv1删除卷组vgremove vg1删除物理卷pvremove /dev/sdb1 /dev/sdb2
23、计划任务at一次性计划任务,要yum install at安装先,atd还要开服务,at计划任务只能精确到分钟级cron周期性计划任务
at 9:00ctrl+D结束交互设置at -l 查看
at 黑白名单控制哪些用户可以用at,只有在白名单的才能用at /etc/at.deny/etc/at.allow
周期性计划任务crontab真正执行是crond服务,crontab是crond的管理工具vim /etc/crontab/下面也行vim /var/spool/cron/默认位置配置文件/etc/cron.d/下面也行/etc/cron.daily/下面也行/etc/cron.hourly/下面也行/etc/cron.monthly/下面也行/etc/cron.weekly/下面也行
crontrab -e 看不到计划任务不代表里面没有,要查所有的计划任务配置文件,防止木马
五个* * * * *就是每分钟执行
cat /etc/crontab查看帮助
/etc/cron.allow白名单,普通用户只能有白名单有的才可以用计划任务
crontab -e编辑计划任务(里面写绝对路径命令,里面特殊符号要加反斜杠转意)crontab -l查看当前用户计划任务crontab -l -u bob 查看bob用户计划任务crontab -r删除计划任务crontab -u设哪个用户的cron服务
tail -f /var/log/cron看日志查看执行情况
24、网络服务nmcli con show ens33 看IP等详细ip route show 看网关route -n也可以
网络类型en以太网wl无线网卡ww无线广域网
接口类型o板载网卡s热插拨网卡p pcie网卡
真机的物理网卡名称就是网络类型+接口类型组成
ifconfig ens33 down/up 禁用或激活ip link set ens33 down/up 禁用或激活nmcli device status 查看所有网卡设备情况
正确命令修改网卡配置文件后nmcli connection up ens33nmcli connection reload
nmtui图形化配置网卡和主机名
网卡配置文件不在新增nmcli connection add type ethernet ifname ens33 con-name ens37 ipv4.method manual ipv4.address 172.16.100.1/24 ipv4.gateway 172.16.100.254 ipv4.dns 8.8.8.8 autoconnect yes
网卡配置文件在修改(不写+号就是改)nmcli connection modify ens33 +ipv4.address 172.16.100.2/24 多加一个ip地址nmcli connection up ens33
删除一个IP地址nmcli connection modify ens33 -ipv4.address 172.16.100.2/24 多加一个ip地址nmcli connection up ens33
只改dnsnmcli connection modify ens33 ipv4.dns 8.8.8.8nmcli connection up ens33
只改网关nmcli connection modify ens33 ipv4.gateway 192.168.1.254nmcli connection up ens33
删除网卡配置文件(如果有多个相同的ens33就以uuid删除)nmcli connection delete ens33nmcli connection delete uuidxxx
新建一个网卡配置文件nmcli connection add type ethernet ifname ens33 con-name ens33nmcli connection up ens33nmcli connection show
配置默认路由ip route add default via 192.168.1.254 dev ens33 临时配置默认路由ip route add 192.168.2.0/24 via 192.168.1.254 dev ens33 临时配置目标网络加路由nmcli connection modify ens33 +ipv4.routes “172.16.0.0/24 172.16.100.1” 永久配置目标网络加路由另一种配置方法nmcli connection modify ens33 +ipv4.routes “0.0.0.0/0 172.16.100.1” 永久配置默认路由另一种配置方法nmcli方法会在/etc/sysconfig/network-scripts/下自动增加配置文件route-ens33
改主机名hostname test 临时有效配置主机名hostnamectl set-hostname 永久改用户名方法/etc/hostname永久改用户名会自动写入该文件中
查看系统服务和端口cat /etc/services 查服务对应端口netstat -ntulp查看系统运行的端口ss -tanup也可以查看系统运行的端口
25、进程管理systemd是所有的系统进程的父进程pid为1top运行中按1看有多少核top运行中按P可以看cpu使用排序top运行中按M可以看内存使用排序 top运行中按c可以看进程执行了哪个文件top运行中按k自动输入当前页第一行,按回车可以看杀死进程
僵尸进程要手动杀,孤儿进程不用管会被systemd自动杀死
.sock结尾的文件为套接字,可以把应用服务和进程间通讯kill不是杀死进程是给进程发送信号kill -l查看所有信号类型9是强制结束,1是重新读取配置killall通过名称结束一类进程pkill -9 -t pts/2 结束一个终端进程
进程的优先级(top下能看)PRI的是动态优先级(内核自动调整)NI是静态优先级(可以由用户或管理员调整)
NI取值范围是-19-20,值越小优先级越高nice 10 vim 调用优先级方法renice -n 12 PID 根据PID修改优先级
前后台执行程序执行命令后面加上&符表示后台执行jobs查看后台执行程序fg %1把后台1的程序调到前台执行ctrl+z把前台任务放后台并暂停bg %1将任务在后台继续运行kill -9 %1 结束后台程序
26、shell脚本变量2种类型:本地变量(本shell下生效)、环境变量(其它shell也能生效)set查看本地变量unset取消变量env查看环境变量
本地变理定义方法a=1echo ${a} 精确方法echo $a 输入变量值
环境变理定义方法export a=1
$?看上一次 命令返回结果是1还是0,0代表成功
curl -s -I baidu.com 看状态码
/bin/true该命令执行结果永远为0,写while死循环用的
if 判断(不知结果判断)#!/bin/bashif ping -c1 -w 1 baidu.com &>/dev/nullthen echo “baiduok”elif ping -c1 -w 1 163.com &>/dev/nullthen echo ‘163ok’else echo ‘no’fi
case使用(已知的结果用case)#!/bin/bashuser=$(cut -d : -f1 /etc/passwd|grep bob)case user in bob) echo ‘hello bob’ ;; tom) echo ‘hello tom’ ;; *) echo no user ;;esac
for循环(创建三个用户)#!/bin/bashfor user in {1..3}do useradd user#user echo user$user create successdone
for循环输出命令结果 #!/bin/bashfor i in $(ls)do echo $idone
while循环(基于条件循环)#!/bin/bashread -p “input username: ” get_userwhile id $get_user &>/dev/nulldo echo $get_user Error read -p “input username: ” get_userdone useradd $get_user echo $get_user useradd success!
监控网站3秒一次,写个死循环#!/bin/bashwhile /bin/truedo curl -s -I baidu.com|grep HTTP|awk ‘{print $2,$3}’ >>/website.log if grep -q 404 website.log then echo webstie Error exit 100 fi sleep 3done
until循环(条件成立才退出循环,和whille相反)#!/bin/bashuntil ping -c 1 -w 1 172.16.0.1 &>/dev/nulldo echo down sleep 3done echo up
shell执行和排错bash -x 脚本模拟运行
系统加固内核参数加固sysctl -a 查看所有生效的内核参数vim /etc/sysctl.conf里面修改内核参数永久生效
