一、走进Linux
服务器类型:塔式服务器、刀片式服务器、机架式服务器
服务器基建:云服务器、物理服务器、虚拟服务器、容器
操作系统:centos、ubuntu、debain、欧拉、龙蜥、银河麒麟、中标麒麟
# 修改时区
timedatectl set-timezone Asia/Shanghai
/etc/localtime
# 日期时间
date 查看时间
date -s "年-月-日 小时:分钟:秒" 修改时间
date +"%F %T" 格式化打印时间 "%Y-%m-%d %H:%M:%S"
date -d "+1 minute" 指定相对当前时候的某一个时间
# 同步时间
ntpdate ntp.aliyun.com # time.windows.com
# 打印所在目录 pwd
pwd
# 查看某个目录下有什么内容
ls # -a|A 查看隐藏文件 -l 查看详细信息 -i 查看inode号 -h 人性化显示 -d 查看目录本身
# 切换目录
cd 目标地址 # . 当前目录 ..上一级目录 ~或不跟 家目录 - 切换到这里之前的目录
# 创建文件
touch 文件路径
# 删除文件
rm 文件或目录的路径 # -r 删除目录 -f 强制删除
# 关机和重启
init 0 或 poweroff
init 6 或 reboot
# 别名
alias 查看别名
alias 命令="需要设置别名的命令" # 设置别名
unalias 取消别名
二、文件管理
目录结构 Linux 单根、Windows 多根
绝对路径 ls /etc/a.txt 相对 cd /etc/ ; ls a.txt
文件类型 - 普通文件 l 软链接 d 目录 b 设备
常用指令
vim
用户和组
2.1 常用命令
# 历史命令记录
history
# 打印信息到终端
echo "需要打印的信息" # -n 取消换行 -e 特殊字符有意义
echo "text" > a.txt # > 覆盖到文件中 >> 追加到文件中
# 创建目录
mkdir 路径 # -p 创建连级目录 -v 显示详细信息
# 复制
cp 源路径1[ 源路径2 源路径3] 目标路径 # -r 复制目录
# 移动
mv 源路径1[ 源路径2 源路径3] 目标路径 # mv 如果在修改时指定新的名字,也可以用来给文件改名
# 查看文件内容
cat 文件路径1[ 文件路径2 文件路径3] # 查看全部 -n 查看时显示行号
tail # 后面的部分 -n 行数 -f 实时查看 -F 包含-f功能,也可以等待文件创建 * 表示查看当前目录下的所有文件
head # 前面的部分 -n 行数
# 过滤文件内容
grep "需要过滤的关键字" 文件路径 # -r 递归过滤,可以过滤当前路径中的所有文件
2.2 vim
4个模式:
默认模式(命令模式) # 进入方法:1、vim文件时默认进入这个模式或在其他模式下esc
编辑模式 # 进入方法 在命令模式下 i I a A o O
扩展命令模式 # 进入方法 在命令模式下 :
可视化模式 # 进入方法 在命令模式下 ctrl + v 或 shift + v
:wq 保存退出
2.3 用户和组
用户组相关文件
/etc/passwd 用户信息存放文件
/etc/group 创建用户时会自动创建同名组,组信息的存放文件
/etc/shadow 密码存放文件
/home/目录 用户家目录
/var/mail 用户邮箱
/var/spool/at 用户一次性计划任务
/var/spool/cron 用户计划任务
创建用户组
useradd 用户 # -s 指定登录shell -g 指定主属组 -G 指定附属组
groupadd 组
修改用户组
usermod -aG 组名 用户 # 追加用户到组
usermod -g 组名 用户 # 给用户修改主属组
groupmod -g 组 # 修改组信息
passwd 用户 # 修改用户密码,不写用户修改自己 -l 锁定用户 -u 解锁用户
gpasswd 组 # -a 添加用户到组 -M 指定组内成员 -d 从组中删除用户
三、权限管理
基本权限UGO
高级权限
提权方法
特殊权限
隐藏权限
3.1 基本权限
U user G group O other
R 4 读 W 2 写 X 1 执行
[root@localhost ~]# ll
-rw-r--r-- 1 root zhangsan 93605 Mar 15 09:29 a.txt
普通文件 用户-读写6 组-读4 其他人-读4 主-root 组-张三
# 设置权限 -R 递归设置
chmod 742 文件
chmod u=rwx,g=r,o=w 文件 # a表示所有角色
chmod u+r,o-w 文件
# 设置属主属组
chown 主:组 文件 # : 也可以写成.
chown 主 或 chown :组 # 只改其中一个
su 切换用户 # 退出是exit或ctrl + d
3.2 高级权限
suid # 给命令赋权,该命令所有用户使用将会像root权限一样
chmod u+s
sgid # 给目录设置,该目录中所有创建的文件会继承目录的属组
chmod g+s
sticky # 给目录设置,该目录中只有自己或root可以删除自己的文件,其他用户即便拥有删除权限,也不能删除
chmod o+t
3.3 提权
1、chmod u+s #命令提权
2、visudo # 用户提权
3、setfacl # 给某个用户针对某个文件提权 # getfacl 查看
3.4 隐藏权限
# 查看
lsattr
# 设置
chattr +i # i是不可读写 a是可追加
chattr -i
四、进程
查看进程
实时查看进程
处理进程
4.1 查看进程
1、查看所有进程
ps aux
ps -ef
2、查看网络进程
ss -anlp # -tnlp -unlp
netstat 参数一样
3、lsof
根据文件或端口查看对应的进程
4、w
查看当前登录的用户终端进程
5、pidof pgrep
根据进程名称找到所有进程pid
4.2 实时查看进程
top
htop
4.3 处理进程
# 杀死进程
-1 重新加载 -9 强制杀死 -15 正常杀死 -18 恢复 -19 挂起
kill 根据pid
pkill 根据名字
killall 根据pid
jobs 查看后台运行的进程
# 前后台
进程运行时
启动命令 & # 放到后台
bg % 工作号 # 后台运行
fg % 工作号 # 前台运行
进程运行中
ctrl + z # 放到后台,并停止
bg % 工作号 # 后台运行
fg % 工作号 # 前台运行
常用指令
free -m # 查看内存使用 -k 千字节 -g g字节 -h 人性化
uptime # 查看时间和cpu平均负载
rz # 上传
sz # 下载
五、管道和重定向
管道
重定向
xargs
5.1 重定向
# 文件描述符
0 标准输入
1 标准正确输出
2 标准错误输出
& 混合输出
1>&2 正确到错误管道
2>&1 错误到正确管道
# 丢弃输出
ls / &>/dev/null
# 丢弃错误
ls / 2>/dev/null
# 分离
ls / /hello 1>a.txt 2>b.txt
> 覆盖 >> 追加
# 输入重定向
cat <<EOF # 输出到屏幕
hello
EOF
cat > a.txt <<EOF # 覆盖到文件a.txt
hello
EOF
5.2 管道
前面的命令执行的结果中的正确输出 | 以标准输入的方式接受前面的正确输出
cat /etc/passwd | grep root
xargs 指令 # 将接受管道前面推送的所有输出作为参数,按照规律交给后面的命令
echo -e "1.txt\n2.txt\n3.txt" | xargs -i touch {} # -i 的分割符必须是换行
echo "1.txt 2.txt 3.txt" | xargs -n 1 sh -c 'touch $0' # 第二种方法,-n可以决定每次接受几个参数
六、磁盘管理
分区方式
文件系统
挂载
逻辑卷
raid 磁盘阵列
6.1 分区方式
MBR 4个主分区或3个主分区+1个扩展分区(逻辑分区) 不超过2T
GPT 128个主分区 可以超过2T
6.2 文件系统
xfs
ext
# 格式化
mkfs.xfs
mkfs.ext4
mkswap
# 挂载
临时
mount 设备 挂载目录 # -t xfs ext4 nfs -o 挂载模式 rw,remount
永久挂载
/etc/fstab
/etc/rc.local # 记得加执行权限
查看所有磁盘设备的信息
lsblk
查看当前已挂载的磁盘和使用情况
df -Th
查看目录或文件的大小
du -sh
6.3 逻辑卷
# 创建
1、添加磁盘
2、将磁盘制作为物理卷
pvcreate
3、将物理卷加入到卷组,没有可以创建
vgcreate
vgextend
4、创建逻辑卷
lvcreate
扩容
当卷组有剩余空间
1、扩容逻辑卷
lvextend
2、扩容文件系统
resize2fs
xfs_growfs
当卷组没有空间
1、添加磁盘
2、将磁盘制作为物理卷
pvcreate
3、将物理卷加入到卷组
vgextend
4、扩容文件系统
resize2fs
xfs_growfs
6.4 磁盘阵列
raid0 条带卷
读写:快 数据安全:低 磁盘利用率:100%
raid1 镜像卷
读写:读快 数据安全:高 磁盘利用率:50%
raid5 带有奇偶校验的条带卷
读写:一般 数据安全:中 磁盘利用率:n-1/n
七、文件查找-打包压缩
文件查找
文件过滤
打包tar c、压缩 tar jJz
软硬链接
7.1 文件查找
find 要查找的文件路径 模式
维度:
时间 -atime -mtime -amin -mmin
大小 -size
名字 -name
类型 -type
权限 -perm
例:查找大于50M的以.txt结尾的文件
find / -name "*.txt" -a -size +50M # -a 是和 -o 是或
查找后的动作
find / -name "*.txt" -a -size +50M -ls # 查看详细信息
find / -name "*.txt" -a -size +50M -exec cp {} /tmp \; # 查找后拷贝
查找命令的位置
which
whereis
7.2 文件过滤
grep 关键字 文件 # -r 递归
7.3 打包压缩
归档 + 压缩(gzip|bzip2|xzip)
tar cvf 压缩包.tar 文件
tar cvzf 压缩包.tar.gz 文件
tar cvjf 压缩包.tar.bz2 文件
tar cvJf 压缩包.tar.xz 文件
解压缩
tar xvzf 压缩包 -C /etc # -C 指定解压缩的目录
7.4 软硬链接
软链接
链接文件和源文件的inode号不相同
软链接的目标可以是目录
软链接可以跨文件系统配置
当源文件删除后,软链接失效
硬链接
链接文件和源文件的inode号相同
硬链接的目标不可以是目录
硬链接不可以跨文件系统配置
当源文件删除后,硬链接不失效
!!!!!!注意,删除软链接目录时,后面不要加/,rm -rf 软链接目录
八、软件包管理
软件包的类型
软件的安装方式
8.1 软件包类型
软件包类型 .rpm
# 查看当前系统中所有安装的软件包
rpm -qa # 安装过的包
8.2 软件包安装方式
rpm 安装
rpm -ivh 包 # 安装
rpm -e 包 # 卸载
rpm -ql 包 # 列出所有安装的内容
rpm -qf 文件 # 查看某文件是哪个包安装的
rpm -qc 包 # 查看某个包都有哪些配置文件
yum 安装
yum install # 安装
yum reinstall # 重新安装
yum remove|erase # 卸载
yum clean all # 清空缓存
yum makecache # 创建新的缓存
yum repolist # 查看yum源信息
yum list # 查看源里面所有的包
yum provides # 查看某个命令是哪个包提供的
yum search # 在包的介绍中找关键字
yum history # 查看操作历史
yum history undo 编号 # 回滚
源码安装
三部曲
1检查
2编译
3安装
九、计划任务和日志
一次性计划任务和循环计划任务
日志服务和日志轮转
9.1 一次性计划任务
时间表达式有两种
1、具体的时间点
teatime noon midnight tommorrow
2022年的5月15日下午4点
at 4PM 2024-5-15
2、根据当前时间来定义的未来时间
at now +5minute
at 4PM tommorrow
使用方法1
at 时间表达式
> 任务
> ctrl + d 结束
使用方法2
at 时间表达式 < 脚本任务
存放位置:
/var/spool/at
9.2 循环性计划任务
操作方法
crontab -l # 查看
crontab -e # 编辑
crontab -r # 删除
crontab -u # 指定用户,需要配合其他参数完成
表达式
* * * * * 任务
分 时 日 月 周
符号
* 每
/ 隔
- 到
, 和
*/2 3 10-15 3,5,8 *
存放位置
/var/spool/cron
9.3 日志和日志轮转
日志服务 rsyslog
/etc/rsyslog.conf
日志轮转服务 logrotate
/etc/logrotate.d/ 对应修改某个日志的轮转文件
十、web服务器
虚拟主机的维度
基于端口
基于域名
基于ip
web服务器只能处理静态资源,动态资源需要后端进行处理
十一、常用的配置文件
网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-ens33
selinux配置文件
/etc/sysconfig/selinux
用户信息存放文件
/etc/passwd
本地解析文件
/etc/hosts
启动模块配置文件
/etc/grub2.cfg
ftp配置文件
/etc/vsftpd/vsftpd.conf
挂载文件
/etc/fstab
开机执行文件
/etc/rc.d/rc.local
yum仓库源存放位置
/etc/yum.repos.d
yum配置文件
/etc/yum.conf
临时dns修改配置文件
/etc/resolv.conf
邮箱配置文件
/etc/mail.rc
系统级计划任务
/etc/crontab
日志轮转配置
/etc/logrotate.conf
/etc/logrotate.d
ssh配置文件
/etc/ssh/sshd_config
启动配置目录
/etc/systemd/system
apache配置文件目录
/etc/httpd/conf/httpd.conf
nginx配置文件目录
/etc/nginx/nginx.conf
mysql配置文件
/etc/my.cnf
十二、常用端口
20 #FTP传输
21 #FTP连接
22 #SSH
23 # TELNET 终端网络
25 #SMTP 邮件 465 587
53 #DNS
67 #DHCP 服务端
68 #DHCP 客户端
80 #HTTP
110 #POP3 邮局协议版本3
123 #NTP
137 #NetBIOS
143 #IMAP
161 #SNMP 监听端口
162 #SNMP Trap端口
443 #HTTPS
3306 #mysql
9000 #php