Linux 常用指令学习
一、vim
-
复制、粘贴
yy p
-
删除
dd
-
行号,跳转指定行
set nu set nonu
-
跳转
# 行首 gg # 行末 shift + g
-
全选
-
替换
:%s/源字符串/目的字符串/g
-
修改ssh连接超时时间
-
vim /etc/ssh/sshd_config
# 服务器端间隔 30 秒向客户端发送心跳 ClientAliveInterval 30 # 120 次后关闭 ClientAliveCountMax 120 120 * 30 = 3600 秒
-
vim /etc/ssh/ssh_config
# 每隔多少秒客户端向服务端发送一次心跳(alive 检测) ServerAliveInterval:30 # 服务端多少次心跳无响应之后,客户端才会认为与服务器的 SSH 连接已经断开,然后断开连接 ServerAliveCountMax:120
二、用户管理
1.添加用户
useradd 用户名
2.设置密码【需要登录到至该用户下】
passwd 自定义密码
3.删除用户
# 删除用户目录
userdel -r 用户名
# 不删除用户目录
userdel 用户名
4.用户组
# 创建组
groupadd 组名
# 指定组名创建用户
useradd -g 组名 用户名
# 用户切换组
usermod -g 组名 用户名
# 为已存在用户添加新的权限组
usermod -a -G 组名 用户名
-
相关文件
/etc/passwd /etc/shadow /etc/group vim /etc/sudoers # 切换用户不需要密码 [username ALL=(ALL) ALL] vim /etc/pam.d/su # 去掉注释: auth sufficient pam_wheel.so trust use_uid # 将用户加入 wheel组[管理组] ,此后用户 su root 不需要密码
六、运行级别
init [级别]
- 0 停机,默认值不能设为0 无法正常启动
- 1 单用户工作状态
- 2 多用户无网络
- 3 无界面,完全体多用户(有网络)
- 4 未使用,保留状态
- 5 图形化GUI模式
- 6 正常关闭并重启重启,默认值不能设为6 无法正常启动
七、文件目录指令
-
创建目录
# 创建单个目录 mkdir -p /dir1 # 创建多级目录 mkdir -p /dir1/dir2/dir3
-
删除
rmdir 和 rm -rf
-
创建空文件
touch fileName.fileType
-
文件查看
echo cat less more head tail # echo $JAVA_HOME # tail -f 实时 # tail -n 100 filename.xxx
-
输出重定向
# 覆盖 echo "内容" > fileName.xxx # 追加 echo "内容" >> fileName.xxx
-
文件查找
# 文件查找 find find / -name xxx find / -user xxx # 指令查找 which which netstat which reboot # grep 过滤查找,一般与 管道符 " | " 一起使用 常用搭配 wc:(word count 计数) cat fileName.xxx | grep "love you" | wc
-
目录大小统计
du -h --max-depth=0 *
八、rpm以及yum
rpm 用于从互联网下载以及安装包,它包含在某些linux分发版本中,它生成具有rpm拓展名的文件。
-
信息查询
# 过滤查找rpm 软件包 rpm -qa | grep python # 查找软件是否安装 rpm -q python # 详细信息 rpm -qi python # 查询rpm 包中的文件 rpm -ql python # 查询文件所属的软件包 rpm -qf /etc/my.cnf
-
删除
rpm -e firefox-91.4.0-1.el7.centos.x86_64
-
安装
rpm -ivh rpm包全路径名称 # i:install # v:verbose # h:hash 进度条
-
yum
-
yum 是shell 前端软件包管理器,基于rpm包管理,能从指定服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包
# 查看yum服务器是否有安装包 yum list|grep python # yum 安装 yum install python # 基础组件安装 yum groupinstall base
九、文件目录权限管理
-
chmod 修改权限
4 + 2 + 1 = 7 (r + w + x) # u:user g:group o:other a:all chmod g+wx /home/any_file_or_directory chmod 724 /home/any_file_or_directory
-
chown change owner
chown root:root /any_file_or_directory
-
chgrp
chgrp root /any_file_or_directory
十、磁盘挂载
-
显示磁盘分区:
fdisk -l fdisk -f
-
磁盘分区:fdisk /dev/sdb
-
格式化:mkfs -t ext4 /dev/sdb2
-
磁盘挂载: mount /dev/sdb2/ /ranchen [重启会失效]
-
永久挂载,修改:/etc/fstab 文件
# 通过UUID 挂载 UUID=b35480fb-0cf8-45b5-a449-70277f85200b /ranchen ext4 defaults 0 0 # 通过名称挂载 /dev/sdb2 /ranchen ext4 defaults 0 0
-
卸载(取消挂载),重启生效: umount /dev/sdb2
-
磁盘容量
# 总览 df -h # 特定目录 df -h /home # du h:计量单位 a(all):含文件 c(count):怎加汇总 --max-depth=x:深度 du -h du -h --max-depth=1 /home du -hac --max-depth=1 /home tree /opt
十一、网卡编辑
-
查看网卡
ifconfig
-
编辑网卡
vim /etc/sysconfig/network-scripts/ifcfg-ens33
-
网卡信息
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp dhcp-动态分配 static-静态IP DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=30fc8be6-7ebd-420d-baa6-6880c196d039 DEVICE=ens33 # 网卡名 ONBOOT=yes IPADDR=192.168.126.132 # IPv4 地址 PREFIX=24 GATEWAY=192.168.126.2 # 网关 DNS1=8.8.8.8 # DNS IPV6_PRIVACY=no
-
重启网络服务
systemctl restart network
-
主机名
# 显示 hostname # 修改 vim /etc/hostname
-
hosts 映射,支持通过主机名进行网络交互
vim /etc/hosts
-
dns 解析顺序
浏览器缓存 >> dns解析缓存 >> hosts文件映射 >> 查询网段上的dns服务器
十二、进程管理
-
查看进程
# 进程全格式信息 ps -ef # -a:所有进程 -u:显示用户信息 -x:进程运行参数
-
进程树 pstree,yum安装:
-
yum install psmisc
# 进程树 -p: 进程PID -u:用户 pstree -u root pstree -p 1
十三、服务管理
概念: 系统服务 (守护进程)
-
服务管理 systemctl
# 常用 systemctl start|stop|restart|reload|status 服务名 # 重启mysql systemctl restart mysqld # 查看mysql服务开启启动状态 systemctl list-unit-files grep | mysqld # 设置mysql开启自启 systemctl enable mysqld # 关闭开机自启 systemctl disable mysqld # 查看是否自动启动 systemctl is-enbaled mysqld
-
防火墙服务:firewalld
# 查看端口是否开放 firewall-cmd --query-port=8080/tcp firewall-cmd --query-port=8080/udp # 开放端口 firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --permanent --add-port=8080/udp # 关闭端口 firewall-cmd --permanent --remove-port=8080/tcp firewall-cmd --permanent --remove-port=8080/udp # 重新加载 firewall-cmd --reload
-
动态监控:top
# shift + P cpu排序 # shift + M 内存排序 # shift + N 进程号排序
-
系统网络状况:netstat
# -an 按序排列输出 -p:输出进程信息 netstat -anp | grep 3306
十四、shell 脚本编写
-
vim love_you.sh
#!/bin/bash echo "I love you"
-
sh love_you
-
shell 变量:系统变量、用户自定义变量
#!/bin/bash # 定义变量 BOKERR_HOME=/home/bokerr # 撤销变量 unset BOKERR_HOME # 静态变量,不能撤销 readonly BOKERR_HOME=/home/bokerr
-
变量赋值
-
vim bokerr.sh
#!/bin/bash IDATA="2022-01-05" echo $IDATA IDATA=`date` # 命名执行结果赋值变量 echo $IDATA IDATA=$('pwd') # 命名执行结果赋值变量 echo $IDATA
-
sh bokerr
- 环境变量
-
export 将shell 变量输出为环境变量[全局变量]
export IDATA=/home/bokerr
-
source 刷新配置文件,让其立即生效
source /etc/profile
-
echo 将变量输出的控制台
echo $JAVA_HOME
-
位置参数变量
#!/bin/bash echo $0 # 命令本身:bokerr.sh echo $1 # 参数-1: 2 echo $2 # 参数-2: 1 echo $* # 全部参数视为整体 echo $@ # 代表全部参数,但是每个参数区分对待 echo $# # 代表参数个数
- sh bokerr.sh 2 1
-
预定义变量,shell 本真自带变量
echo $$ # 进程号 echo $! # 后台运行的最后一个进程号 echo $? # 最后一次执行的命令的返回状态
-
运算符
IDATA=$((3 + 8)) echo $IDATA IDATA=$[3+9] echo $IDATA IDATA=`expr 3 + 10` # 支持 \* (乘:转义加星号) / (除) % (取余) echo $IDATA
-
条件判断&流程控制
VA=2 VB=3 if [ $VA -lt $VB ] then echo "aaaa" elif [ $VA -le $VB ] then echo "bbbb" elif [ $VA -eq $VB ] then echo "cccc" fi a.整数比较 lt -little le -little equal # eq -equal # gt -大于 # ge -大于等于 # ne -不等于 # b.文件权限 -r -w -x # c.判断文件类型 -f # 常规文件 -e # 文件存在 -d # 是一个目录
-
read获取输入
#!/bin/bash # -t 10: 等待10秒 read -t 10 -p "input some words:" IDATA echo $IDATA
-
系统函数
-
basename 返回完整路径中最后一个 / 之后的内容[文件名]
IDATA=`basename /home/rsy/love.md` echo $IDATA --- 输出: love.md IDATA=`basename /home/rsy/love.md .md` echo $IDATA --- 输出: love
-
dirname 返回完整路径中最后一个 / 之前的内容[文件路径]
-
自定义函数
function addNumber(){ SUM=$[$n1+$n2] echo "SUM=$SUM" } read -p "n1=" n1 read -p "n2=" n2 addNumber $n1 $n2
-
执行 mysqldump 备份mysql库
#!/bin/bash BACKUP=/home/uData/bak_home DATENOW=$(date +%Y-%m-%d_%H%M%S) echo $DATENOW HOST=localhost DB_USER=root DB_PASS=bokerr.com DB_SCHEMA=supervise # create backHome [ ! -d "${BACKUP}/${DATENOW}" ] && mkdir -p "${BACKUP}/${DATENOW}" # back up the mysql database name of `$DB_SCHEMA` mysqldump -u${DB_USER} -p${DB_PASS} --host=${host} -q -R --databases ${DB_SCHEMA} | gzip > ${BACKUP}/${DATENOW}/$DATENOW.sql.gz # move to tar.gz then delete directory cd ${BACKUP} tar -czvf $DATENOW.tar.gz ${DATENOW}/ rm -rf ${DATENOW}/ # finally delete back over ten days find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \; echo "back database $DB_SCHEMA success!"
十五、定时任务
-
crontab -e
# 定时每天23点30分执行脚本 30 23 * * * ./home/uData/rsy.sh
-
crontab -l 显示所有任务
-
crontab -r 删除所有任务
十六、ssh
1.生成ssh秘钥
ssh-keygen
- 发送公钥配置ssh免密:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xx.xx.xx.xxx