1. 基本命令和操作
文件和目录操作
- ls:列出目录内容
- 示例:
ls -l /etc
列出/etc
目录的详细内容。
- 示例:
- cd:更改目录
- 示例:
cd /var/log
切换到/var/log
目录。
- 示例:
- cp:复制文件或目录
- 示例:
cp file1.txt file2.txt
复制file1.txt
为file2.txt
。
- 示例:
- mv:移动或重命名文件或目录
- 示例:
mv oldname.txt newname.txt
重命名oldname.txt
为newname.txt
。
- 示例:
- rm:删除文件或目录
- 示例:
rm file.txt
删除file.txt
。
- 示例:
- mkdir:创建目录
- 示例:
mkdir newdir
创建名为newdir
的目录。
- 示例:
- rmdir:删除空目录
- 示例:
rmdir olddir
删除名为olddir
的空目录。
- 示例:
- touch:创建空文件或更新文件时间戳
- 示例:
touch newfile.txt
创建newfile.txt
文件。
- 示例:
文件内容查看和编辑
- cat:连接并显示文件内容
- 示例:
cat /etc/passwd
显示/etc/passwd
文件内容。
- 示例:
- less:分页显示文件内容
- 示例:
less /var/log/syslog
分页查看syslog
日志文件。
- 示例:
- more:类似 less,但功能较少
- 示例:
more /var/log/syslog
分页查看syslog
日志文件。
- 示例:
- head:显示文件的前几行
- 示例:
head -n 10 /var/log/syslog
显示syslog
文件的前10行。
- 示例:
- tail:显示文件的最后几行
- 示例:
tail -n 10 /var/log/syslog
显示syslog
文件的最后10行。
- 示例:
- nano:简易文本编辑器
- 示例:
nano /etc/hosts
编辑hosts
文件。
- 示例:
- vim:功能强大的文本编辑器
- 示例:
vim /etc/hosts
编辑hosts
文件。
- 示例:
文件权限和所有权
- chmod:修改文件权限
- 示例:
chmod 755 script.sh
将script.sh
的权限设为 755。
- 示例:
- chown:修改文件所有者
- 示例:
chown user:group file.txt
将file.txt
的所有者改为user
,组改为group
。
- 示例:
- chgrp:修改文件所属组
- 示例:
chgrp group file.txt
将file.txt
的所属组改为group
。
- 示例:
搜索和查找
- find:查找文件或目录
- 示例:
find / -name "file.txt"
从根目录开始查找名为file.txt
的文件。
- 示例:
- grep:在文件中搜索字符串
- 示例:
grep "root" /etc/passwd
在passwd
文件中搜索包含root
的行。
- 示例:
- locate:快速查找文件
- 示例:
locate file.txt
查找系统中所有名为file.txt
的文件。
- 示例:
2. 用户和组管理
用户管理
- useradd:添加用户
- 示例:
sudo useradd -m newuser
添加一个新用户newuser
并创建主目录。
- 示例:
- usermod:修改用户
- 示例:
sudo usermod -aG sudo newuser
将用户newuser
添加到sudo
组。
- 示例:
- userdel:删除用户
- 示例:
sudo userdel -r olduser
删除用户olduser
并删除其主目录。
- 示例:
- passwd:修改用户密码
- 示例:
sudo passwd newuser
为用户newuser
设置密码。
- 示例:
组管理
- groupadd:添加组
- 示例:
sudo groupadd newgroup
添加新组newgroup
。
- 示例:
- groupmod:修改组
- 示例:
sudo groupmod -n newgroupname oldgroupname
将组oldgroupname
重命名为newgroupname
。
- 示例:
- groupdel:删除组
- 示例:
sudo groupdel oldgroup
删除组oldgroup
。
- 示例:
权限管理
理解文件和目录的权限位:读(r)、写(w)、执行(x)。
- 设置特殊权限:
- SUID:在文件上设置SUID(Set User ID),执行文件时临时获得文件所有者的权限。
- 示例:
chmod u+s /usr/bin/someprogram
设置someprogram
的SUID位。
- 示例:
- SGID:在文件或目录上设置SGID(Set Group ID),执行文件时临时获得文件所属组的权限,在目录上设置时,新创建的文件和子目录继承目录的组。
- 示例:
chmod g+s /usr/local/somedir
设置somedir
的SGID位。
- 示例:
- 粘滞位:通常设置在目录上,防止用户删除或重命名其他用户的文件。
- 示例:
chmod +t /usr/local/somedir
设置somedir
的粘滞位。
- 示例:
- SUID:在文件上设置SUID(Set User ID),执行文件时临时获得文件所有者的权限。
3. 软件包管理
Red Hat系(如CentOS、Fedora)
- yum:软件包管理器
- 示例:
sudo yum install httpd
安装httpd
包。
- 示例:
- dnf:新的包管理器,替代yum
- 示例:
sudo dnf install httpd
安装httpd
包。
- 示例:
Debian系(如Ubuntu)
- apt:高级包工具
- 示例:
sudo apt update && sudo apt install apache2
更新软件包列表并安装apache2
包。
- 示例:
- dpkg:Debian软件包管理工具
- 示例:
sudo dpkg -i package.deb
安装本地package.deb
包。
- 示例:
源码安装
- tar:解压缩tar包
- 示例:
tar -xzvf package.tar.gz
解压package.tar.gz
文件。
- 示例:
- configure:配置源码包
- 示例:
./configure
配置源码包。
- 示例:
- make:编译源码
- 示例:
make
编译源码。
- 示例:
- make install:安装编译好的程序
- 示例:
sudo make install
安装编译好的程序。
- 示例:
4. 系统监控和管理
系统资源监控
- top:动态查看系统资源使用情况
- 示例:运行
top
并查看CPU、内存使用情况。
- 示例:运行
- htop:更友好的top替代工具
- 示例:运行
htop
查看系统资源使用情况。
- 示例:运行
- free:显示内存使用情况
- 示例:
free -h
显示内存的详细使用情况。
- 示例:
- df:显示磁盘使用情况
- 示例:
df -h
显示磁盘空间的使用情况。
- 示例:
- du:查看目录或文件的磁盘使用情况
- 示例:
du -sh /home/user
查看user
目录的大小。
- 示例:
- iostat:显示CPU和I/O统计信息
- 示例:
iostat
查看CPU和I/O的统计信息。
- 示例:
- vmstat:显示系统虚拟内存统计
- 示例:
vmstat
查看虚拟内存的统计信息。
- 示例:
进程管理
- ps:显示当前进程
- 示例:
ps aux
显示所有进程的信息。
- 示例:
- kill:终止进程
- 示例:
kill 1234
终止PID为1234
的进程。
- 示例:
- pkill:按名称终止进程
- 示例:
pkill firefox
终止所有firefox
进程。
- 示例:
- pgrep:查找进程ID
- 示例:
pgrep sshd
查找sshd
进程的PID。
- 示例:
- jobs:显示当前shell中的后台任务
- 示例:
jobs
查看当前shell中的任务。
- 示例:
- bg:将任务放到后台运行
- 示例:
bg %1
将任务编号为1的任务放到后台运行。
- 示例:
- fg:将任务放到前台运行
- 示例:
fg %1
将任务编号为1的任务放到前台运行。
- 示例:
日志管理
- 日志文件位置:大多数日志文件位于
/var/log
目录下。- 示例:`/
var/log/syslog或
/var/log/messages` 是系统日志文件。
- 实时查看日志:
- tail:
tail -f /var/log/syslog
实时查看syslog
日志文件。 - less:
less +F /var/log/syslog
实时查看syslog
日志文件。
- tail:
5. 网络管理
网络配置
- ifconfig:显示或配置网络接口
- 示例:
ifconfig eth0
查看eth0
接口的配置。
- 示例:
- ip:显示或配置网络接口
- 示例:
ip addr show
显示所有网络接口的IP地址。
- 示例:
- nmcli:NetworkManager命令行工具
- 示例:
nmcli device status
查看所有网络设备的状态。
- 示例:
- nmtui:NetworkManager图形界面工具
- 示例:运行
nmtui
进行网络配置。
- 示例:运行
- systemctl:管理系统服务
- 示例:
systemctl restart network
重启网络服务。
- 示例:
网络测试和诊断
- ping:测试网络连通性
- 示例:
ping google.com
测试到google.com
的连通性。
- 示例:
- traceroute:显示到目的主机的路由
- 示例:
traceroute google.com
查看到google.com
的路由。
- 示例:
- netstat:显示网络连接、路由表、接口统计等
- 示例:
netstat -tuln
显示所有监听的TCP和UDP端口。
- 示例:
- ss:类似netstat,但功能更强大
- 示例:
ss -tuln
显示所有监听的TCP和UDP端口。
- 示例:
- curl:传输数据
- 示例:
curl http://example.com
下载网页内容。
- 示例:
- wget:网络下载工具
- 示例:
wget http://example.com/file.zip
下载文件。
- 示例:
6. 安全和权限管理
防火墙配置
- iptables:设置Linux内核中的数据包过滤规则
- 示例:
sudo iptables -L
查看当前的防火墙规则。
- 示例:
- firewalld:动态管理防火墙
- 示例:
sudo firewall-cmd --list-all
查看当前的防火墙设置。
- 示例:
SSH管理
- 配置和使用SSH:通过SSH进行安全远程登录和传输文件。
- ssh:
ssh user@hostname
远程登录到主机hostname
。 - scp:
scp file.txt user@hostname:/path/to/destination
复制文件到远程主机。 - rsync:
rsync -avz file.txt user@hostname:/path/to/destination
同步文件到远程主机。
- ssh:
用户权限控制
- sudo:以超级用户或其他用户权限执行命令。
- 示例:
sudo command
以超级用户权限执行command
。 - 配置sudoers文件:使用
visudo
命令编辑/etc/sudoers
文件,配置用户的sudo权限。
- 示例:
7. 自动化和脚本编写
Shell脚本
- 编写基础bash脚本:
- 示例脚本:
#!/bin/bash echo "Hello, World!"
- 变量:
- 示例:
name="Linux"
定义变量name
。
- 示例:
- 条件判断:
- 示例:
if [ "$name" == "Linux" ]; then echo "Welcome to Linux!" fi
- 示例:
- 循环:
- 示例:
for i in {1..5}; do echo "Number $i" done
- 示例:
- 函数:
- 示例:
function greet() { echo "Hello, $1!" } greet "Linux"
- 示例:
- 示例脚本:
任务调度
- cron:定时任务调度
- 示例:编辑
crontab
文件,添加如下条目,每天凌晨2点运行备份脚本:0 2 * * * /path/to/backup.sh
- 示例:编辑
- at:一次性任务调度
- 示例:
echo "backup.sh" | at now + 1 minute
一分钟后运行备份脚本。
- 示例:
8. 备份和恢复
备份工具
- tar:创建归档文件
- 示例:
tar -czvf backup.tar.gz /path/to/directory
备份目录为backup.tar.gz
文件。
- 示例:
- rsync:高效的文件同步工具
- 示例:
rsync -avz /path/to/source /path/to/destination
同步文件或目录。
- 示例:
- dd:进行低级别数据备份
- 示例:
dd if=/dev/sda of=/path/to/backup.img
备份整个硬盘。
- 示例:
恢复操作
- 理解备份文件的恢复过程:
- tar:
tar -xzvf backup.tar.gz -C /path/to/restore
解压并恢复文件。 - rsync:
rsync -avz /path/to/backup /path/to/restore
恢复文件或目录。 - dd:
dd if=/path/to/backup.img of=/dev/sda
恢复硬盘镜像。
- tar:
9. 虚拟化和容器化
虚拟化
- KVM:内核虚拟机
- 示例:安装KVM并创建虚拟机:
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils sudo virt-install --name testvm --ram 2048 --disk path=/var/lib/libvirt/images/testvm.qcow2,size=10 --vcpus 2 --os-type linux --os-variant ubuntu20.04 --network bridge=br0 --graphics none --console pty,target_type=serial --location 'http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/'
- 示例:安装KVM并创建虚拟机:
- VirtualBox:用户友好的虚拟机软件
- 示例:安装VirtualBox并创建虚拟机。
容器化
- Docker:轻量级容器化技术
- 示例:安装Docker并运行容器:
sudo apt install docker.io sudo systemctl start docker sudo systemctl enable docker sudo docker run -it ubuntu /bin/bash
- 示例:安装Docker并运行容器:
- docker-compose:定义和运行多容器Docker应用
- 示例:编写
docker-compose.yml
文件,启动多容器应用:version: '3' services: web: image: nginx ports: - "80:80" db: image: mysql environment: MYSQL_ROOT_PASSWORD: example
- 示例:编写
10. 常见服务配置
Web服务
- Apache:安装和配置Apache
- 示例:
sudo apt install apache2
安装Apache。
- 示例:
- Nginx:安装和配置Nginx
- 示例:
sudo apt install nginx
安装Nginx。
- 示例:
数据库服务
- MySQL:安装和配置MySQL
- 示例:
sudo apt install mysql-server
安装MySQL。
- 示例:
- PostgreSQL:安装和配置PostgreSQL
- 示例:
sudo apt install postgresql
安装PostgreSQL。
- 示例:
文件共享服务
- Samba:安装和配置Samba
- 示例:
sudo apt install samba
安装Samba。
- 示例:
- NFS:安装和配置NFS
- 示例:
sudo apt install nfs-kernel-server
安装NFS服务器。
- 示例:
11. DevOps工具
版本控制
- Git:基本操作
- 示例:
git clone https://github.com/user/repo.git
克隆仓库。
- 示例:
CI/CD
- GitLab CI/CD:了解GitLab CI/CD的基本使用
- 示例:编写
.gitlab-ci.yml
文件,定义CI/CD流水线。
- 示例:编写
- Jenkins:自动化构建工具
- 示例:安装Jenkins并配置流水线。
基础设施即代码
- Ansible:简单的配置管理工具
- 示例:编写
playbook.yml
,使用Ansible部署应用。
- 示例:编写
- Terraform:基础设施即代码工具
- 示例:编写
main.tf
文件,使用Terraform管理基础设施。
- 示例:编写
12. 云计算基础
常见云服务商
- AWS:了解AWS的基本服务,如EC2、S3、RDS等。
- Azure:了解Azure的基本服务,如VM、Blob存储、SQL数据库等。
- GCP:了解GCP的基本服务,如Compute Engine、Cloud Storage、Cloud SQL等。