1. 指令操作

1. 文件操作

(1). cd
  • 切换指令
  • cd ~  //进入用户家目录
    cd ~用户名  //进入用户家目录
    cd -  //进入上次所在目录
    
(2). ls
  • 显示目录下的文件
  • 参数 含义
    la 全部列出,包括隐藏
    lR 递归且列表列出
    ll 列表列出文件
(3). mkdir/rmdir
  • 创建文件夹
  • mkdir -p test1/test2  //如果test1目录不存在,则自动创建
    mkdir -m=777 test  //赋予test文件夹777权限
    rmdir test  //删除文件夹
    
(4). touch
  • 创建或修改文件
  • 参数 含义
    -a 修改访问时间(数据修改时间会跟随变化)
    -c 修改时间参数(状态修改时间、访问时间、数据修改时间)
    -d 后跟预修订的日期(只修改访问时间、数据修改时间,格式:"2024-07-15 12:32:56")
    -m 只修改数据修改时间
    -t 后跟预修订访问时间及状态修改时间(YYMMDDhhmm)
    -r 复制指定文件的时间戳给新文件 touch -r 1.txt test.txt
(5). stat
  • 查看文件状态
  • stat filename.txt
    
(6). cat
  • 查看文件内容
  • cat test1.txt  //查看test1.txt内容
    cat test1.txt test2.txt > test3.txt  //将test1.txt和test2.txt的内容合并且覆盖显示到test3.txt中 
    
(7). rm
  • 删除文件或目录
  • 参数 含义
    -f 强制删除
    -i 提示删除
    -r 递归删除
(8). more
(9). head
  • 查看文件前几行
  • 参数 含义
    -n K 显示前K行,默认10行
    -c K 显示前K字节
    -v [文件名] 显示文件名
(10). tail(同head)
(11). grep
  • 筛选作用

  • 参数 含义
    -c 列出包含内容的行数
    -w 把包含内容作为字符查找(精确查找)
    -i 忽略大小写
    -l 列出带有匹配行的文件名
    -n 列出行号
    -v 列出没有匹配的行
    grep -r 'pattern' /var/log/  //递归搜索目录中包含指定字符串的文件
    find / -type f -newermt 2024-03-18 ! -newermt 2024-03-19 -exec grep -H "flag" {} \;
    
(12). tar
  • 打包及解包

  • tar -vcf test.tar test  //将test目录打包成test.tar
    
  • 参数 含义
    -c 将多个文件或目录打包 (打包时用)
    -C 压缩时能够压缩其他目录下的文件
    -f 指定压缩包的文件名
    -v 显示打包或解包具体过程(可视化)
    -t 只查看tar包中有那些文件或目录
    -x 解包.tar文件
    -z 使用gzip压缩(打包文件常跟后缀.gz)
    -j 使用bzip2压缩(后跟.bz)
    -J 使用xz压缩(后跟.xz)
    --exclude 压缩时排除文件或目录
    1. 压缩多个文件或目录并且制定压缩包名
    tar -cf archive.tar file1 file2 directory/
    
    2. 解压压缩包
    tar -xf archive.tar
    
    3.查看压缩包内容
    tar -tf archive.tar
    
    4. 使用gzip压缩
    tar -zf archive.tar.gz file1 
    
    5. 如何在压缩文件时添加其他目录的文件
    tar -cf archive.tar -C /path/to/directory file1 file2
    
(13). zip
  • 压缩文件或文件夹
  • zip -vr test.zip test //将test目录打包为test.zip
    
  • 参数 含义
    -r 递归
    -m 压缩文件后,删除原始文件
    -v 可视化
    -d 删除压缩包里面的某项文件
    -u 往压缩包里面添加新文件
    -q 压缩时不显示命令执行过程
(14). unzip
  • 解压zip压缩包
  • unzip test.zip  //将test.zip解压
    
  • 参数 含义
    -d 指定解压目录
    -n 不覆盖已存在文件
    -l 显示压缩包内容
    -v 显示压缩包更多数据
    -t 检测是否损坏
    -x a.txt 解压文件,但不解压a.txt文件
(15). find
  • 查找文件
  • find / -name "*.txt"   //查找.txt文件
    
  • 参数 命令
    ~ 表示$HOME目录
    . 表示当前目录
    / 表示根目录
  • 参数 命令
    -name 按照名字查找 可用通配符*来查找
    -operm 安装权限查找
    -prune 不在当前指定目录寻找
    -user 文件属主来查找
    -group 文件所属组来查找
    -nogroup 查找无有效所属组的文件(后不跟参数)
    -nouser 查找无有效属主的文件(后不跟参数)
    -type 按照文件类型查找(f:文件,d:目录)
    -exec 指定执行的命令
(16). cp
  • 复制文件

  • 参数 含义
    -r 递归复制
    -i 带有提示的复制
    -f 强制复制,直接覆盖
    cp file1.txt file2.txt  //复制file1.txt文件为file2.txt
    cp file1.txt file2.txt /home/centos/Desktop  //将两个文件复制到指定路径
    

2. 其他操作

kill -9 [pid]  //结束进程
lsof -i:80  //查看80端口的进程
ps -aux //获取Linux上的进程信息 a:所有,u:用户
指令 含义
pwd 显示当前目录
hostname 显示当前主机名及用户名
whoami 显示当前用户
sync 把内存的数据同步到磁盘
halt 立刻关机(需要root权限)
poweroff 立刻关机
shutdown -c:取消前一个关机指令 -h:关机 -r:重启(后可跟24时制,分钟,now)
init 0:关机,3:纯文本模式,5:图像模式,6:重新启动

3. 系统服务操作

systemctl start httpd  //启动httpd服务
systemctl enable httpd  //开启httpd服务
systemctl status httpd  //查看httpd服务的情况

2. 用户与用户组

1. 用户

(1). 概念
(2). 分类
  • 普通用户

  • 超级用户

  • 虚拟用户:不能登录系统,方便于管理系统,如****bin、adm、nologin、nobody用户等

    3. 相关命令

    (1). useradd
    选项 含义
    -m 创建用户主目录
    -d 指定用户主目录
    -s 指定用户默认shell
    -g 指定用户主组
    -G 指定用户附加组
    1. 添加新用户 john,并创建主目录 /home/john,指定默认 shell 为 /bin/bash。
    useradd -m -d /home/john -s /bin/bash john
    
    2. 添加新用户 alice,并将其添加到 developers 和 admin 组。
    sudo useradd -m -G developers,admin alice
    
    (2). usermod
    选项 含义
    -s 修改用户默认shell
    -d 修改用户的主目录
    -g [组名] [用户名] 修改用户主组
    -G 修改用户附加组
    -l 修改用户名
    -L 锁定用户账户
    -U 解锁用户账户
    -e 设置用户账户的过期日期
    -c 修改用户的注释
    1. 将用户 john 的默认 shell 修改为 /bin/zsh
    usermod -s /bin/zsh john
    
    2. 将用户mike的主目录从/home/mike修改为/data/mike,并将现有主目录内容移动到新目录
    usermod -d /data/mike -m mike
    
    3. 将用户 alice 的主组修改为 developers
    usermod -g developers alice
    
    4. 将用户 alice 从 developers 组中移除,并添加到 designers 组
    usermod -G designers alice
    
    5.将用户 alice 添加到 designers 组,但不从原组删除
    usermod -a -G designers alice
    
    6. 将用户 oldname 的用户名修改为 newname
    usermod -l newname oldname
    
    7. 锁定用户 john 的账户
    usermod -L john
    
    8. 解锁用户john的账户
    usermod -U john
    
    9. 设置用户 alice 的账户过期日期为 2024 年 12 月 31 日。
    usermod -e 2024-12-31 alice
    
    10. 将用户 john 的注释修改为 "John Doe, System Administrator"
    usermod -c "John Doe, System Administrator" john
    
    (3). userdel
    命令 含义
    userdel [用户名] 删除用户
    userdel -r [用户名] 删除用户包括用户家目录
    (4). 其他指令
    命令 含义
    passwd [用户名] 修改用户密码
    gpasswd [用户组] 修改用户组密码
    su [用户名] 切换用户身份
    id [用户名] 显示用户信息(组名,组编号,用户名,用户编号)

2. 用户组

(1). 概念
  • 具有相同权限的一组用户
  • 对用户****进行管理访问控制权限的手段
(2). 相关文件配置
1. /etc/passwd
  • 存储当前系统中所有用户的信息
  • passwd格式解析
  • passwd字段信息
2. /etc/shadow
  • 存储当前系统中所有用户组的信息
  • shadow格式解析
  • shadow字段信息
3. /etc/group
  • 存储用户组密码的一类信息
  • group格式解析
  • group字段信息
4. /etc/gshadow
  • 存储用户组密码的一类信息
  • gshadow格式信息
  • gshadow字段信息
(3). 相关命令
①groupadd
命令 含义
groupadd [组名] 添加用户组
groupadd -g [组编号] [组名] 添加用户组时指定组编号
groupadd -r [系统组名] 创建系统用户组
②groupmod
命令 含义
groupmod -n [新组名] [旧组名] 修改用户组名
groupmod -g [组编号] [组名] 修改用户组编号
③groupdel
命令 含义
groupdel [组名] 删除用户组

3. 软件安装方式

1. yum方式

(1). 定义
  • 基于RPM包构建的软件更新机制,可以自动解决包之间的依赖关系
(2). 源存放目录
  • /etc/yum.repos.d
  • 所有源文件以.repo结尾
(3). 常用选项
参数 作用
install 安装软件
update 升级软件
remove 卸载软件
clean 清除缓存
search 搜索软件
yum search [软件名]
yum install [软件名]
yum update [软件名]
yum remove [软件名]
(4). 其他用法
yum info [软件包名]  //查看软件详细信息
yum list installed  //查看已经安装的所有文件
yum install [软件名] -y  //跳过所有选项,默认同意
yum update  //更新所有软件(不存在的会与云端同步,存在的会替换下载链接)
yum check-update  //检查可更新的软件
(5). 换源
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo  //换源
//换源失败,尝试下面两步
sudo yum clean all  
sudo yum makecache

2. rpm软件包

(1). 命名格式
  • RPM软件包命名格式
(2). 基本用法
rpm -q[子选项] 软件名
参数 作用
-q 仅查询是否有安装
-qa 列出已经安装的软件
-ql 列出该软件所有的文件与目录所在的完整文件名
-qR 列出与该软件有关的相依软件所含的文件
(3). 安装选项及参数
参数 含义
-i 安装指定的rpm文件
-v 显示安装过程的详细信息
-h 以 # 显示安装的进度
-U 用指定的.rpm文件升级同名包
-e 卸载软件
1. 安装一个RPM包
rpm -i package.rpm

2. 升级一个已安装的 RPM 包,或者安装一个新包(如果尚未安装)
rpm -U package.rpm

3. 更新系统中已安装的 RPM 包,要求包的版本高于现有版本
rpm -F package.rpm

4. 卸载一个已安装的 RPM 包
rpm -e package

5. 查询包是否安装
rpm -q package

6. 显示包的详细信息
rpm -qi package

7. 列出包中包含的文件
rpm -ql package

8. 验证已安装的 RPM 包是否被修改
rpm -V package
//在线安装
rpm -ivh http|ftp://xxx.com/xx.rpm
//本地安装
rpm -ivh xx.rpm  

3. 源码安装

(1). 定义
  • 通过tar包安装
  • 不能直接运行,需编译可执行成二进制文件
(2). 优点
  • 获取最新版本,及时修复Bug
  • 灵活定制软件功能
(3). 应用场合
  • 较新版本的应用程序大都以源码形式发布
  • 功能无法满足需求时可自定义
  • 便于添加新功能
(4). 安装过程
  1. 安装前,仔细阅读Readme
  2. 解压源码,跳转到源码解压目录,输入./configure,配置安装目录
    ./configure --prefix=/usr/local/webserver
    
  3. 使用make进行编译(前提是产生了Makefile文件),作用是生成二进制文件
    make
    
  4. 安装二进制文件(即将二进制文件复制到相应的目录)
    sudo make install
    
  5. 启动安装好的服务进行测试
    ./usr/local/webserver/bin/apachectl start
    
  6. 在解压目录删除安装产生的临时文件
    make clean
    
  7. 在解压目录卸载已安装程序(前提Makefile指定过uninstall)
    make uninstall
    

4. 网站搭建(LAMP)

1. LAMP概述

  • 是一种常用来搭建动态网站或服务器的开源软件

2. LAMP组件

  • Linux
  • Apache:Web服务器
  • MySQL
  • PHP

3. 搭建过程

  1. 安装httpd(Apache环境)
    1.yum -y install httpd httpd-devel httpd-manual mod_ssl
    2.systemctl start httpd  //启动httpd服务
    3.systemctl enable httpd  //开机自启httpd服务
    
    systemctl status httpd  //查看httpd服务的情况
    
  2. 安装mysql数据库
    1.yum -y install mariadb-server mariadb
    2.systemctl start mariadb //启动数据库服务
    3.systemctl enable mariadb  //开机自启数据库服务
    
  3. 安装PHP语言环境
    1.yum -y install php php-common php-gd php-mbstring php-mcrypt php-devel php-xml
    2.systemctl restart httpd  //重启httpd服务
    
  4. 将源代码放入/var/www/html文件夹中
  5. 网页输入网址启动服务

5. iptables防火墙

1. 含义

  • 不是真正的防火墙,而是客户端代理

2. 结构

  • iptables -> tables -> chains -> rules

  • 规则链

    链名 说明
    input 入站数据过滤
    output 出站数据过滤
    forward 转发数据过滤
    prerouting 路由前过滤
    postrouting 路由后过滤

    iptables规则链顺序

3. 语法

iptables -t filter -I INPUT -p icmp -j REJECT

4. 参数

  • -p 指定协议类型,例如tcp、udp、icmp
  • -j 数据包常见控制类型| 参数 | 含义 |
    | ---------------- | ------------------------------------ |
    | ACCEPT | 允许通过 |
    | REJECT | 拒绝通过,必要时会给出提示 |
    | DROP | 直接丢弃,不予回应 |
    | LOG | 记录日志信息 |
  • -t 指定表
  • -I 在链的开头或指定序号,插入一条规则
  • -m 表示启用扩展功能,一般与-p配合使用
  • -d 指定IP地址
  • --deport 知道目的端口
  • -D 删除链内指定序号的一条规则
  • -F 里清空所有规则

注意:

  1. 不指定表名时,默认指filter表
  2. 不指定链名时,默认指表内所有链
  3. 选项、链名、控制类型使用大写字母,其余小写字母

5. 规则查看

  • -L 列出所有规则条目
  • -n 以数字形式显示地址、端口信息
  • -I 以更详细的方式显示规则信息
  • 指令
    iptables -t filter -I OUTPUT -p icmp -j REJECT  //通过ping命令
    iptables -n -L OUTPUT  //查看OUTPUT链
    iptables -n -L INPUT  //查看INPUT链
    iptables -D OUTPUT 1  //删除output链第一条规则
    

6. 防火墙

systemctl status firewalld			//查看防火墙服务情况
firewall-cmd --state			//显示防火墙服务当前运行情况
systemctl enable/disable firewalld 			//开启/关闭防火墙服务
firewall-cmd --get-active-zones 			//查看防火墙活动区域情况
--add-service={服务名} 						//活动区域允许服务
--add-port={端口号/协议} 					//活动区域允许端口/协议
--remove-service={服务名} 				//活动区域禁止服务
--remove-port={端口号/协议} 			//活动区域禁止端口/协议
--reload #重载
--permanent #永久设置
firewall-cmd --zone=public --add-port=80/tcp --permanent  		//防火墙公共区域永久允许80端口tcp协议的流量通过
firewall-cmd --reload #重载

firewall-cmd:firewalld命令行工具
--add-port:			//允许端口通过
--permanent:表示设置为永久
--zone:			//设置防火墙区域

7. 服务

1. 软连接

1. 注意

在/etc/init.d文件夹存放脚本,并在/etc/rc.d/rc[0-6].d中存放该脚本的软连接

2. 步骤
  1. 先建立shell脚本并写入内容.移入/etc/init.d文件夹
    touch filename.sh
    vim filename.sh
    mv filename.sh /etc/init.d
    
  2. 将该脚本赋予软连接,并放入/etc/rc.d/rc3.d中
    ln -s /etc/init.d/filename.sh /etc/rc.d/rc3.d/S100filename.sh  //K开头的脚本文件表示运行级别加载时需要关闭的,S开头的代表需要执行,后跟数字越小级别越高
    
  3. 重启实现该服务
    //laffrex脚本内容
    nt_time=$(date +"%Y-%m-%d-%H-%M-%S")
    file_path="/etc/init.d/$current_time.txt"
    echo "Current time: $current_time" > "$file_path"
    echo "File created: $file_path"
    

2. Service服务

步骤
  1. 给脚本filename文件可执行权限

    chmod +x /etc/init.d/filename
    
  2. 添加filename.service并编辑

    vim /etc/systemd/system/filename.service
    
    //filename.service文件内容
    [Unit]
    Description=Laffrex Service
    After=network.target
    
    [Service]
    Type=simple
    ExecStart=/etc/init.d/laffrex
    
    [Install]
    WantedBy=multi-user.target
    
  3. 赋予filename.service开机自启等权限

    systemctl daemon-reload  //刷新启动项
    systemctl enable filename.service  //开机自启
    systemctl start filename.service  //开启服务
    systemctl status filename.service  //查看服务状态
    

8. 定时任务(cron)

1. 简介

  • 是用于在预定时间执行命令的服务,使用crontab来管理定时任务
  • 每个用户都有一个对应的crontab文件
  • 在后台运行,默认每分钟持续的检查三个文件、目录,读取并执行
    /etc/crontab 文件
    /etc/cron.* 目录
    /var/spool/cron 目录
    
  • 所有用户创建的crontab文件都保存在/var/spool/cron 目录

2. 使用

1. 查看现有定时任务
	crontab -l
2. 编辑定时任务
	crontab -e
3. 删除定时任务
	crontab -r
4. 重启任务调度
	service crond restart

3. cron格式

分钟  小时  日期  月份  星期  命令或脚本

4. 实例

1. 0 3 * * * /path/to/your/script.sh  //每天凌晨3点执行脚本script.sh
2. */5 * * * * *   //每隔五分钟执行一次
3. 0 5 1,15 * * *  //每月1号和15号凌晨5点执行一次

9. 命令行快捷键

操作 含义
ctrl +U 清空至行首
ctrl +K 清空至行尾
ctrl +L 清屏
ctrl +C 中断执行
ctrl +Z 后台挂起(jobs列出作业,fg %[数字] 开启作业几)
ctrl +D 退出Shell

10. Vim操作

1. 输入模式

  • 键入 a、i、o 进入,按ESC退出
按键 作用
Page Up/Page Down 向上/向下翻页
退格键Backspace 删除光标前一个字符
DEL 删除光标后一个字符
Home / End 移动光标到行首/行尾
Insert 输入/替换模式切换

2. 一般模式

  • 正常进入vim即为一般模式
(1). 光标移动方法
按键 作用
Ctrl + f 相当于Page Down
Ctrl + b 相当于Page Up
0 / Home 移动到行首
$ / End 移动到行尾
G 移动到文件尾
gg 移动到文件首
n + Enter 光标向下移动n行
(2). 搜索替换
按键 作用
/word 向光标下寻找字符"word"
?word 向光标上寻找字符“word”
n 重复前一个搜寻动作
N 反向进行前一个搜寻动作
(3). 删除、复制与粘贴
按键 作用
x / X 相当于Del / Backspace
dd 删除当前行
ndd 删除光标向下n行
yy 复制当前行
nyy 复制光标向下n行
p / P 粘贴在光标下一行 / 上一行
u 复原前一个动作,相当于Windows的ctrl + z
Ctrl + r 重做上一个动作,相当于Windows的ctrl + y
.(小数点) 重复上一个动作

3. 命令模式

  • 键入 : 进入,按ESC退出

常用指令

指令名 含义
:wq 保存并退出
:q! 强行退出且不保存
:w 保存当前修改
:q 退出当前文件