/etc 配置文件
/boot linux 启动相关文件
/bin 命令
/proc 系统映射
/srv 系统
/sys 系统
/tmp 缓存
/dev 设备管理器
/media 比如u盘设备
/mnt
/opt 一般安装文件放这里 约定俗成
/usr/local/ 安装额外的软件安装的目录
/var 比如日志 可变的
/selinux 需要启动 相当于360 保证安全的
//开关机
重启 reboot
关机 shutdown -h now
保存内存数据到磁盘 sync
vi vim
yy拷贝 p 黏贴 当前行 2 yy p 拷贝当前2行 并黏贴到下面
dd 删除当前行 2 dd 删除当前2行
G 定位到最后一行 gg 定位第一行
15 shift + g 定位到15行
u 撤回
命令行
:/ 或者 / 关键词 查找关键词
1、进入vi中,先按下"ESC"跳转成命令输入模式
2、输入斜杠“/”,这时屏幕会跳转到底部,输入栏出现"/"
3、输入你需要查找的关键字,回车
4、如果要继续查找关键字,输入n
5、向前查找,输入N(大写)
:set nu 显示行号 :set nonu 不显示行号
用户
用户权限
su - name 切换用户 权限 从小切到root 要输密码 从root 切到小不用
logout exit
useradd gzh 自动创建一个gzh用户 自动创建目录/home/gzh
useradd -d /home/test jj
passwd gzh 指定/修改密码
userdel gzh 删除gzh 需要切换root和gzh 不在线 保留/home/gzh 目录
userdel -r gzh 删除gzh 和他的目录
id 用户名 查看用户
who am i 查看当前用户是谁
pwd 当前用户所在目录
用户组
groupadd 组名
groupdel 组名
useradd -g 组名 用户名 添加分组用户
usermod -g 组名 用户名 切换用户分组
/etc/passwd 用户的配置文件
/etc/shadow 口令的配置文件
/etc/group 组的文件
运行级别
# 查看当前运行级别
systemctl get-default
# 设置当前运行级别为3 (开机为命令行模式)
systemctl set-default multi-user.target
# 设置当前运行级别为5 (开机为图形界面) 如果切换没效果 是没装图形化界面
systemctl set-default graphical.target
绝对路径 / 从根目录开始往下 相对路径 当前目录
cd ~ 回到自己家目录 ~
cd / 回到根目录
创建目录
mkdir /home/gzh 一级目录
mkdir -p /home/ddd/aaa 多级目录
删除目录
rmdir 要删除的空目录
rm -rf 删除非空多级目录
rm -f 文件名 -f 删除不提示
touch 创建一个空文件
cp 文件名 要拷贝的目录 cp -r /home/ddd /opt/ 拷贝目录
\cp -r /home/ddd /opt/ 拷贝目录 强制覆盖
mv 原地重命名 不同地址 移动
cat 查看文件不修改 -n 显示行号
less 动态查看 用于读取大文件
head -n 5 文件名 查看文件前5行
tail -n 5 文件名
tail -f 显示最后10行 实时监控
echo $HOSTNAME 输出HOSTNAME
echo hello > my.txt 覆盖写入
echo hello >> my.txt 追加写入
ls -l /home > /home/home.txt 将输出信息存入到 home.txt 里面
时间
cal 查看日历 date 显示当前日期
date -s "2022-11-28 16:00:00" 修改时间
cal 2020 显示2020 年的日历
ln -s /root/ /home/myroot 将root 目录放到 /home/myroot下面 (相当于是快捷方式)
unlink 和 rm 都可以删除
查找命令
find 查询区域 类型 具体的值
find / name 按名字查找 查询区域 类型
-size +200M 大于200M的文件
-user 按用户名查找
grep -r 'hello' /home 查找目录或者文件里面有没有匹配字段 -r 递归
locate
没有要安装 yum install mlocate
原理 使用之前新建索引 updatedb -> locate 你要查找的文件名
which ls 查看命令在哪个目录
grep 过滤查找 -i 忽略大小写
cat home.txt | grep -n "root" 查找home.txt 下 过滤出root 并显示行号
= grep -n "root" home.txt
查看目录大小
du -sh /home
解压缩 文件
gzip b.php 压缩
gunzip b.php.gz 解压
解压缩 文件夹
zip zip -r myhome.zip /home/ 把home目录及子文件压缩成myhome.zip
unzip unzip -d /opt/tmp myhome.zip
把myhome.zip 解压到/opt/tmp 目录下
tar
tar [选项] xxx.tar.gz 打包的内容
选项 -c 产生.tar 打包文件
-v 显示详细信息
-f 指定压缩后的文件夹
-z 打包同时压缩
-x 解压.tar文件
tar -zcvf demo.tar.gz hello.txt b.php 把 hello.txt 和b.php 打包到demo.tar.gz 里面
tar -zcvf myhome.tar.gz /home 将/home 目录打包成myhome.tar.gz
tar -zxvf tar.tar.gz 将文件解压到当前目录
tar -zxvf /home/tar.tar.gz -C /opt/ 把/home下面的tar.tar.gz 解压到 /opt下面
用户组
groupadd monster 添加组
useradd -g monster fox 将fox 添加到monster里面
chgrp root test.txt 给文件修改组
drwxr-xr-x 2 fox root 6 11月 28 19:51 foxdemo
0 l 链接
d 目录
c 字符设备文件 鼠标键盘
b 块设备 硬盘
1-3 所有者权限
4-6 所有组权限
7-9 其他组权限
r 读 w写 x执行
作用到文件 r 可查看 w 修改 不能删除 x 可执行
作用到目录 r 可查看 w 可修改 创建 删除 重命名 x 可以进入目录
2 有两个文件
fox 用户
root 组
6 字节
11月 28 19:51 最后修改的日期
foxdemo 文件名或目录名
r 4 w 2 x 1 rwx =4+2+1 = 7
chmod -R 777 test/
usermod -g police xh 改变xh分组
crond 任务调度
crontab -e 编辑
-l list
-r 删除
*/1 **** ls -l /etc/ >> /tmp/to.txt 每分钟执行一次
1 小时的第几分钟 0-59
2 一天的第几个小时执行 0-23
3 一个月的第几天 1-31
4 一年的第几个月 1-12
5 一个礼拜的星期几 0-7 (0和7都代表周末)
/ 每隔多久执行
执行脚本
新建脚本 /home/root/my.sh
date >> /tmp/date
cal >> /tmp/date
给脚本加执行权限
chmod u+x my.sh
执行脚本 ./my.sh
任务执行 */1 * * * * /home/root/my.sh
at 定时任务 只执行一次
ps -ef | grep atd 检测在不在运行
at now + 2 minutes 2分钟后执行
date > /home/root/log 写完之后 按ctrl + d 两次退出
atq 显示未执行的任务列表
atrm id 删除任务
分区 和挂载
lsblk 查看 -f
df -h 查看磁盘利用率
du -h /home 目录使用情况
tree /home 树状显示
主机名配置 hostname
/etc/hostname 在这个文件下设置 设置后重启生效
windows C:\Windows\System32\drivers\etc\hosts
linux /etc/hosts
用户输入网站域名解析过程
浏览器缓存 -> dns 解析器缓存 -> host文件 ->域名dns服务器
windows操作
查看dns缓存 ipconfig/displaydns
清理dns缓存 ipconfig/flushdns
查看进程
ps -aux | grep sshd 查看现在有谁登录了
ps -agft 查看当前目录下进程
查看端口是否被占用
netstat -anp |grep 9501
终止进程
kill -9
pstree -p 显示进程号 -u
后台进程/守护进程/服务
service
service start stop restart reload status
= systemctl
ls -l /etc/init.d 就可以查看运行的服务
chkconfig --list 查看服务在不同运行等级是否开启
chkconfig --list | grep network 匹配
chkconfig --level 5 network on / off 开关
systemctl
ls-l /usr/lib/systemd/system
查看防火墙
ls -l /usr/lib/systemd/system | grep fire
查看防火墙是否开启
systemctl is-enabled firewalld
查看运行状态
systemctl list-unit-files | grep firewalld
查看防火墙状态
systemctl status firewalld
关/开防火墙
临时有效
systemctl stop / start firewalld
真正有效
systemctl enable / disable firewalld
netstat -anp | more
windows 下
telnet 192.168.109.131 80
firewall指令
打开端口 firewall-cmd --permanent --add-port=25/tcp 端口号/协议
关闭端口 firewall-cmd --permanent --remove-port=25/tcp
重载 firewall-cmd --reload
查询 firewall-cmd --query-port=25/tcp
top 命令 和ps 差不多 但top 是实时更新
-P 按cpu排序 M 内存 u 名字 user k kill 等级 9
netstat 监控
-an 按一定顺序
-p 显示哪个应用在调用
netstat -an | more 网络状态
RPM 软件包
rpm -qa | grep 查询是否安装包
rpm -e 卸载
yum shell 前端软件管理包 基于RPM 包管理 能指定服务器自动下载和安装,也能自动安装对应的依赖
查询包
yum list | grep
安装命令
yum install
环境变量
echo $PATH
vim /etc/profile =》 export 变量名=变量值
source /etc/profile 变量文件 //刷新
shell
vim helloworld.sh
chmod u+x helloworld.sh
执行
./helloworld.sh = /home/root/helloworld.sh = sh helloworld.sh 不用给权限
系统变量 可以通过 set 查看
比如 $HOME $PWD $SHELL $USER
A=100 #=后面变量不能有空格
echo $A #输出变量要加$
echo "a=$A" 解析
echo 'a=$A' 不解析
#撤销变量
unset A
echo"A=$A"
#声明静态变量 静态变量不能被删除
readonly B=2
echo "B=$B"
unset B
A=`date` 将命令的结果赋值给变量A 要加反引号 = A=$(date)
位置参数变量 可获取命令行参数
比如
vim wzcs.sh
#!/bin/bash
echo "$0 $1 $2" #$0 是命令本身 $1参数1 $2 参数2
echo "$*" #所有参数
echo "$@" #所有参数
echo "$#" #参数个数
sh wzcs.sh 1 2
wzcs.sh 1 2
1 2
1 2
2
预定义变量
$$ 当前脚本的进程号 pid
$! 后台最后运行的进程 pid
$? 执行结果
运算符 + - * / % 加 减 乘 除 取余
#!/bin/bash
RES1=$[(2+3)*2] //10
echo $RES1
RES2=$[$1+$2] //传参
echo $RES2
sh oper.sh 10 20
10
30
条件判断
字符串 =
整数比较
-lt 小于
-le 小于等于 little equal
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
文件权限判断
-r 有读权限
-w 有写权限
-x 有执行权限
按文件类型判断
-f 文件存在并且是常规文件
-e 文件存在
-d 文件存在且是一个目录
demo
#!/bin/bash
if [ "qqok" = "ok" ]
then
echo "equal"
else
echo "not equal"
fi
if [ 23 -gt 22 ]
then
echo "equal"
fi
if [ -f /home/root/test.txt ]
then
echo "存在"
else
echo "不存在"
fi
流程控制
#!/bin/bash
if [ $1 -ge 60 ]
then
echo "及格"
elif [ $1 -lt 60 ]
then
echo "不及格"
fi
命令 sh checkpoint.sh 60
case
./checkweek.sh 1
#!/bin/bash
case $1 in
"1")
echo "礼拜一";;
"2")
echo "礼拜二";;
"3")
echo "礼拜三";;
"4")
echo "礼拜四";;
*)
echo "五六七";;
esac
for 循环
for i in "$*"
do
echo "num is $i"
done
echo "*************************"
for j in "$@"
do
echo "num is $j"
done
#!/bin/bash
SUM=0
for(( i=1; i<=$1; i++ ))
do
SUM=$[$SUM+$i]
done
echo "和是 $SUM"
while 循环
#!/bin/bash
SUM=0
i=0
while [ $i -le $1 ]
do
SUM=$[$SUM+$i]
i=$[$i+1]
done
echo "$SUM"
数据库备份
#!/bin/bash
#备份目录
BACKUP=/data/backup/db
#当前时间
DATETIME=$(date +%Y-%m-%d_%H%M%S)
#数据库地址
HOST=localhost
#数据库用户名
DB_USER=root
#数据库密码
DB_PW=root
#要备份的数据库
DATABASE=school
#创建备份目录,如果不存在就创建
[ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"
#备份数据库
mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/$DATETIME.sql.gz
#将文件处理成 tar.gz
cd ${BACKUP}
tar -zcvf $DATETIME.tar.gz ${DATETIME}
#删除对应的备份目录
rm -rf ${BACKUP}/${DATETIME}
#删除10天前的备份文件
find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;
日志管理
保存目录
/var/log
配置
/etc/rsyslog.conf
boot 系统启动日志
cron 系统启动日志
lasllog 记录用户最后一次登录 用lastlog 命令查看
mailog
message
secure 安全 登录信息 添加用户
ulmp who查看当前用户
ps aux | grep "rsyslog" | grep -v "grep" grep -v 反向匹配
查看是否启动
systemctl list-unit-files | grep "rsyslog"
日志轮替
/etc/logrotate.conf
linux 计划任务 -> 日志轮替
内核升级
uname -a 查看当前内核版本
yum info kernel -q 检测内核版本 显示可以升级的内核
yum update kernel 升级内核
yum list kernel -q 查看已经安装的内核
重启生效
linux备份 和恢复
yum -y install dump
yum -y install restore
标签:常用,查看,tar,echo,sh,linux,home,mark,目录 From: https://www.cnblogs.com/gooo/p/17277016.html