1. 目录结构
/
:所有文件和目录的根目录
/usr/bin
:存放系统的可执行文件,可以在任何目录下执行。
/usr/local/bin
:存放用户自己安装的可执行文件,可以在任何目录下执行。
/etc
: 存放系统的配置文件,如:/etc/profile 是环境变量的配置文件。
/home
: 每个用户的家目录,保存用户的私人数据,目录名默认和用户名相同。
/opt
: 存放用户额外安装的软件,类似 Windows 中的 Program Files 目录。
2. 常用命令
文件 & 目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 查看: pwd # 显示当前目录路径 ls # 列出当前目录下文件和目录 ls -l 或 ll # 列出当前目录下文件和目录(详细信息) 切换目录: cd /opt # 切换到 /opt 目录 cd .. # 返回上一级目录 cd bin # 切换到当前目录的 bin 目录下 创建目录: mkdir -p data/mysql # 在当前目录下创建目录 data,并且在 data 下创建 mysql(递归创建多级目录) mkdir /opt/data # 在 opt 目录下创建目录 data 复制文件(把文件 gateway.jar 复制为 gateway-bank-2024-06-11.jar 作为备份): cp gateway.jar gateway-bank-2024-06-11.jar 查看文件内容:
|
1 2 3 4
| cp source destination # 复制文件 mv oldname newname # 移动或重命名文件 rm -r directory # 递归删除目录及其内容 rm -f filename # 强制删除文件
|
1 2 3 4 5
| cat a.txt # 查看 a.txt 文件内容,所有内容一次性显示出来 tail -f log.txt # 实时查看文件 log.txt 的末尾内容 grep "keyword" log.txt # 查看 log.txt 包含 keyword 内容 find / -name "file" # 从根目录查找名称为 file 的文件 find /opt *.java | grep user # 在特定目录 /opt 下搜索所有名称包含 user 的 .java 文件
|
查看系统信息
1 2 3 4 5 6 7 8 9 10 11 12 13
| ifconfig # IP 地址 top # 运行的进程和系统性能信息 free -h # 内存使用情况(human-readable) free -m # 内存使用情况(megabytes) df -h # 磁盘使用情况 du -sh directory # 查看目录大小 防火墙: systemctl status firewalld # 查看防火墙状态 systemctl start firewalld # 启动防火墙 systemctl stop firewalld # 停止防火墙 firewall-cmd --permanent --zone=public --add-port=3306/tcp # 添加防火墙端口规则 firewall-cmd --reload # 重新加载防火墙规则 firewall-cmd --zone=public --list-all # 查看公共区域的防火墙规则
|
注意:部分服务器可能使用 iptables 而不是 firewalld,二者都用于管理网络防火墙规则。
常用系统服务管理
所有的系统服务都可以像上面这样用 systemctl 查看状态(status)、启动(start)、停止(stop)、重启(restart),后面加 [服务名]。
1 2 3 4
| systemctl status service # 查看服务状态 systemctl start service # 启动服务 systemctl stop service # 停止服务 systemctl restart service # 重启服务
|
进程管理
1 2 3 4 5 6 7
| ps aux # 查看所有进程 ps -ef|grep mysql # 查找 MySQL 服务相关的进程 lsof -i :3306 # 查看端口 3306 的进程 jps # 查看当前运行的 Java 进程 top # 实时查看系统资源使用情况 htop # 类似 top,界面更友好(需要安装) kill -9 PID # 终止指定进程
|
用户 & 权限
1 2 3 4 5 6 7 8
| useradd username # 添加新用户 (注:在 /home 目录下创建用户的根目录,目录名称默认与用户名相同 在linux中任何一个用户都至少属于一个组,新建用户时如果不指定组,则会新建一个组 添加用户的同时指定用户的根目录:useradd -d /home/myd haifan) passwd username # 为用户设置密码 userdel username # 删除用户 id username # 查看用户信息 su username # 切换用户
|
注意:从权限高的用户切换到权限低的用户,不需要密码验证;从权限低的用户切换到权限高的用户,必须密码验证。
1 2 3 4 5
| 修改文件或目录的所有者: chown travis a.txt # 修改 a.txt 文件的所有者为 travis chown -R travis data # 修改 data 目录下的所有文件包括 data 目录的所有者为 travis 文件或目录的权限控制: chmod 777 a.txt # 将文件a.txt的权限设置为777
|
注意:在Linux中,任何一个文件或目录都有三部分权限:【所有者权限】、【同组用户权限】、【其他组用户权限】。
第一部分权限【所有者权限】:文件或目录的【所有者】对该文件所拥有的权限
第二部分权限【同组用户权限】:文件或目录的【同组用户】对该文件拥有的权限
第三部分权限【其他组用户权限】:文件或目录的【其他组用户】对该文件拥有的权限
每个权限可以用一个数字表示,r、w、x分别对应4、2、1,每个文件或目录都有三部分权限,每一部分权限都可以用一组数据之和来表示。
文本编辑器:vi 和 vim
1 2 3 4 5 6 7 8 9 10 11 12
| vi filename # 使用 vi 编辑文件 vim filename # 使用 vim 编辑文件 # 在 vi/vim 中的操作模式: i/a # 一般模式 -> 编辑模式 Esc # 编辑模式 -> 一般模式 shift+: # 一般模式 -> 命令行模式 命令行模式下: :wq # 保存并退出 :q # 退出(未修改) :q! # 强制退出(不保存) /关键词 # 搜索关键词 n 或 N # n:向下搜索,N:向上搜索
|
软件包管理
- Debian 系列(Ubuntu)
apt:1 2 3
| apt update # 更新软件包列表 apt install packagename # 安装软件包 apt remove packagename # 卸载软件包
|
- RedHat 系列(CentOS)
yum:1 2 3 4
| yum update # 更新软件包 yum install firefox # 安装软件包 yum remove firefox.x86_64 # 卸载软件包 yum list installed|grep firefox # 当前系统中使用yum已经安装的安装包
|
rpm:1 2 3
| rpm -ivh a.rpm # i:安装 v:提示 h:进度条 rpm -ivh --force a.rpm # 强制安装 rpm -e a.rpm # 卸载软件包
|
压缩 & 解压
1 2
| gzip a.txt # 压缩单个文件,生成一个 .gz 的压缩包,并且会把原来的文件删除 gunzip a.txt.gz # 解压 gz 压缩包,并且会把原来的 .gz 压缩包删除
|
1 2 3 4
| zip a.zip a1.txt a2.txt a3.txt # 把 a1.txt, a2.txt, a3.txt 压缩为 a.zip unzip a.zip -d dir_name # 把 a.zip 解压到 dir_name 目录下 tar -zcvf a.tar.gz a1 a2 a3 # 打包并压缩目录 tar -zxvf a.tar.gz -c /dir_name # 解压并指定目录
|
网络相关
1 2 3 4 5
| ping hostname # 测试网络连通性 netstat -tuln # 查看当前监听的端口和服务 traceroute hostname # 跟踪数据包路径 nslookup domain # 查询域名的 DNS 信息 scp localfile remote:/path # 通过 SSH 复制文件到远程主机
|
Shell 脚本(基础)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #!/bin/bash echo "wow demxntia" # 输出内容 name="demxntia" # 定义变量 echo "I love $name" # 使用变量
# 条件判断 if [ $name == "Linux" ]; then echo "wow" fi
# 循环 for i in {1..5}; do echo "Number: $i" done
|
创建脚本文件后,赋予执行权限并运行:
1 2
| chmod +x script.sh ./script.sh
|
Docker
1 2 3 4 5 6 7 8
| docker -v # 查看 Docker 版本 docker images # 列出本地主机上所有的 Docker 镜像 docker ps # 列出当前正在运行的 Docker 容器 docker ps -a # 列出当前所有的 Docker 容器 docker start <容器id 或 容器名称> # 启动已经停止的 Docker 容器 docker stop <容器id 或 容器名称> # 停止正在运行的 Docker 容器 docker rm <容器ID或容器名称> # 删除已经停止的 Docker 容器 docker logs <容器id 或 容器名称> # 查看 Docker 容器日志
|
文件上传与下载
1 2
| rz -y # 从本地上传文件到 Linux 服务器(需要 lrzsz 工具) sz 文件名 # 下载 Linux 服务器文件到本地
|
注:如果使用时显示没有该命令,可以使用命令进行安装:yum install lrzsz