介绍:Linux 系统的文件系统遵循类似 UNIX 的目录结构,根目录 (/) 是最顶层的目录,下面包含了不同的子目录,承载着系统和应用程序的文件。
/
开头。ls
、cp
、mv
、rm
等,这些是系统启动和修复所需的基本工具。/etc/passwd
、/etc/fstab
、/etc/network/interfaces
等。/var/log
和 /var/tmp
。/usr/bin
和 /usr/lib
。/dev/sda
表示第一个硬盘,/dev/tty
表示终端。-l
(显示详细信息)、-a
(显示隐藏文件)等。cd /path/to/directory
进入指定目录,cd ..
返回上一级目录。cp source destination
。mv source destination
。rm file
删除文件,rm -r directory
删除目录。mkdir directory_name
。rmdir directory_name
。chmod 755 file
将文件权限设置为可执行。ps aux
显示详细进程信息。kill pid
通过进程 ID 终止进程。介绍:ifconfig
是一个用于配置和显示网络接口的工具。
显示网络接口信息
通过 ifconfig
命令,你可以查看系统的所有网络接口(如 eth0
, lo
等)及其状态、IP 地址、MAC 地址、网络掩码等信息。例如:
ifconfig
显示特定接口信息
如果你只关心某个特定接口的信息,可以通过指定接口名来显示:
ifconfig eth0
介绍:如果你需要修改某个网络接口的 IP 地址,可以使用 ifconfig
命令。假设你要将 eth0
接口的 IP 地址设置为 192.168.6.66
,可以使用以下命令:
sudo ifconfig eth0 192.168.6.66
eth0
接口的 IP 地址。需要注意的是,这种修改在系统重启后会丢失,因此如果需要永久修改 IP 地址,通常需要在 /etc/network/interfaces
或 NetworkManager
配置文件中进行修改,具体方式取决于你使用的 Linux 发行版。介绍: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
介绍:除了 ifconfig
,你还可以使用 ip
命令查看和配置网络信息。
查看所有网络接口的详细信息:
ip addr show
查看特定接口的详细信息:
ip addr show eth0
显示路由表信息:
ip route show
修改 IP 地址:
sudo ip addr add 192.168.6.66/24 dev eth0
ping:用来检查与远程主机的连接性:
ping 192.168.6.1
netstat:查看网络连接和监听端口:
netstat -tuln
traceroute:查看数据包到达目的地的路由路径:
traceroute www.example.com
Linux 中的文件系统有着严格的权限管理模型,通过对文件的权限进行控制,可以保证系统的安全性和稳定性。文件权限管理是操作系统的一项核心功能,Linux 系统通过用户、用户组以及其他用户来控制文件的读、写、执行权限。下面详细介绍 Linux 中的文件权限及其管理方法。
介绍:在 Linux 文件系统中,文件类型可以通过 ls -l
命令查看文件的标识符。每个文件或目录的权限信息的第一位表示文件的类型。
例如:使用 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 # 软链接
介绍:Linux 系统的文件权限分为三类:用户(Owner)、用户组(Group)和其他用户(Others)。每个文件或目录都可以设置三种基本权限:读取 (r
)、写入 (w
) 和执行 (x
)。
每个文件或目录的权限可以通过 chmod
命令进行修改。文件权限通常以如下格式显示:
-rwxr-xr-- 1 user group 1234 Jan 1 12:00 file.txt
其中,rwx
代表文件拥有者的权限,r-x
代表同组用户的权限,r--
代表其他用户的权限。
Linux 中的权限可以通过数字来表示,每个权限都对应一个数字值:
r
(读权限) = 4w
(写权限) = 2x
(执行权限) = 1数字的组合表示文件的权限。例如:
rwx
= 4 + 2 + 1 = 7rw-
= 4 + 2 = 6r--
= 4---
= 0因此,文件权限的三组数字就表示文件拥有者、同组用户和其他用户的权限。比如,chmod 755 file.txt
会将文件的权限设置为 rwxr-xr-x
,即:
介绍:除了常规的读取、写入和执行权限,Linux 系统还提供了三种特殊的权限位,分别是 SUID、SGID 和 Sticky Bit,这些权限用来赋予用户或进程特权操作。
SUID (Set User ID) :如果一个文件设置了 SUID 位,则在执行该文件时,进程会临时获取该文件所有者的权限。通常用于某些需要特权的程序,比如 passwd
。
chmod 4700 filename
chmod 4700 qyiao
会给文件 qyiao
设置 SUID 权限。SGID (Set Group ID) :如果文件设置了 SGID 位,则执行该文件的进程会临时获得文件所属组的权限。对于目录来说,设置 SGID 位会使得目录内新创建的文件继承父目录的用户组。
chmod 2700 filename
chmod 2700 qyiao
会给文件 qyiao
设置 SGID 权限。Sticky Bit:通常用于目录,如果设置了 Sticky Bit,则只有文件的所有者或 root 用户才能删除该目录中的文件,而其他用户无法删除或修改他人的文件。这个权限常用于 /tmp
目录。
chmod 1700 directory_name
介绍:在 Linux 中,文件夹(目录)权限的含义与文件权限略有不同。
ls
等命令查看目录中的文件。即使目录内有文件,用户也无法列出目录内容。cd
命令)。执行权限允许用户访问目录内的文件及子目录。例如,给目录 mydir
设置权限:
rwxr-xr-x
:表示拥有者可以查看、创建文件、进入该目录;同组用户可以查看和进入该目录;其他用户也可以查看和进入该目录。rw-r--r--
:表示只有目录拥有者可以修改文件或创建文件,其他人只能查看文件但不能修改。普通文件
-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
,它允许所有用户访问链接指向的目标文件,但不受目标文件权限的影响。通过 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。
查看进程优先级:ps -eo pid,comm,nice
nice
命令可以设置进程的优先级。nice -n 10 command
会启动一个优先级为 10 的进程。
调整进程优先级(renice)
renice
命令用于调整已经在运行中的进程的 nice 值。
sudo renice -n 10 -p 1234
介绍: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
介绍:at
命令用于 一次性任务调度,即在指定的时间执行某个任务。与 cron
不同,at
适用于只需要执行一次的任务,比如在特定时间后执行某个命令或脚本。
基本语法:
at time
例如,at 10:00
会在 10 点钟执行输入的命令。
使用 at
执行任务:
简单示例:
at 10:00
然后你可以输入要执行的命令,例如:
/path/to/command
Ctrl + D
来提交任务。指定具体日期和时间: 你可以指定具体的日期和时间来执行任务。例如,想要在明天的 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
printenv
:显示当前的环境变量。
printenv
若要查看特定的环境变量,可以指定变量名。例如,要查看 PATH
环境变量:
printenv PATH
env
:列出当前环境变量。与 printenv
类似,但 env
更多用于临时修改环境变量并启动新进程。
env
echo
:使用 echo
命令可以显示环境变量的值。例如,显示 HOME
环境变量的值:
echo $HOME
设置临时环境变量: 例如,添加新的路径到 PATH
环境变量中:
export PATH=$PATH:/new/path
这会将 /new/path
添加到现有的 PATH
环境变量中,使得在当前会话中,系统能够在该路径下查找可执行文件。
设置新的环境变量: 如果你想创建一个新的环境变量,可以使用:
export MY_VAR="some_value"
这会将 MY_VAR
设置为 "some_value"
,并且在当前会话中,所有的子进程都可以访问该环境变量。
查看已设置的环境变量: 使用 echo
来查看刚设置的环境变量。例如,查看 MY_VAR
的值:
echo $MY_VAR
临时环境变量:
临时环境变量只在当前 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
等文件时,要谨慎操作,避免修改系统重要的配置文件。
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
格式:unset 变量名
示例:
unset MY_VAR
介绍:除了通过 export
命令临时设置环境变量,你还可以直接在命令前设置环境变量。这样设置的环境变量仅对该命令有效。
MY_VAR="temporary_value" /path/to/command
/path/to/command
时使用 MY_VAR
环境变量,执行完毕后,MY_VAR
会消失。