linux基础
Linux操作系统启动流程
1)开机BIOS自检,加载硬盘。
2)读取MBR,进行MBR引导。
3)grub引导菜单(Boot Loader)。初始化软硬件
4)加载内核kernel。内核加载镜像内容
5)启动init进程,依据inittab文件设定运行级别(init0 …)
6)init进程,执行rc.sysinit文件。(系统提前准备的内容)
7)启动内核模块,执行不同级别的脚本程序。
8)执行/etc/rc.d/rc.local
9)进入系统登陆界面。
centos6和centos7的区别:
1。 系统的类型不同
centos6的系统类型是sysvinint
centos7的系统类型是systemd
centos6是按一定顺序启动,启动很慢;centos7是并行启动,启动速度快
2.服务管理不同
centos6采用service和chconfig管理服务
centos7 采用systemctl 管理服务,但是还可以使用service和chkconfig命令
3.网络管理不同
1.centos6网卡名是eth0,
centos7网卡名,接口名称被自动基于固件,拓扑结构和位置信息来确定,现在即使添加或移除网络设备,接口名称仍然保持固定,而无需重新枚举,和坏掉的硬件可以无缝替换。
2.网络配置命令
在CentOS 6中的ifconfig,在CentOS 7中被ip命令取代了
centos6使用/etc/init.d/network服务,centos7新增加了NetworkManager服务,network仍然作为备用使用
3. 内核
centos6的内核版本是2.6.X , centos7的内核版本是3.10.x,使用uname -r查看
4.centos的文件系统默认是ext4(Fourth EXtended filesystem),centos7的文件系统默认是xfs
5.文件结构变化
centos6的/bin, /sbin, /lib, and /lib64在/下
centos7的/bin, /sbin, /lib, and /lib64移到/usr下
ls 打开
-a all,查看目录下的所有文件,包括隐藏文件
-l 长列表显示
-h human 以人性化方式显示出来
-t 按修改 时间排序
-S 按文件的Size排序
创建目录
mkdir hone
mkdir -p /home/qq/qqq
mkdir ho{1…3}
创建文件
touch home
touch ho oo
touch /home/file{1…2}
cd cd ~ 直接回家
cd - 返回上次目录
cd … 返回上一层
进入文件夹或者目录
cd ffff/
进入文件
vim fff
vi fff
查看文件
cat 文件名
-n 显示文件行号
-A 显示控制字符
cat cp 文件名 (可以复制文件内容)
移动文件
mv
在同一目录下MV相当于文件改名。
在vi中ctrl+p可以自动补全。
vimdiff可以对比vi中的文档。(ctrl+ww可以切换到另一个文档)vim±o可以打开两个文档。
:w /home可以存在目录中 :1,3 w /home可以保存前三行。
查找替换
-
-:
-
1,$ s/old/new/ g 可以将文件中所有的old都换为new
-
1,5 s/root/yang/ 只能将第一行和第五行之间的第一个root改换为yang
:set paste可以保留复制的格式。
查找 /string 然后回车。VI 的三个模式
命令模式
扩展命令模式 (插入模式)
进入其它模式:(末行模式)使用umask 修改文件和目录的权限
文件夹和目录的权限是777
文件的权限是666
临时修改
[root@localhost ~]# umask 0000
[root@localhost ~]# mkdir www
[root@localhost ~]# touch ww
[root@localhost ~]# ll -d www ww
-rw-rw-rw-. 1 root root 0 Jul 19 20:06 ww
drwxrwxrwx. 2 root root 6 Jul 19 20:06 www
如何恢复被删的用户家目录
cp -rf /etc/skel/ /home/aaa
如何恢复被删的/root下的passwd
cp -rf /etc/skel/ /etc/passwd cp -rf /etc/passwd/ /etc/passwd
远程拷贝
scp 196.182.99.122:/home/qq.txt /home/zz.txt
远程传输
scp /home/qq.txt@196.168.88.122 :/home/zz.txt
创建用户和用户组,并指定uid gid 和shell
| | -u/u=
useradd | + 用户名 + | -g/g=
| | -s/s=
groupadd方法同样
给用户组添加用户的几种方法:
useradd 用户名 -g 用户组
usermod -G/-aG 用户组 用户名
gpasswd -a 用户名 用户组
给用户组添加多个用户
gpasswd -M 用户名,用户名 用户组
把用户从用户组中删除
gpasswd -d 用户名 用户组
指定用户组中的管理员()
gpasswd -A 用户名 用户组
修改用户的uid gid shell 的方法
(1) | | -u/u=
usermod| + 用户名 + | -g/g=
| | -s/s=
(2)
vim /etc/passwd 在文件中直接修改
改变文件的属主和属组
chown 属主.属组 文件名
ugo基本权限
r 4 w 2 x 1
修改文件的基本权限
chmod 777 文件名
chmod 777 /home/qq.txt
chmod u=,g=,o= /home/qq.txt
修改目录和文件下的所有权限
chmod -R 777 目录名
查看文件的权限 : ll -d 文件名或者目录名
高级权限ACL
查看权限 getfacl /home/qq.txt
给用户赋予权限 setfacl -m u:用户名:rwx /home/qq.txt
setfacl -m g:用户组:rwx /home/qq.txt
setfacl -m o::rwx /home/qq.txt
删除用户权限 setfacl -x u:
g: + 名字 /home/qq.txt
o:
mask可以控制最大权限:
setfacl -m mask::rwx /home/qq.txt
(mask的限制是临时的,因为它在下一次赋予权限中会随权限最大的用户或用户组或其他人)
setfacl -b /home/test.txt //删除所有acl权限
getfacl file1 |setfacl --set-file=- file2 //复制file1的ACL权限给file2
对目录有w权限,可以在目录中创建新文件,可以删除目录中的文件(跟文件权限无关)
chmod a-x /usr/bin/chmod 如何添加x权限???
cd /usr/bin
mkdir chmod
setfacl -m u:root:777 /usr/bin/chmod
setfacl -m g:root:777 /usr/bin/chmod
setfacl -m o::777 /usr/bin/chmod
查看帮助:
man 命令
命令 --help
SUID
1、SUID权限仅对二进制程序(binaryprogram)有效;
2、执行者对于该程序需要具有x的可执行权限;
3、执行者将具有该程序拥有者(owner)的权限。
chmod u+s /usr/bin/rm
SGID
chmod g+s /home/hr
:SGID主要用在目录上 如果用户在此目录下具有w权限的话,若使用者在此目录下建立新文件,则新文件的群组与此目录的群组相同。
Sticky Bit
这个就是针对others来设置的了,和上面两个一样,只是功能不同而已。 SBIT(Sticky Bit)目前只针对目录有效,
对于目录的作用是:当用户在该目录下建立文件或目录时,仅有自己与 root才有权力删除。
chmod o+t dir2/ //给予dir2目录Sticky
文件属性
lsattr 查看文件属性 // lsattr /home
chattr 改变文件属性 // chattr (±=)i 不可改变文件属性
a 只允许追加
文件覆盖 echo file2 > file1
文件追加 echo file2 >> file1
进程管理:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2164 648 ? Ss 08:47 0:00 init [5]
USER: 运行进程的用户
PID:进程ID
%CPU: CPU占用率
%MEM: 内存占用率
VSZ:占用虚拟内存
RSS: 占用实际内存 驻留内存
TTY:进程运行的终端
程序: 二进制文件
进程: 是程序运行的过程, 动态,有生命周期及运行状态
查看进程ps和top
ps aux |grep “查看的名字”
ps -ef |grep “查看的进程名字”
ps axo %cpu,%mem,nice,command |grep ‘查看的进程名字’ (自定义)
ps aux --sort=%cpu |grep sshd
查看最占CPU的前十个设备 : ps aux --sort=-%cpu |head
top动态查看设置一秒刷新(top默认的是每三秒刷新一次):top -d 1
top -d 1 -b -n 1 >top.txt
top -d 1 -b -n 1 |xargs -i cp -rf {} top.txt
nice(-20~~20)值:进程的优先级。当nice越低,他的进程优先级就越高:当nice值越高,他的进程优先级就越低。
如何改变和查看进程的优先级nice值:
top查看,按r 输入进程pid,然后在回车输入nice值回车就改变了nice值。
renice -20 pid 改变了nice值
进程信号管理 kill pkill
-
SIGHUP 重新加载配置 PID不变
-
SIGINT 键盘中断^C
-
SIGQUIT 键盘退出
-
SIGKILL 强制终止
-
SIGTERM 终止(正常结束),缺省信号
-
SIGCONT 继续
-
SIGSTOP 停止
20)SIGTSTP 暂停^Z
kill -9 pid
使用W可以查看当前使用用户进程
pkill -u alice 可以控制远程用户登录
pkill -t pts/2 //终止pts/2上所有进程
pkill -9 -t pts/2 //终止pts/2上所有进程,并且结束pts/2
标准输入,标准输出,标准错误:
输出重定向 (覆盖,追加)
正确输出: 1> 1>> 等价于 > >>
错误输出: 2> 2>>
ls /home/ /aaaaaaaaa >list.txt 2>error.txt
ls /home/ /aaaaaaaaa &>list.txt //混合输出(错误和正确的都输出在一个文件中)
脚本中使用重定向
[root@youngfitn ~]# vim ping1.sh
ping -c1 10.18.40.100 &>/dev/null
if [ $? -eq 0 ];then
echo “10.18.40.100 is up.”
else
echo “10.18.40.100 is down!”
fi
输入重定向
标准输入: < 等价 0<
[root@youngfitn ~]# cat >file4 <<EOF
111
222
333
EOF
[root@youngfitn ~]# cat file4
111
222
333
进程管道Piping
【root@qq.com~】sort -t":" -k3 -n /etc/passwd //以: 分隔,将第三列按字数升序(顺序)
[root@youngfitn ~]# sort -t":" -k3 -n /etc/passwd -r //逆序
[root@youngfitn ~]# sort -t":" -k3 -n /etc/passwd |head -t 指定字段分隔符 -k 指定列 -n 按数值
awk -F: ‘{print $7}’ /etc/passwd
awk -F : ‘{print $7}’ /etc/passwd |sort 排序
awk -F : ‘{print $7}’ /etc/passwd |sort |uniq //去重
awk -F : ‘{print $7}’ /etc/passwd |sort |uniq -c //显示有多少重复的
-F: 指定字段分隔符
$7 第七列字段
.参数传递 Xargs
cat files.txt |xargs rm -rvf (默认传输到最后)
cat files.txt |xargs -i rm -rfv { } (-i默认后面有{})
cat files.txt |xargs -I { } rm -rf { } (默认{ }里面是参数)
cat files.txt |xargs -I {} cp -rf {} /home (可以指定参数输出的路径)
存储管理:
磁盘分区的命令 fdisk(MBR格式) gdisk(n 分区 p 打印分区 w 保存并退出 Q 退出不保存 d 删除分区)
删除分区 part /dev/sdb rm 1
fdisk有四个主分区
gdisk有128个主分区
每次分区完记得更新 partprobe /dev/sdb
查看磁盘分区的命令 lsblk
磁盘文件格式化命令 : mkfs.xfs /dev/sdb
mkfs.ext4 /dev/sdb
查看UUID的命令 blkid
磁盘挂载: 手动挂载(不支持) mount /dev/sdb /mnt/dir2
自动挂载 vim /etc/fstab (设备名字挂载和UUID挂载)
vim /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
mount -a 读取挂载信息
逻辑卷LVM
创建LVM: 创建pv pvcreate /dev/sdb
创建vg vgcreate vg1 /dev/sdb
创建lv lvgreate -L 500M -n lv1 vg1
查看命令 : lvs lvcan lvdisplay
扩容vg pvcreate /dev/sdc
vgextend vg1 /dev/sdc
扩容lv lvextend -L 800M /dev/vg1/lv1 扩容到800M
lvextend -L +500M /dev/vg1/lv1 在lv原有的基础上在加上500M
pvmove数据到其它PV
pvmove /dev/vdd /dev/vdb (条件要在同一个vg中)
减小vg vgreduce vg1 /dev/sdb
减小lv lvreduce -L 700M /dev/vg1/lv1 减小到700M
lvreduce -L -100M /dev/vg1/lv1 在原有的基础上减小100M
扩容和减小lv时的格式化不同{扩容是格式化
xfs_grows /dev/vg1/lv1
resize2fs /dev/vg1/lv1 (ext4格式)
减小时的格式化 mkfs.xfs /dev/vg1/lv1
mkfs.ext4 /dev/vg1/lv1 }
交换分区管理swap:
查看当前交换分区 free -mh
swapon -s
制造swap mkswap /dev/vdb1
dd </dev/zero >/swap.img bs=1M count=512
dd if=/dev/zero of=/swap.img bs=1M count=512
mkswap /swap.img
挂载 # vim /etc/fstab
swapon -a 读取挂载信息
( chmod 600 /swap.img)
swapon -s 查看挂载
交换分区扩容 (swap交换分区的本质就是lvm逻辑卷)
pvcreate /dev/sdc
vgextend centos /dev/sdc
lvextend -L +1.9G /dev/mapper/centos-swap /dev/sdc
swapoff /dev/mapper/centos-swap
MBR和GPT的相互转换:
parted>
parted>select sdb 假设磁盘为sdb
parted>mklabel gpt 将MBR磁盘格式化为GPT
#parted>mklabel msdos 将GPT磁盘转化为MBR磁盘
parted>mkpart primary 0 100 划分一个起始位置为0,大小为100M的主分区
parted>mkpart primary 100 200 划分一个起始位置为100M,大小为100M的主分区
#parted>mkpart primary 0 -1 将整块磁盘分成一个分区
parted>print 打印当前分区
parted>quit 退出
reduce remove的区别:差不多
软连接的不同
[root@youngfit ~]# mkdir /home/it1000
[root@youngfit ~]# touch /home/it1000/file{1…10}
[root@youngfit ~]# ln -s /home/it1000/ /var/
[root@youngfit ~]# rm -rf /var/it1000/ 删除目录下的文件
[root@youngfit ~]# rm -rf /var/it1000 删除软连接
软连接和硬链接的区别:
1. 软链接可以跨文件系统,硬链接不可以;
2. 软链接可以对目录进行连接,硬链接不可以。
3.两种链接都可以通过命令 ln 来创建。
4 .ln 默认创建的是硬链接。
使用 -s 参数可以创建软链接
find
-name:按文件名来查找文件
-user:按照文件的属主来查找文件
-group:按照文件所属的组来查找文件
-perm:按照文件权限来查找文件
-prune:不在当前指定目录中查找
如何修改系统时间:
date -s 25/07/2019 日月年
date -s 21:11:00 时分秒
clock -w 保存修改休息
tar命令是一个打包工具,可以把目录打包成一个文件,
它把所以文件整合成一个大文件,方便复制或移动。
打包的目的是为了传输更快,节省带宽。根据文件是否小于一个块的大小,有可能打包后文件大小有变化
打包命令的格式tar [zjxcvfpP] filename.tar(打包后) filename(打包前)
(1)-z : 表示同时用gzip压缩
(2)-j :表示同时用bzip2压缩
(3)-J :表示同时用xz压缩
(4)-x : 表示解包或者解压缩
(5)-t :表示查看tar包里的文件
(6)-c :表示建立一个tar包或者压缩文件包
(7)-v : 表示可视化
(8)-f : 后面跟文件名。如果多个参数则把f写到最后
(9)-p :表示使用原文件的属性(不常用)
(10)-P :表示可以使用绝对路径(不常用)
(11)–exelude filename:表示打包或压缩时,将filename文件排除在外(不常用)
tar如果打包目录,同样不会删除源目录。并可以修改tar包名。如果已经打包过了再次打包会直接覆盖之前的tar包,没有任何提示。
过滤指定文件不在打包范围内 tar -cvf 123.tar --exclude 123/3.txt ------------------
打包并压缩
打包时使用gzip压缩
tar -czvf 123.tar.gz 123/
解压缩 把里面的c改为x tar -zxvf 123.tar.gz 123/
rpm管理
rpm -ivh 名字 (安装rpm)
rpm -e 名字 (卸载rpm)
rpm -q 名字 (查询rpm是否安装)
注意:rpm包的安装局限性很大,只适用于安装包依赖关系小的。
yum源管理
yum -y install 名字 (安装)
yum reinstall 名字 (重装)
yum remove 名字 (卸载)
yum search 名字 (查找软件)
yum provides rz (查找命令属于那个文件)
yum repolist (查询yum源信息)
yum list (查看yum源中的软件(安装过的和没有安装的))
本地yum源制作:
(文件) mkdir /myyum
createrepo /myyum (制成yum源)
然后进入yum源配置文件中进行配置 cd /etc /yum.repos.d/
vim my.repo
[centes]
name=centos
baseurl=file:///myyum
enabled=1
gpgcheck=0
(镜像) mount /dev/cdrom /mnt
进入yum源进行镜像源的配置 vim centos.repo
【centes】
name=centos
baseurl=file:///mnt
enabled=1
gpgcheck=0
然后进行yum repolist 查询yum源信息和 yum clean all yum源清理缓存
局域网yum源制作(关闭防火墙 systemctl stop firewalld 和 setenforce 0)
[服务端]
- mkdir /opt/yum-iso
- mount /opt/CentOS-7-x86_64-DVD-1708.iso /opt/yum-iso(挂载镜像)
- yum -y install vsftpd (并打开vsftpd.)
- cp –a /opt/yum-iso/* /var/ftp/pub/
- cd /var/ftp/
- createrepo pub
- 然后进入yum源配置文件
vim my.repo
name=centos
baseurl=file:///opt/yum-iso
enabled=1
gpgcheck=0 - yum repolist
【客户端】 - 关闭防火墙或者打开一个端口(实现已经下载和打开了vsftpd)
2.cd /etc/yum.repos.d/
3.Vi my.repo
4.[ftpYum]
name=centos
baseurl=ftp://192.168.62.131/pub
enabled=1
gpgcheck=0
5.yum repolist
计划任务和日志轮转
Schedule one-time tasks with at. 一次性调度执行 at
Schedule recurring jobs with cron 循环调度执行 crontab
at now +1min //一分钟后开始执行 ( 一次性调度执行)
at> useradd uuuu
at> //Ctrl+D
crontab -e // 编辑任务
crontab -l // 列出任务
crontab -r // 删除任务
分 时 日 月 周 执行的命令
每天6:00执行
0 6 * * * root /home/youngfit.sh
日志系统rsyslog
日志文件放在 /var/log
日志配置文件 /etc/logrotate.conf
日志轮转: /usr/sbin/logrotate /etc/logrotate.conf
强制日志轮转: /usr/sbin/logrotate -f /etc/logrotate.conf
计划任务
crontab -l List the jobs for the current user. (列出计划任务)
crontab -r Remove all jobs for the current users. (删除计划任务)
crontab -e Edit jobs for the current user. (编写计划任务)
Linux下网络基础管理
Ethernet 以太网
WLAN(wl) wifi
ww WAN口
DNS的配置文件在/etc/resolv.conf
VMWare桥接模式下配置静态IP
DEVICE=eth0
HWADDR=00:0C:29:FC:8D:E6
TYPE=Ethernet
#UUID=343b502d-2249-4e33-9187-9abc285b9292
UUID=31b6504c-7ddd-4b74-a51e-46cd34ed182d
ONBOOT=yes
NM_CONTROLLED=yes
#BOOTPROTO=dhcp
BOOTPROTO=static
IPADDR=11.10.1.192
NETMASK=255.255.255.0
GATEWAY=10.8.8.1
DNS1=114.114.114.114
DNS2=8.8.8.8
IPV6INIT=no
USERCTL=no
teamviewer
traceroute命令显示当前主机与目的主机之间经过的所,有网络节点的地址,以及当前主机到每个中间结点的连接状态。
方法一: 修改ip/netmask/dns/gateway
添加链接
nmcli connection add con-name enp2s0-auto autoconnect yes ifname enp2s0 type ethernet
nmcli connection add con-name enp2s0-gun autoconnect yes ifname enp2s0 type ethernet ip4 10.10.10.10/24 gw4 10.10.10.254
nmcli connection up enp2s0-auto (打开链接)
nmcli connection down enp2s0-auto (关闭链接)
nmcli connection modify enp2s0-gun ipv4.method a/m (链接自动分配IP或手动装载IP)
方法二:修改ip/netmask/dns/gateway
vim /etc/sysconfig/network-scripts/ifcfg-enp2s0
NAME=“enp2s0” //名称
DEVICE=“enp2s0” //设备名称
ONBOOT=yes //开机启动
NETBOOT=yes
BOOTPROTO=none //手动设置(dhcp为自动获取)
IPADDR=172.16.120.246
PREFIX=24(子网掩码)
NETMASK=255.255.255.255(子网掩码)
GATEWAY=172.16.120.254
DNS1=8.8.8.8
nmcli con reload(进行刷新)
nmcli con down enp2s0; nmcli con up enp2s0
dig,host,nslookup,nsupdate.使用这些工具可以进行域名解析和DNS调试工作.
例如:host ww.baidu.com
ip a //查看主机ip地址
ip route //查看路由表条目
ss命令
-n 不显示服务名称
-a 显示所有信息
-t 显示tcp链接服务
l 显示监听的端口
dns配置文件(客户端)
#vim /etc/resolv.conf
nameserver 172.16.70.250
添加路由
route add -net 192.168.0.0/24 gw 192.168.0.1
route add -host 192.168.1.1 dev ens33
删除路由
route del -net 192.168.0.0/24 gw 192.168.0.1
方法二:
添加路由
ip route add 192.168.0.0/24 via 192.168.0.1
ip route add 192.168.1.1 dev 192.168.0.1
删除路由
ip route del 192.168.0.0/24 via 192.168.0.1
添加到主机的路由
route add -host 192.168.1.2 dev eth0
route add -host 10.20.30.148 gw 192.168.62.2
添加到网络的路由
route add -net 10.20.30.0 netmask 255.255.255.0 eth0
route add -net 192.168.1.0/24 eth1
添加默认路由
route add default gw 192.168.1.1
删除路由
route del
设置包转发
vim /etc/sysctl.conf
net.ipv4.ip_forward =1
临时添加IP:
ip a a 192.168.14.8 dev ens33
ip a del 192.168.14.8
NFS远程共享连接(文件同步)
【服务端】
1.yum -y install rpcbind
yum -y install nfs-utils 下载安装软件
2.systemctl start nfs rpcbind
3.mkdir /zhengzhou
4. vim /etc/exports
/zhengzhou 192.168.14.0/24(rw,no_root_squash)
5.重新启动 systemctl enable nfs
6.systemctl stop firewalld
setenforce 0
【客户端】
1.yum -y install nfs-utils
2.systemctl start nfs
3.mkdir /qf
4.mount -t nfs 192.168.14.143:/zhengzhou /qf
或者自动挂载 vim /etc/fstab
192.168.14.143:/zhengzhou /qf nfs defaults 0 0
5.systemctl stop firewalld
setenforce 0
vdftpd 远程共享(lftp 192.68.14.143)
共享的是/var/ftp/pub
ftp的主动模式:客户端开启一个端口N(>1023)向服务端的21端口,建立连接,同时开启一个N+1,告诉服务端,我监听的是
N+1端口,服务端接到请求之后,用自己的20端口连接到客户端的N+1端口,进行传输
ftp的被动模式:客户端同时开启两个端口(1024,1025),一个端口(1024)跟服务端的21端口建立连接,并请求,大哥,
我连上了,你再开一个端口呗。服务端接到请求之后,随机会开启一个端口(1027)并告诉客户端我开启的是1027端口,客户
端用另一个端口(1026)与服务端的(1027)端口进行连接,传输数据
vim /etc/vsftpd/vsftpd.conf (vsftpd的配置文件):
anonymous_enable=YES //是否允许匿名用户登录ftp YES为允许 NO为拒绝
local_enable=YES //是否允许本地用户登录(比如alice)
write_enable=YES //是否允许写(全局)
local_umask=022 //控制本地用户上传文件的默认权限,umask表示要减掉的权限
anon_umask=022 //控制匿名用户上传文件的默认权限
download_enable=YES //是否允许下载文件
anon_upload_enable=YES //允许上传文件
anon_mkdir_write_enable=YES //允许上传目录
anon_max_rate=500000 //匿名用户限速
local_max_rate=80000 //本地用户限速
max_clients=500 //ftp最大连接数
max_per_ip=2 //单个IP最大连接数,线程数
服务器关闭被动模式:
#vim /etc/vsftpd/vsftpd.conf
pasv_enable=NO
samba:widow与Linux共享文件
[服务端]
- yum -y install samba-client samba-common samba
- systemctl start smb
- mkdir /test
- chmod 777 /test/
- vim /etc/samba/smb.conf
[test] //共享名称
comment = this share my /tmp directory //描述
path = /test //共享目录
public = yes //允许来宾用户访问
writable = yes //与readonly相反 - systemctl restart smb
- useradd wing /添加系统用户
- smbpasswd -a wing /添加smb账户密码
- systemctl restart smb
- systemctl stop firewalld
setenforce 0
【客户端】 - yum -y install samba-client samba-common samba
- systemctl start smb
- systemctl stop firewalld
setenforce 0
4 mount //192.168.14.143:/test(是配置文件里面的【test】) /mnt -o username=wing,passwd=123 - 在/mnt下查找test。(验证设置是否成功)
DNS服务器(将域名解析成IP)
1 vim /etc/resolv.conf文件
作用: 实现名字解析,主要为本地主机名、集群节点提供快速解析
2 域名服务dns
yum -y install bind bind-utils
启动服务 :systemctl start name
工作目录:
/etc 存放主配置文件(指定区域配置文件的作用)
/var/named 区域配置文件(用来作解析,域名对应ip)
主配置文件 vim/etc/named.conf
options {
directory "/var/named";
};
zone “qianfeng.com.” IN {
type master;
file "qianfeng.com.zone";
};
正向区域配置文件
在/var/named/下创建一个 qianfeng.com.zone
vim /var/named/qianfeng.com.zone
$TTL 86400 缓存时间
@ IN SOA wing.qianfeng.com. root.qianfeng.com(
100000000 //序号
3H //每三小时更新一次
15M //请求失败后。每15分钟请求一次
1W // 一周以后放弃
1D) //一天缓存一次
IN NS www.qianfeng.com
wing IN A 192.168.14.143
www.qinafeng.com IN A 192.168.14.8
shell脚本的大小比较:
#-gt是大于
#-lt是小于
#-eq是等于
#-ne是不等于
#-ge是大于等于
#-le是小于等于
MySQL监控常用的命令:mysqladmin -uroot -pMysql@123 status
mysqladmin -uroot -pMysql@123 extended-status|less
内存监控的命令:free -m cat /proc/meminfo
tcp监控的命令:ss -an|grep tcp
Mysql的四种改密码方式:set password for root@local = password123
mysqladmin -uroot -p123456 password 123
update mysql.user set password=password(‘123’) where user=‘root’ and host = ‘localhost’
set password = password(‘123’)
强行破解MySQL密码: skip -grant-tables
设置MySQL密码的强弱: show variables like’validate_password%’;
set global validate_password_policy=LOW;
set validate_password_length=6; 设置密码长度
面向对象语言是只一切操作都以对象为基础
面向过程语言是以过程或函数为基础的
shell脚本的知识点总结:
1,变量: 在shell中变量有四种:
预定义变量:系统自己定义的变量(
U
S
E
R
,
USER,
USER,UID等)
$$ 当前进程PID
$? 命令执行后的返回状态.0 为执行正确,非 0 为执行错误
$# 位置参数的数量
$* 所有位置参数的内容
$@ 所有的参数
$! 上一个后台进程的PID (wait命令中使用,后面讲)
环境变量:(/etc/profile)
自定义变量:自己定义的变量 (a=12)自定义变量:
定义:变量名称=值
变量名称:只能由字母,数字,下划线组成,不能以数字开头
注意:应该让变量名称有意义
= 赋值符号 前后不能有空格
值: 所有的字符串和数字都可以,
引用变量: $变量名 或 ${变量名}
位置变量:
1
b
a
s
h
中
的
运
算
方
法
:
只
针
对
整
数
:
1 bash中的运算方法: 只针对整数:
1bash中的运算方法:只针对整数:(()) $[] expr
echo $(( 5+6 ))
echo $[ 5 + 6 ]
expr 5 + 6
小数运算:
bash本身不能做小数计算:需要bc命令转换
#echo “2*4” | bc
#echo “2^4” | bc
#echo “scale=2;6/4” | bc scale:精度
#echo “0.1>0.01”| bc 如果为真的话echo输出1,为假的话echo输出的是0
完全引用:’ ’ //强引 硬引
部分引用:" " //弱引 软引
读取用户标准输入:read
read:功能就是读取键盘输入的值,并赋给变量
#read -t 5 var
#read -p “提示信息” var
bash脚本的测试:
sh –x script
这将执行该脚本并显示所有变量的值
sh–n script
不执行脚本只是检查语法模式,将返回所有错误语法
sh –v script
执行脚本前把脚本内容显示在屏幕上
变量的截取:
a=12345678
echo ${a:5} //从第5位开始截取
变量内容的替换
$ a=123456123789
$ echo ${a/1/} 第一次匹配的被替换
23456123789
$ echo ${a//1/} 全局的匹配被替换
2345623789
basename 是去除目录后剩下的名字
dirname 是取目录
test
-f 存在且是正规文件
-d 存在且是目录
-h 存在且是符号链接
-b 块设备
-c 字符设备
-e 文件存在
for循环
for i in {1…20}
do
echo $i
done
while循环
while [ 1 -gt 0 ]
do
for i in {1…5}
do
echo $i
if [ $i -gt 3 ];then
exit 0
else
echo “在等待”
fi
done
done
if判断
if [ $i -gt 3 ];then
exit 0
else
echo “在等待”
fi
until循环(为假是执行)
x=1
until [ $x -ge 10 ]
do
echo $x
x=expr $x + 1
done
数组
aa=(haha heihei baibai)
[root@youngfit shell]# echo ${aa[0]} //访问数组中的第一个元数
[root@youngfit shell]# echo ${aa[@]} //访问数组中所有的元数 等同与echo ${aa[*]}
[root@youngfit shell]# echo ${#aa[@]} //统计元数的个数
[root@youngfit shell]# echo ${!aa[@]} //统计索引
sed ‘1d’ passwd //删除文件的第1行
选项 -i 会使得sed用修改后的数据替换原文件
sed -i ‘s/pattern/replace_string/’ filename
g标记可以使sed执行全局替换
sed ‘s/pattern/replace_string/g’ filename
打印 sed -d ‘2p’ a.txt
awk
- NR: 表示记录编号, 当awk将行为记录时, 该变量相当于当前行号
- NF: 表示字段数量, 当awk将香味记录时, 该变量相当于当前列号
awk -F: ‘BEGIN{RS=“bash”} {print $0}’ passwd
expect解释器(免交互式):
#/usr/bin/expect
spawn ssh root@192.168.62.146
expect {
“yes/no” { send “yes\r”;exp_continue }
“password:” { send “123\r” }
}
interact
执行测试是否免交互:
要是用/usr/bin/expect的shell执行
15:09 2019/9/6