一. Linux 主要目录
-
介绍:Linux 系统的文件系统遵循类似 UNIX 的目录结构,根目录 (/) 是最顶层的目录,下面包含了不同的子目录,承载着系统和应用程序的文件。
- / (根目录)
这是整个文件系统的起点,所有其他目录和文件都从这里开始。任何文件路径的最初部分都会以/
开头。 - /bin
存放基础的系统命令和工具,如ls
、cp
、mv
、rm
等,这些是系统启动和修复所需的基本工具。 - /etc
存放系统配置文件,如用户信息、网络配置、系统服务配置等。常见的文件有/etc/passwd
、/etc/fstab
、/etc/network/interfaces
等。 - /home
用户的家目录。每个用户在此目录下有一个子目录,存储该用户的个人文件和配置。 - /lib
存放系统的共享库文件,这些库文件支持大多数二进制可执行文件的运行。比如系统常用的动态链接库文件。 - /tmp
临时文件存放目录。系统和应用程序在运行时会创建临时文件,通常会在系统重启时清空。 - /var
存放变化数据的目录,包括日志文件、缓存文件、邮件、数据库文件等。常见子目录有/var/log
和/var/tmp
。 - /usr
存放系统级的应用程序和程序库。比如用户安装的软件包通常位于/usr/bin
和/usr/lib
。 - /opt
用于存放第三方应用程序或软件包。通常这些应用程序不属于操作系统本身,使用此目录以便区分。 - /dev
存放设备文件,系统中的硬件设备都在此目录下有对应的文件。比如/dev/sda
表示第一个硬盘,/dev/tty
表示终端。
- / (根目录)
二. Linux 常用指令
- ls
列出当前目录下的文件和子目录。常用选项有-l
(显示详细信息)、-a
(显示隐藏文件)等。 - cd
改变当前工作目录,cd /path/to/directory
进入指定目录,cd ..
返回上一级目录。 - pwd
显示当前工作目录的绝对路径。 - cp
复制文件或目录,cp source destination
。 - mv
移动或重命名文件或目录,mv source destination
。 - rm
删除文件或目录,rm file
删除文件,rm -r directory
删除目录。 - mkdir
创建新目录,mkdir directory_name
。 - rmdir
删除空目录,rmdir directory_name
。 - chmod
改变文件或目录的权限,chmod 755 file
将文件权限设置为可执行。 - ps
查看当前运行的进程,ps aux
显示详细进程信息。 - top
动态查看系统资源使用情况,如 CPU、内存等。 - kill
终止一个进程,kill pid
通过进程 ID 终止进程。
三.网络配置与管理
1. 显示网络信息
-
介绍:
ifconfig
是一个用于配置和显示网络接口的工具。-
显示网络接口信息
通过ifconfig
命令,你可以查看系统的所有网络接口(如eth0
,lo
等)及其状态、IP 地址、MAC 地址、网络掩码等信息。例如:ifconfig
-
显示特定接口信息
如果你只关心某个特定接口的信息,可以通过指定接口名来显示:ifconfig eth0
-
2. IP 修改
-
介绍:如果你需要修改某个网络接口的 IP 地址,可以使用
ifconfig
命令。假设你要将eth0
接口的 IP 地址设置为192.168.6.66
,可以使用以下命令:sudo ifconfig eth0 192.168.6.66
- PS:这条命令会临时修改
eth0
接口的 IP 地址。需要注意的是,这种修改在系统重启后会丢失,因此如果需要永久修改 IP 地址,通常需要在/etc/network/interfaces
或NetworkManager
配置文件中进行修改,具体方式取决于你使用的 Linux 发行版。
- PS:这条命令会临时修改
3. MAC 地址伪造
-
介绍:MAC 地址(媒体访问控制地址)是网络接口卡的唯一硬件地址,有时你可能需要临时更改一个接口的 MAC 地址,例如进行安全测试或绕过 MAC 地址限制等。
-
关闭网络接口
首先需要关闭网络接口(例如eth0
)才能修改其 MAC 地址:sudo ifconfig eth0 down
-
修改 MAC 地址
使用ifconfig
命令修改eth0
接口的 MAC 地址。在这个例子中,我们将其改为00:11:22:33:44:55
:sudo ifconfig eth0 hw ether 00:11:22:33:44:55
-
重新启动网络接口
最后,重新启用eth0
接口,使修改生效:sudo ifconfig eth0 up
-
4. 查看当前网络配置
-
介绍:除了
ifconfig
,你还可以使用ip
命令查看和配置网络信息。-
查看所有网络接口的详细信息:
ip addr show
-
查看特定接口的详细信息:
ip addr show eth0
-
显示路由表信息:
ip route show
-
修改 IP 地址:
sudo ip addr add 192.168.6.66/24 dev eth0
-
5. 网络诊断工具
-
ping:用来检查与远程主机的连接性:
ping 192.168.6.1
-
netstat:查看网络连接和监听端口:
netstat -tuln
-
traceroute:查看数据包到达目的地的路由路径:
traceroute www.example.com
四. 文件指令与权限管理
Linux 中的文件系统有着严格的权限管理模型,通过对文件的权限进行控制,可以保证系统的安全性和稳定性。文件权限管理是操作系统的一项核心功能,Linux 系统通过用户、用户组以及其他用户来控制文件的读、写、执行权限。下面详细介绍 Linux 中的文件权限及其管理方法。
1. 文件类型
-
介绍:在 Linux 文件系统中,文件类型可以通过
ls -l
命令查看文件的标识符。每个文件或目录的权限信息的第一位表示文件的类型。- - :普通文件。表示这是一个普通的文件。
- d:目录文件。表示这是一个目录。
- l:软链接文件。表示这是一个符号链接(快捷方式)文件。
- b:块设备文件。用于表示磁盘等设备。
- p:管道文件。用于进程间通信的管道文件。
- c:字符设备文件。表示串口设备或终端设备。
- s:套接字文件。通常用于进程间通信。
-
例如:使用
ls -l
查看文件时,输出的第一个字符就是文件的类型-rw-r--r-- 1 user group 1234 Jan 1 12:00 file.txt # 普通文件 drwxr-xr-x 2 user group 4096 Jan 1 12:00 folder # 目录 lrwxrwxrwx 1 user group 15 Jan 1 12:00 link -> /path/to/file # 软链接
2. 文件权限
-
介绍:Linux 系统的文件权限分为三类:用户(Owner)、用户组(Group)和其他用户(Others)。每个文件或目录都可以设置三种基本权限:读取 (
r
)、写入 (w
) 和执行 (x
)。- r (read):读取权限,表示能够读取文件的内容。
- w (write):写入权限,表示能够修改文件的内容。
- x (execute):执行权限,表示能够执行文件(如脚本或程序)。
每个文件或目录的权限可以通过 chmod
命令进行修改。文件权限通常以如下格式显示:
-rwxr-xr-- 1 user group 1234 Jan 1 12:00 file.txt
其中,rwx
代表文件拥有者的权限,r-x
代表同组用户的权限,r--
代表其他用户的权限。
3. 权限的数字表示
Linux 中的权限可以通过数字来表示,每个权限都对应一个数字值:
r
(读权限) = 4w
(写权限) = 2x
(执行权限) = 1
数字的组合表示文件的权限。例如:
rwx
= 4 + 2 + 1 = 7rw-
= 4 + 2 = 6r--
= 4---
= 0
因此,文件权限的三组数字就表示文件拥有者、同组用户和其他用户的权限。比如,chmod 755 file.txt
会将文件的权限设置为 rwxr-xr-x
,即:
- 文件拥有者可以读、写、执行(7)。
- 同组用户可以读和执行(5)。
- 其他用户可以读和执行(5)。
4. 特殊用户权限
-
介绍:除了常规的读取、写入和执行权限,Linux 系统还提供了三种特殊的权限位,分别是 SUID、SGID 和 Sticky Bit,这些权限用来赋予用户或进程特权操作。
-
SUID (Set User ID) :如果一个文件设置了 SUID 位,则在执行该文件时,进程会临时获取该文件所有者的权限。通常用于某些需要特权的程序,比如
passwd
。- 设置 SUID 位的方法:
chmod 4700 filename
- 例如,
chmod 4700 qyiao
会给文件qyiao
设置 SUID 权限。
- 设置 SUID 位的方法:
-
SGID (Set Group ID) :如果文件设置了 SGID 位,则执行该文件的进程会临时获得文件所属组的权限。对于目录来说,设置 SGID 位会使得目录内新创建的文件继承父目录的用户组。
- 设置 SGID 位的方法:
chmod 2700 filename
- 例如,
chmod 2700 qyiao
会给文件qyiao
设置 SGID 权限。
- 设置 SGID 位的方法:
-
Sticky Bit:通常用于目录,如果设置了 Sticky Bit,则只有文件的所有者或 root 用户才能删除该目录中的文件,而其他用户无法删除或修改他人的文件。这个权限常用于
/tmp
目录。- 设置 Sticky Bit:
chmod 1700 directory_name
- 设置 Sticky Bit:
-
5. 文件夹权限
-
介绍:在 Linux 中,文件夹(目录)权限的含义与文件权限略有不同。
- r (读权限) :如果没有读取权限,就无法使用
ls
等命令查看目录中的文件。即使目录内有文件,用户也无法列出目录内容。 - w (写权限) :如果没有写权限,就无法在目录中创建、删除文件或子目录。
- x (执行权限) :如果没有执行权限,就不能进入该目录(使用
cd
命令)。执行权限允许用户访问目录内的文件及子目录。
- r (读权限) :如果没有读取权限,就无法使用
-
例如,给目录
mydir
设置权限:rwxr-xr-x
:表示拥有者可以查看、创建文件、进入该目录;同组用户可以查看和进入该目录;其他用户也可以查看和进入该目录。rw-r--r--
:表示只有目录拥有者可以修改文件或创建文件,其他人只能查看文件但不能修改。
6. 常见文件权限示例
-
普通文件
-rwxr-xr-- 1 user group 1234 Jan 1 12:00 file.txt
解释:
- 文件拥有者可以读、写、执行。
- 同组用户可以读、执行。
- 其他用户可以读取。
-
目录文件
drwxr-xr-x 2 user group 4096 Jan 1 12:00 mydir
解释:
- 文件拥有者可以查看、修改、进入目录。
- 同组用户可以查看、进入目录。
- 其他用户可以查看、进入目录。
-
软链接文件
lrwxrwxrwx 1 user group 15 Jan 1 12:00 link -> /path/to/file
解释:
- 软链接文件的权限通常是
lrwxrwxrwx
,它允许所有用户访问链接指向的目标文件,但不受目标文件权限的影响。
- 软链接文件的权限通常是
7. 修改文件权限
通过 chmod
命令,你可以修改文件或目录的权限。可以使用符号模式或数字模式:
-
符号模式:使用
r
、w
、x
来表示权限,+
表示增加权限,-
表示删除权限。例如:chmod u+x file.txt # 给文件拥有者增加执行权限 chmod g-w file.txt # 删除用户组的写权限 chmod o=r file.txt # 将其他用户的权限设置为只读
-
数字模式:通过数字来设置权限。每个权限位由三位数字表示:
chmod 755 file.txt # 设置文件权限为 rwxr-xr-x chmod 644 file.txt # 设置文件权限为 rw-r--r--
五. 进程管理
Linux 系统是多任务的,进程管理是非常重要的。进程管理的主要目标是创建、调度、终止进程,确保系统运行平稳。
-
查看进程
使用ps
、top
命令查看当前运行的进程。ps aux
列出所有进程。top
显示实时的进程信息。
-
启动进程
可以直接在终端运行命令来启动一个进程,例如vim
编辑器、firefox
浏览器等。 -
终止进程
使用kill
命令终止一个进程。可以根据进程 ID (PID) 来杀死进程。例如:kill 1234
终止 PID 为 1234 的进程。kill -9 1234
强制终止进程。
-
后台进程与前台进程
使用&
将进程放入后台运行,例如command &
。可以使用jobs
查看后台进程,fg
将后台进程调回前台。 -
进程优先级 (nice)
-
介绍:Linux 中每个进程都有一个 优先级,这决定了它在 CPU 调度中的优先级。进程的优先级通过 nice 值 来表示,nice 值的范围通常是从 -20 到 19。
- 较小的 nice 值(如 -20)表示该进程拥有较高的优先级,系统会为它分配更多的 CPU 时间。
- 较大的 nice 值(如 19)表示该进程的优先级较低,系统会优先分配 CPU 时间给其他进程。
-
查看进程优先级:
ps -eo pid,comm,nice
- PS:显示系统中所有进程的 PID、命令和 nice 值
-
nice
命令可以设置进程的优先级。nice -n 10 command
会启动一个优先级为 10 的进程。
-
-
调整进程优先级(renice)
renice
命令用于调整已经在运行中的进程的 nice 值。- 例如,修改 PID 为 1234 的进程的 nice 值为 10,
sudo renice -n 10 -p 1234
- 例如,修改 PID 为 1234 的进程的 nice 值为 10,
六. 计划任务
1. Cron
-
介绍:
cron
是一个基于时间表的任务调度工具,适用于需要定期执行的任务。例如,可以设定每天、每周或每月执行某个命令或脚本。它通过 cron 表(crontab
)来管理定期任务。-
编辑当前用户的 cron 表
使用crontab -e
命令可以编辑当前用户的 cron 表,设置定期执行的任务:crontab -e
-
cron 表的格式:
每一行定义一个定期执行的任务,格式如下:* * * * * /path/to/command │ │ │ │ │ │ │ │ │ └── 星期几 (0 - 7) (0和7都表示星期天) │ │ │ └──── 月 (1 - 12) │ │ └────── 日 (1 - 31) │ └──────── 小时 (0 - 23) └────────── 分钟 (0 - 59)
例如,设置每分钟执行一次命令:
* * * * * /path/to/command
其他常见的
cron
配置示例:-
每天凌晨 2 点执行任务:
0 2 * * * /path/to/command
-
每周一执行任务:
0 0 * * 1 /path/to/command
-
每月 1 日执行任务:
0 0 1 * * /path/to/command
-
-
2. at
-
介绍:
at
命令用于 一次性任务调度,即在指定的时间执行某个任务。与cron
不同,at
适用于只需要执行一次的任务,比如在特定时间后执行某个命令或脚本。-
基本语法:
at time
例如,
at 10:00
会在 10 点钟执行输入的命令。 -
使用
at
执行任务:-
简单示例:
at 10:00
然后你可以输入要执行的命令,例如:
/path/to/command
- PS:输入完成后,按
Ctrl + D
来提交任务。
- PS:输入完成后,按
-
指定具体日期和时间: 你可以指定具体的日期和时间来执行任务。例如,想要在明天的 14:30 执行某个命令:
at 14:30 tomorrow
也可以指定特定的日期:
at 18:00 2025-02-01
-
使用相对时间: 你还可以使用相对时间来指定任务的执行时间。比如,想要任务在 5 分钟后执行:
at now + 5 minutes
-
在指定时间执行脚本: 你可以通过
at
执行指定的脚本或命令。例如,要在今天的 15:00 执行一个脚本:at 15:00 /path/to/script.sh
-
指定时间范围(如小时、天、周) :
at
还支持使用其他时间单位,支持分钟、小时、日、星期等单位:at 2pm tomorrow
:明天下午 2 点执行。at 4:30pm + 1 day
:在当前时间的基础上加 1 天,下午 4:30 执行任务。
-
-
查看任务: 使用
atq
命令查看待执行的任务队列。atq
会列出所有待执行的at
任务:atq
-
删除任务: 如果想要删除一个待执行的任务,可以使用
atrm
命令,后面跟上任务的编号(通过atq
查看)。例如,删除任务编号为 2 的任务:atrm 2
-
at
命令执行的任务日志: 默认情况下,at
命令的输出会通过电子邮件发送给当前用户。可以通过查看邮件来获取任务执行的输出。如果没有配置邮件服务,你也可以将输出重定向到文件:at 10:00 << EOF /path/to/command > /path/to/logfile 2>&1 EOF
-
七. 环境变量
1. 查看环境变量
-
printenv
:显示当前的环境变量。printenv
若要查看特定的环境变量,可以指定变量名。例如,要查看
PATH
环境变量:printenv PATH
-
env
:列出当前环境变量。与printenv
类似,但env
更多用于临时修改环境变量并启动新进程。env
-
echo
:使用echo
命令可以显示环境变量的值。例如,显示HOME
环境变量的值:echo $HOME
2. 设置环境变量
-
设置临时环境变量: 例如,添加新的路径到
PATH
环境变量中:export PATH=$PATH:/new/path
这会将
/new/path
添加到现有的PATH
环境变量中,使得在当前会话中,系统能够在该路径下查找可执行文件。 -
设置新的环境变量: 如果你想创建一个新的环境变量,可以使用:
export MY_VAR="some_value"
这会将
MY_VAR
设置为"some_value"
,并且在当前会话中,所有的子进程都可以访问该环境变量。 -
查看已设置的环境变量: 使用
echo
来查看刚设置的环境变量。例如,查看MY_VAR
的值:echo $MY_VAR
3. 临时与永久环境变量
-
临时环境变量:
临时环境变量只在当前 shell 会话中有效。关闭终端或退出当前会话后,变量会丢失。
例如,执行下面的命令来设置一个临时的MY_VAR
环境变量:export MY_VAR="temporary_value"
这时,在当前会话中,可以使用
echo $MY_VAR
查看该环境变量的值,但在终端关闭后该变量会失效。 -
永久环境变量:
如果你希望环境变量在每次登录时都有效,需要将export
命令添加到某个启动脚本中。-
对于单个用户:
-
将
export
命令添加到用户的~/.bashrc
文件(对于 Bash 用户)或者~/.bash_profile
文件中:export MY_VAR="permanent_value"
-
然后执行以下命令使更改生效:
source ~/.bashrc
-
-
对于所有用户:
- 将
export
命令添加到/etc/profile
或/etc/bash.bashrc
文件中,这样所有用户在登录时都会加载这个环境变量。
- 将
注意:修改
~/.bashrc
或/etc/profile
等文件时,要谨慎操作,避免修改系统重要的配置文件。 -
4. 常见环境变量
-
PATH
:存储系统可执行文件的路径。Shell 会根据PATH
环境变量的内容去查找可执行文件。echo $PATH
-
HOME
:当前用户的家目录。每个用户都有一个独立的家目录,通常是/home/username
。echo $HOME
-
USER
:当前登录的用户名。echo $USER
-
SHELL
:当前用户使用的 shell 类型,通常是/bin/bash
。echo $SHELL
-
PWD
:当前工作目录。可以查看当前所在的目录。echo $PWD
-
LANG
:系统的语言设置。比如,默认的语言环境可能是en_US.UTF-8
。echo $LANG
-
EDITOR
:指定默认的文本编辑器。例如,vim
或nano
。echo $EDITOR
-
HISTSIZE
:定义 shell 历史记录的最大行数,影响你可以查看的历史命令的数量。echo $HISTSIZE
5. 删除环境变量
-
格式:
unset 变量名
-
示例:
unset MY_VAR
6. 临时修改环境变量
-
介绍:除了通过
export
命令临时设置环境变量,你还可以直接在命令前设置环境变量。这样设置的环境变量仅对该命令有效。MY_VAR="temporary_value" /path/to/command
- PS:此命令只会在执行
/path/to/command
时使用MY_VAR
环境变量,执行完毕后,MY_VAR
会消失。
- PS:此命令只会在执行