在工作中常用到的 Linux 命令总结
前言
找工作面试的时候。几乎每次面试几乎都会问到 Linux 常用命令,会问一些命令的应用场景。目的是考察我们是否在实际开发中经常用、用得熟练。今天我就来系统地总结一下开发过程中最常用的 Linux 命令,算是一个复习总结。
速查表
下面这些 Linux 命令是日常开发和系统维护中最常用的命令,涵盖了文件管理、系统管理、网络管理、进程控制、权限设置以及文件下载、压缩等多方面的需求。为了方便快速查找和记忆,我整理了下各类命令的速查表。
分类 | 命令 | 用途说明 | 示例 |
---|---|---|---|
基本文件操作 | ls | 列出目录内容 | ls -l 查看详细列表 |
cd | 切换目录 | cd /path/to/dir 切换目录 | |
cp | 复制文件或目录 | cp file.txt /backup/ 复制文件 | |
mv | 移动或重命名文件 | mv oldname newname 重命名文件 | |
rm | 删除文件或目录 | rm -r directory 递归删除目录 | |
mkdir | 创建新目录 | mkdir newdir 创建目录 | |
文件查看 | cat | 查看文件内容 | cat filename 显示文件内容 |
more | 分页显示文件内容 | more filename 分页查看文件 | |
less | 高效分页查看文件内容 | less filename 前后翻页查看文件 | |
tail | 查看文件尾部内容 | tail -n 10 filename 查看最后 10 行 | |
head | 查看文件开头内容 | head -n 10 filename 查看前 10 行 | |
文本处理 | grep | 搜索文件中的文本模式 | grep "error" filename 搜索包含 "error" 的行 |
sed | 替换或编辑文本 | sed 's/old/new/g' filename 替换所有匹配项 | |
awk | 按列处理文本数据 | awk '{print $1}' filename 打印文件第一列 | |
系统管理 | uname | 查看系统信息 | uname -a 显示完整系统信息 |
top | 实时查看系统资源使用 | top 实时监控 CPU、内存等资源 | |
df | 查看磁盘使用情况 | df -h 以人类可读格式显示磁盘使用 | |
du | 查看目录大小 | du -sh /path/to/dir 显示目录总大小 | |
free | 查看内存使用情况 | free -h 显示内存使用情况 | |
用户和权限管理 | whoami | 查看当前用户 | whoami 显示当前登录的用户名 |
sudo | 以超级用户权限执行命令 | sudo command 以管理员权限执行命令 | |
chmod | 修改文件权限 | chmod 755 filename 设置权限 | |
chown | 更改文件所有者和组 | chown user:group filename 设置所有者和组 | |
adduser | 添加新用户 | sudo adduser username 创建新用户 | |
deluser | 删除用户 | sudo deluser username 删除用户 | |
passwd | 修改用户密码 | passwd username 为用户设置密码 | |
网络管理 | ifconfig | 查看网络接口配置 | ifconfig 显示所有网络接口信息 |
ping | 测试网络连通性 | ping google.com 测试连接 | |
netstat | 查看网络连接状态 | netstat -tuln 显示监听端口 | |
curl | 发送 HTTP 请求 | curl -I http://example.com 查看响应头 | |
端口管理 | nmap | 扫描开放端口 | nmap 192.168.1.1 扫描指定 IP 的开放端口 |
lsof | 查看端口占用 | lsof -i :8080 查看端口 8080 的占用 | |
iptables | 配置防火墙规则 | iptables -L 查看所有防火墙规则 | |
进程管理 | ps | 显示系统进程 | ps aux 查看所有进程信息 |
top | 实时查看进程资源使用 | top 动态监控系统进程 | |
kill | 终止指定进程 | kill -9 PID 强制终止进程 | |
killall | 终止同名进程 | killall process_name 终止所有同名进程 | |
nice | 启动进程并设置优先级 | nice -n 10 command 启动新进程并设置优先级 | |
renice | 调整运行中进程的优先级 | renice -n 5 -p PID 调整进程优先级 | |
下载和文件管理 | wget | 下载文件 | wget http://example.com/file.zip 下载文件 |
curl | 下载或上传数据 | curl -O http://example.com/file.zip 下载文件 | |
压缩和解压缩 | tar | 打包和解包文件 | tar -czvf archive.tar.gz /path/to/files 打包并压缩 |
gzip | 压缩文件 | gzip filename 压缩文件 | |
zip | 压缩为 zip 文件 | zip archive.zip file1 file2 压缩多个文件 | |
unzip | 解压 zip 文件 | unzip archive.zip 解压 zip 文件 | |
文件分割和合并 | split | 分割文件 | split -b 100M largefile.bin part_ 分割大文件 |
cat | 合并文件 | cat part_* > mergedfile.bin 合并分割文件 |
文件管理类命令
在日常开发中,文件和目录的操作是最基础、最常用的操作之一。以下是常用的文件管理类命令,包括 ls
、cd
、cp
、mv
、rm
和 mkdir
,并附上具体说明和使用示例
1. ls - 列出目录内容
ls
命令用于显示当前目录下的文件和目录列表,提供各种参数来辅助查看详细信息。
常用参数:
-l
:显示详细信息,包括权限、所有者、文件大小等。-a
:显示所有文件,包括隐藏文件(以.开头的文件)。
示例:
ls -l # 显示当前目录的文件详细信息
ls -a # 显示包括隐藏文件在内的所有文件
ls -lh # 显示文件的详细信息并以易读的格式展示大小
2. cd - 切换目录
cd
(Change Directory)命令用于在不同目录之间切换。
用法:
cd
目录路径:切换到指定路径的目录。cd ..
:返回到上一级目录。cd ~
:切换到当前用户的主目录。
示例:
cd /var/log # 切换到 /var/log 目录
cd .. # 返回上一级目录
cd ~ # 返回主目录
3. cp - 复制文件和目录
cp
命令用于复制文件或目录,支持递归复制目录。
常用参数:
-r
:递归复制整个目录。-i
:提示确认覆盖。
示例:
cp file.txt /backup/ # 将 file.txt 文件复制到 /backup/ 目录
cp -r /source /destination # 递归复制 /source 目录到 /destination
4. mv - 移动或重命名文件和目录
mv
命令用于移动文件或目录,也可以用来重命名文件。
用法:
mv 源文件 目标文件
:将文件或目录移动到新位置。mv 旧名称 新名称
:对文件或目录进行重命名。
示例:
mv file.txt /backup/ # 将 file.txt 移动到 /backup/ 目录
mv oldname.txt newname.txt # 将 oldname.txt 重命名为 newname.txt
5. rm - 删除文件和目录
rm
命令用于删除文件或目录,删除操作不可逆,需小心使用。
常用参数:
-r
:递归删除目录及其内容。-i
:删除前进行确认。-f
:强制删除,不提示。
示例:
rm file.txt # 删除文件 file.txt
rm -r /backup/test # 递归删除 /backup/test 目录
rm -f temp.log # 强制删除 temp.log 文件
6. mkdir - 创建新目录
mkdir
命令用于创建新目录。
常用参数:
-p
:创建多层级目录(不存在的父目录会被自动创建)。
示例:
mkdir newfolder # 创建一个新目录 newfolder
mkdir -p /backup/logs # 递归创建 /backup/logs 目录
文件查看命令
在开发中,我们经常需要查看文件的某一部分内容或筛选出特定的信息。以下是常用的文件查看命令,包括 cat
、more
、less
、tail
、head
,并附带了使用示例。
1. cat - 显示文件内容
cat
命令一次性输出文件的所有内容,适合查看小型文件内容。
用法:
cat 文件名
:显示整个文件内容。cat 文件1 文件2 > 合并文件
:将多个文件内容合并输出到新文件。
示例:
cat logfile.txt # 显示 logfile.txt 文件的所有内容
cat file1.txt file2.txt > combined.txt # 合并 file1 和 file2 内容到 combined.txt
2. more - 分页显示文件内容
more
命令用于分页显示文件内容,适合逐页查看大文件。
常用操作:
按 空格键
翻页,按 q
退出查看。
示例:
more /var/log/syslog # 分页查看系统日志
3. less - 高效分页查看文件内容
less
命令和 more
类似,但支持前后翻页和搜索,适合查看大文件内容。
常用操作:
- 按
空格键
向下翻页,按b
向上翻页。 - 输入
/关键词
可以搜索关键词,按n
跳到下一个匹配。
示例:
less /var/log/syslog # 分页查看日志内容并支持前后翻页
4. tail - 查看文件末尾
tail
命令用于查看文件的最后几行内容,适合检查日志的最新输出。
常用参数:
-n 行数
:显示指定行数的末尾内容。-f
:实时追踪文件的新内容。
示例:
tail -n 20 /var/log/syslog # 查看系统日志的最后 20 行
tail -f /var/log/syslog # 实时追踪系统日志的新内容
5. head - 查看文件开头
head
命令用于查看文件的开头部分内容。
常用参数:
-n 行数
:显示指定行数的开头内容。
示例:
head -n 10 logfile.txt # 查看文件开头的 10 行
文本处理命令
文本处理命令用于从文件中查找、提取、替换内容,非常适合快速分析文件中的信息。以下是 grep
、sed
和 awk
命令的详细说明和示例。
1. grep - 搜索文本内容
grep
命令用于查找文件中匹配特定模式的行。它可以根据关键词、时间戳或正则表达式来筛选内容。
常用参数:
-i
:忽略大小写。-r
:递归搜索目录中的文件。-A 行数 和 -B 行数
:显示匹配行的前后若干行。
示例:
grep "ERROR" /var/log/syslog # 查找系统日志中包含 "ERROR" 的行
grep -i "warning" logfile.txt # 忽略大小写查找 "warning"
grep '2024-10-31 12:00' /var/log/syslog # 查找系统日志中 2024 年 10 月 31 日中午 12:00 的记录
grep -A 5 -B 5 "ERROR" /var/log/syslog # 查找包含 "ERROR" 的行,并显示前后 5 行
2. sed - 流编辑器
sed
(Stream Editor)用于对文本进行批量替换、删除等操作,还可以用于显示文件的特定行范围。
常用操作:
- 替换:
sed 's/旧内容/新内容/g'
文件名,替换所有匹配内容。 - 修改文件:
-i
参数直接修改文件。 - 查看中间部分:
sed -n '起始行,结束行p'
文件名。
示例:
sed 's/old/new/g' file.txt # 将文件中的 "old" 替换为 "new"
sed -i 's/error/ERROR/g' logfile.txt # 替换日志文件中的 "error" 为 "ERROR" 并保存
sed -n '100,200p' /var/log/syslog # 查看系统日志的第 100 到 200 行
3. awk - 文本数据处理工具
awk
是一个强大的文本处理工具,擅长按列操作文件内容,适合格式化和提取数据。
常用操作:
- 按列打印:
awk '{print $列号}'
打印指定列内容。 - 匹配模式打印:
awk '/模式/'
打印匹配的行。
示例
awk '{print $1, $3}' data.txt # 打印文件中第一和第三列
awk '/ERROR/ {print $0}' logfile.txt # 打印包含 "ERROR" 的整行
文本下载和文件管理命令
在开发中,下载文件、压缩和解压文件是常见的操作,尤其是处理日志文件、配置文件或安装软件包时。
1. wget - 下载文件
wget
是一个非交互式的文件下载工具,支持 HTTP、HTTPS 和 FTP 协议,适合下载文件或网页。
常用参数:
-O
文件名:将下载的文件保存为指定文件名。-c
:断点续传,如果下载中断,可以从中断点继续下载。-r
:递归下载,适合下载整个目录或网站(需小心使用)。
示例:
wget http://example.com/file.zip # 下载指定 URL 的文件
wget -O customname.zip http://example.com/file.zip # 将文件保存为 customname.zip
wget -c http://example.com/largefile.iso # 断点续传下载大文件
2. curl - 获取或上传数据
curl
命令支持多种协议,用于发送 HTTP 请求、上传或下载文件。它是调试 HTTP API 的好工具。
常用参数:
-O
:将下载内容保存为远程文件的同名文件。-I
:仅获取响应头。-d
:发送数据(POST 请求时使用)。
示例:
curl -O http://example.com/file.tar.gz # 下载文件并保存为同名文件
curl -I http://example.com # 查看 HTTP 响应头
curl -d "param=value" -X POST http://example.com/api # 发送 POST 请求
压缩和解压缩命令
文件压缩和解压缩命令帮助我们节省存储空间和传输时间,常用的有 tar
、gzip
、zip
和 unzip
。
1. tar - 打包与解包
tar
是 Linux 下常用的打包和解包工具,可以将多个文件或目录打包成一个文件(不压缩),也可以直接生成压缩文件。
常用参数:
-c
:创建新的 tar 包。
-x
:解压 tar 包。
-v
:显示详细过程。
-f
:指定文件名。
-z
:使用 gzip 压缩或解压缩。
-j
:使用 bzip2 压缩或解压缩。
示例:
tar -cvf archive.tar /path/to/files # 将目录打包成 tar 文件(不压缩)
tar -czvf archive.tar.gz /path/to/files # 将目录打包并使用 gzip 压缩
tar -xvf archive.tar # 解压 tar 包
tar -xzvf archive.tar.gz # 解压 gzip 压缩的 tar 包
2. gzip - 压缩文件
gzip
命令用于压缩文件,生成的文件会以 .gz
作为扩展名。注意,gzip 只能压缩单个文件。
常用参数:
-d
:解压 gzip 文件。
示例:
gzip filename # 将 filename 压缩为 filename.gz
gzip -d filename.gz # 解压 gzip 文件
3. zip 和 unzip - 压缩和解压 zip 文件
zip
和 unzip
命令分别用于创建和解压缩 zip 格式的压缩文件,这种格式在 Windows 和 Linux 系统之间通用。
常用参数:
zip
:-r
:递归压缩目录。unzip
:-d
:指定解压目录。
示例:
zip archive.zip file1 file2 # 将 file1 和 file2 压缩为 archive.zip
zip -r archive.zip /path/to/directory # 递归压缩整个目录
unzip archive.zip # 解压 zip 文件
unzip archive.zip -d /path/to/extract # 解压到指定目录
文件分割和合并命令
1. split - 分割文件
split
命令用于将大文件分割成多个小文件,适合处理超大文件。
常用参数:
-b
:指定分割后的文件大小。-l
:按行分割。
示例:
split -b 100M largefile.bin part_ # 将 largefile.bin 分割为 100MB 的小文件
split -l 1000 largefile.txt part_ # 每 1000 行分割一个文件
2. cat - 合并文件
cat
命令可以将分割的文件合并回一个文件。
示例:
cat part_* > mergedfile.bin # 合并分割的小文件为一个大文件
这些命令可以有效帮助我们管理文件的下载、压缩、解压缩以及分割与合并操作,是日常开发和维护中不可或缺的工具。
系统管理命令
系统管理命令帮助我们获取系统信息、管理用户权限和维护系统资源。在日常开发和运维中,这些命令可以用来检查系统状态、处理用户权限以及进行系统更新。
这些命令用于检查系统的基本信息和资源使用情况,包括 uname
、top
、df
、du
和 free
。
1. uname - 显示系统信息
uname
命令可以查看系统的基本信息,如内核名称、主机名称等。
常用参数:
-a
:显示所有信息,包括内核名称、版本、架构等。-r
:显示内核版本。
示例:
uname -a # 查看完整的系统信息
uname -r # 查看系统内核版本
2. top - 实时查看系统性能
top
命令可以实时监控系统的资源使用情况,包括 CPU、内存和各进程的状态。
常用操作:
- 按 P:按 CPU 使用率排序。
- 按 M:按内存使用率排序。
- 按 q:退出查看。
示例:
top # 实时查看系统资源使用情况
3. df - 查看磁盘使用情况
df
命令用于查看磁盘分区的使用情况,帮助我们快速了解磁盘空间的占用情况。
常用参数:
-h
:以人类易读的格式显示。
示例:
df -h # 以易读格式显示各分区的磁盘使用情况
4. du - 查看目录大小
du
命令用于显示指定目录或文件的大小,常用于分析磁盘空间的使用情况。
常用参数:
-h
:以人类易读的格式显示。-s
:只显示总大小。
示例:
du -sh /var/log # 查看 /var/log 目录的总大小
du -h /home # 查看 /home 目录下每个文件和子目录的大小
5. free - 查看内存使用情况
free
命令用于显示系统的内存使用情况,包括物理内存和交换内存。
常用参数:
-h
:以人类易读的格式显示。
示例:
free -h # 以人类可读格式显示内存使用情况
用户管理
用户管理命令用于查看和修改用户权限,包括 whoami
、sudo
、chmod
和 chown
。
1. whoami - 显示当前用户
whoami
命令用于显示当前登录的用户名,方便我们确认当前权限。
whoami # 显示当前登录的用户名
2. sudo - 以超级用户权限执行命令
sudo
命令用于以超级用户(root)权限运行命令,适合执行需要管理员权限的操作。
示例:
sudo apt-get update # 以超级用户权限更新系统
sudo rm /root/temp.txt # 删除 root 目录下的文件(需要超级用户权限)
3. chmod - 修改文件权限
chmod
命令用于设置文件或目录的权限,通过指定权限值来控制读、写、执行权限。
常用格式:
chmod 权限 文件名
:直接设置权限,例如chmod 755 file.txt
。- 权限值说明:
r=4
(读)、w=2
(写)、x=1
(执行)。
示例:
chmod 644 myfile.txt # 设置文件为所有者可读写,其他人只读
chmod +x script.sh # 为文件添加执行权限
4. chown - 修改文件所有者
chown
命令用于更改文件或目录的拥有者或所属组,适用于更改文件的访问权限。
常用格式:
chown 用户:组 文件名
:更改文件的用户和组。
示例:
chown user1:usergroup myfile.txt # 将 myfile.txt 的所有者设为 user1,组设为 usergroup
chown -R user1 /home/user1 # 递归修改 /home/user1 目录及其内容的所有者
系统更新
在开发中,我们通常需要通过包管理器更新系统或安装依赖包。常见的包管理器有 apt-get
(适用于 Debian 系和 Ubuntu 系统)和 yum
(适用于 CentOS 和 RedHat 系统)。
1. apt-get - Debian 系统的包管理器
apt-get
是 Debian 系和 Ubuntu 系系统的包管理器,常用于安装、更新和删除软件包。
常用命令:
apt-get update
: 更新软件包列表。apt-get upgrade
: 更新已安装的所有包。apt-get install
: 软件包名:安装指定软件包。
示例:
sudo apt-get update # 更新软件包列表
sudo apt-get upgrade # 更新已安装的软件包
sudo apt-get install git # 安装 Git
2. yum - RedHat 系统的包管理器
yum
是 RedHat 系和 CentOS 系系统的包管理器,提供了类似的包安装和更新功能。
常用命令:
yum update
:更新所有软件包。yum install 软件包名
:安装指定软件包。yum remove 软件包名
:卸载软件包。
示例:
sudo yum update # 更新所有软件包
sudo yum install git # 安装 Git
sudo yum remove httpd # 卸载 Apache HTTP 服务器
网络管理命令
在开发和运维过程中,网络管理命令帮助我们检查网络连接状态、调试网络故障、管理端口和流量。这些命令可以有效地定位和排查网络问题。
这些命令用于查看系统的网络连接状态和网络接口信息,包括 ifconfig
、ping
、netstat
和 curl
。
1. ifconfig - 查看网络接口信息
ifconfig
命令显示系统的网络接口配置信息,包括 IP 地址、子网掩码、广播地址等。
常用参数: 无参数时显示所有接口的基本信息。
示例:
ifconfig # 显示所有网络接口的配置信息
ifconfig eth0 # 查看特定接口(eth0)的详细信息
2. ping - 测试网络连通性
ping
命令用于测试与目标主机的网络连接,验证网络是否连通。
常用参数:
-c 次数
:指定发送的包数量。-i 间隔
:设置每次发送包的间隔时间。
示例:
ping google.com # 测试到 Google 的连通性
ping -c 4 8.8.8.8 # 发送 4 个包测试到 8.8.8.8 的连接
3. netstat - 查看网络连接状态
netstat
命令用于显示网络连接、路由表和接口状态信息,适合快速检查网络端口的使用情况。
常用参数:
-t
:显示 TCP 连接。-u
:显示 UDP 连接。-l
:显示监听状态的端口。-n
:以数字形式显示 IP 地址和端口号。
示例:
netstat -tuln # 查看系统所有监听中的 TCP 和 UDP 端口
netstat -an # 显示所有活动的网络连接
4. curl - 发送 HTTP 请求
curl
命令用于测试 HTTP 请求,获取指定 URL 的数据或响应头信息。它非常适合调试 API 接口或检测网站状态。
常用参数:
-I
:仅获取响应头信息。-X
:指定请求方法,如 GET、POST 等。-d
:发送 POST 请求时的参数数据。
示例:
curl http://example.com # 获取网站主页的 HTML 内容
curl -I http://example.com # 只查看网站的响应头
curl -X POST -d "param=value" http://example.com # 发送 POST 请求
端口管理
端口管理命令帮助我们检查系统端口的状态,检测端口占用或配置防火墙规则,包括 nmap
、lsof
和 iptables
。
1. nmap - 网络端口扫描
nmap
(Network Mapper)是一款开源网络扫描工具,可以扫描指定主机的开放端口、服务信息和操作系统版本。它主要用于网络安全和端口占用检测。
常用参数:
-p 端口号
:指定扫描的端口号。-sS
:执行 TCP SYN 扫描,快速检测端口状态。-O
:检测目标主机的操作系统。
示例:
nmap 192.168.1.1 # 扫描指定 IP 的开放端口
nmap -p 80 192.168.1.1 # 检测 IP 的 80 端口状态
nmap -sS 192.168.1.1 # 执行快速 TCP 扫描
nmap -O 192.168.1.1 # 检测目标主机的操作系统
2. lsof - 查看端口占用
lsof
(List Open Files)命令用于查看系统中被进程打开的文件,包括网络文件和端口。它可以帮助我们查找被特定端口占用的进程。
常用参数:
-i :端口号
:显示使用指定端口的进程。-t
:仅显示进程 ID,便于和 kill 配合使用。
示例:
lsof -i :8080 # 查看 8080 端口被哪个进程占用
lsof -t -i :8080 | xargs kill # 终止占用 8080 端口的进程
3. iptables - 配置防火墙规则
iptables
是 Linux 系统的防火墙工具,可以通过设定规则来管理进出网络流量。它支持过滤、重定向和日志记录等功能。
常用操作:
- 查看现有规则:
iptables -L
列出所有规则。 - 允许端口:
iptables -A INPUT -p tcp --dport 端口号 -j ACCEPT
。 - 拒绝端口:
iptables -A INPUT -p tcp --dport 端口号 -j DROP
。 - 删除规则:
iptables -D INPUT 行号 删除指定规则
。
示例:
iptables -L # 列出当前所有防火墙规则
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 开放 80 端口
iptables -A INPUT -p tcp --dport 22 -j DROP # 禁止外部访问 22 端口
iptables -D INPUT 1 # 删除第一条规则
进程管理命令
在 Linux 系统中,进程管理命令帮助我们查看和控制进程的状态、使用情况和优先级。以下是常用的进程管理命令,包括 ps
、top
、kill
、killall
,以及调整进程优先级的 nice
和 renice
。
这些命令用于查看系统中运行的进程、监控进程的资源占用情况,以及终止特定进程。
1. ps - 显示进程信息
ps
命令用于查看系统中的进程状态,常用于静态查看某一时刻的进程信息。
常用参数:
-e 或 -A
:显示所有进程。
-f
:显示完整格式的进程信息。
aux
:显示所有进程的详细信息,包括用户、CPU 和内存占用。
示例:
ps -e # 列出所有进程
ps -ef # 列出所有进程的完整信息
ps aux # 详细显示所有进程的信息
2. top - 实时查看系统进程
top
命令用于实时监控系统的资源使用情况,包括 CPU、内存和各个进程的状态。它可以动态刷新,并支持排序和过滤。
常用操作:
- 按
P
:按 CPU 使用率排序。 - 按
M
:按内存使用率排序。 - 按
k
:输入进程 ID(PID)以结束指定进程。 - 按
q
:退出查看。
示例:
top # 实时查看所有进程的资源使用情况
3. kill - 终止指定进程
kill
命令用于向指定进程发送信号,最常用于终止进程。
常用参数:
-9
:强制终止进程。-15
(默认):正常终止进程,允许进程完成清理工作。
示例:
kill 1234 # 终止 PID 为 1234 的进程
kill -9 1234 # 强制终止 PID 为 1234 的进程
4. killall - 终止同名进程
killall
命令可以根据进程名称终止所有匹配的进程,非常适合同时结束多个同名进程。
常用参数:
-9
:强制终止进程。
示例:
killall apache2 # 终止所有 apache2 进程
killall -9 chrome # 强制终止所有 chrome 进程
进程优先级
在 Linux 系统中,进程的优先级决定了它获得 CPU 资源的优先顺序。可以使用 nice
和 renice
命令来调整进程的优先级。
1. nice - 启动进程并设置优先级
nice
命令用于以指定的优先级启动新进程。默认情况下,优先级范围是 -20(最高优先级)到 19(最低优先级),数值越高优先级越低。
常用参数:
-n
:指定优先级值。
示例:
nice -n 10 command # 以优先级 10 启动一个新进程
nice -n -5 ./myscript.sh # 以高优先级(-5)运行 myscript.sh
2. renice - 调整运行中进程的优先级
renice
命令用于调整正在运行中的进程的优先级。
常用参数:
-n
:指定新的优先级值。-p
:后接进程 ID(PID)来指定要调整优先级的进程。
示例:
renice -n 5 -p 1234 # 将 PID 为 1234 的进程优先级调整为 5
renice -n -10 -p 5678 # 提高 PID 为 5678 的进程优先级(优先级设置为 -10)
权限管理命令
在 Linux 系统中,权限管理命令帮助我们控制用户和进程对文件和目录的访问权限,同时也可以创建、删除用户和组。以下是常用的权限管理命令,包括 chmod
、chown
、chgrp
,以及用户和组管理的 adduser
、deluser
和 passwd
。
文件权限管理命令用于设置文件或目录的读、写和执行权限,包括 chmod
、chown
和 chgrp
。
1. chmod - 修改文件权限
chmod
命令用于更改文件或目录的权限,可以通过数字(如 755
)或符号(如 u+x
)指定权限。
常用格式:
-
数字表示法:每一位数字表示不同的用户权限(用户、组和其他人)。例如,
chmod 755 filename
表示所有者有读写执行权限,组和其他人只有读和执行权限。 -
符号表示法:
u
:所有者(user)
g
:组(group)
o
:其他用户(others)
+
:添加权限、
-
:移除权限、
=
:设置为指定权限
示例:
chmod 755 myscript.sh # 设置文件权限为所有者可读写执行,组和其他用户可读执行
chmod u+x script.sh # 添加执行权限给文件所有者
chmod g-w file.txt # 移除组的写权限
2. chown - 更改文件所有者
chown
命令用于更改文件或目录的所有者和所属组。它可以将文件归属从一个用户转移给另一个用户或组。
常用格式:
chown
用户:组 文件名:更改文件的用户和组。-R
:递归更改目录及其内部所有文件的所有者和组。
示例:
chown user1 myfile.txt # 将 myfile.txt 的所有者改为 user1
chown user1:usergroup myfile.txt # 将文件所有者设为 user1,组设为 usergroup
chown -R user1 /home/user1 # 递归更改 /home/user1 目录及其内容的所有者
3. chgrp - 更改文件所属组
chgrp
命令用于更改文件或目录的组,适用于保持文件所有者不变的情况下更改文件的所属组。
用法:
chgrp 组名 文件名
:更改文件的组。-R
:递归更改目录及其所有子文件的组。
示例:
chgrp usergroup myfile.txt # 更改 myfile.txt 文件的组为 usergroup
chgrp -R developers /var/www # 递归更改 /var/www 目录下所有文件的组为 developers
用户和组管理
用户和组管理命令用于创建、删除用户,设置密码,帮助系统管理员有效管理用户账户权限。
1. adduser - 添加新用户
adduser
命令用于创建新用户,并会提示设置密码、创建用户主目录和配置文件。
用法:
adduser 用户名
:创建新用户并配置主目录。
示例:
sudo adduser newuser # 创建名为 newuser 的用户,并配置默认目录
2. deluser - 删除用户
deluser
命令用于删除用户账户,可以选择是否删除用户的主目录。
常用参数:
--remove-home
:同时删除用户的主目录和配置信息。
示例:
sudo deluser olduser # 删除 olduser 用户,但保留主目录
sudo deluser --remove-home tempuser # 删除 tempuser 用户及其主目录
3. passwd - 修改用户密码
passwd
命令用于设置或更改用户的密码。只有管理员可以更改其他用户的密码。
用法:
passwd 用户名
:为指定用户设置密码。
示例:
passwd # 更改当前用户密码
sudo passwd user1 # 为 user1 用户设置新密码