Linux常用命令
本文最后更新于:4 年前
引言
Linux系统是许多IT专业人士和爱好者必须掌握的关键技能之一。本文详细介绍了多种Linux命令,旨在帮助用户有效地管理和操作Linux系统。从文件管理到系统监控,从网络配置到用户管理,每个部分都为读者提供了必要的命令及其选项。
关机重启
sync
命令说明:sync 命令用于将内存缓冲区中的数据同步到磁盘中。这个命令通常在执行重启或关机之前运行,以确保所有暂存的文件系统写入都被写入到相应的存储设备上,从而防止数据丢失。
常用选项
-f:强制同步,即使文件系统不认为需要。-d:只同步文件数据,不同步元数据。
注意事项:
- 在大多数现代Linux系统中,
sync通常是在系统关机或重启时自动执行的,因此手动运行此命令并不总是必要的。 - 尽管如此,如果在进行大量文件写入操作后,需要确保数据的安全性,手动执行
sync命令依然是一个好习惯。 - 在使用
sync命令时,需要有一定的耐心等待命令执行完毕,特别是在数据量大或存储设备较慢的情况下。
shutdown
命令说明:shutdown 命令用于安全地关闭或重启系统。它允许管理员指定关机时间并向所有登录的用户发送通知消息,确保系统按预期方式停止所有服务并关闭。
常用选项
-r:重启计算机。-h:关机后关闭电源。-h now:立即关机。-h +m:在m分钟后关机。-h hh:mm:在指定时间(24小时制)关机。
注意事项:
- 使用
shutdown命令时,应确保所有重要数据已保存,因为该命令将关闭所有运行的程序。 - 如果系统中有其他用户正在活动,最好提前通知他们关机或重启的计划,避免数据丢失或工作中断。
- 在多用户系统中,执行
shutdown命令通常需要管理员权限。 - 使用
shutdown命令代替直接断电可以防止文件系统损坏和数据丢失,因为它会先关闭所有服务和程序。
poweroff
命令说明:poweroff 命令用于安全地关闭系统并完全断电。这个命令在保证不会损坏文件系统或丢失数据的前提下,逐步关闭所有进程,然后断开电源。
常用选项
-f:强制立即关机,跳过标准的关机流程。使用此选项可能导致未保存的数据丢失或文件系统损坏。-p:在关机后断电,这通常是默认行为。-h:等同于-p,用于旧版系统兼容性,确保关机后硬件断电。-d:关机但不断电,这主要用于测试。
注意事项
- 在执行
poweroff之前,应确保所有重要数据已经保存,特别是在使用-f强制关机选项时。 - 由于
poweroff会彻底断电,确认硬件支持安全断电是必要的,以避免硬件损坏。 - 在多用户环境中,执行
poweroff之前通知所有用户是一个良好的实践,以避免突然断电造成的工作丢失或其他不便。 - 通常,执行
poweroff命令需要管理员权限,因为它涉及到整个系统的操作。
halt
命令说明:halt 命令用于停止所有CPU函数,通常用于系统维护或当系统需要物理检修时。它关闭所有运行的程序并停止操作系统,但不一定断电。
常用选项
-p:通常与poweroff命令的功能相同,用于关机并断电。-f:强制立即停止,跳过常规的关机流程,这可能会导致未保存的数据丢失。-w:只写入记录到wtmp文件(记录关机的日志)中,而不实际关机。-d:关机但不写入wtmp和utmp日志。
注意事项
halt通常不应该用于日常关机,因为它不保证完全断电。日常关机推荐使用poweroff或shutdown命令。- 使用
halt命令时,应确保系统处于安全状态,特别是在强制停止时,以避免文件系统损坏或数据丢失。 - 由于
halt直接停止所有硬件活动,而非逐步关闭进程,因此应谨慎使用,以防止对系统或硬件造成不可逆损害。 - 在多用户系统中,最好在执行
halt之前通知所有用户,以防止数据丢失或工作中断。
init
命令说明:init 命令用于控制运行级别(runlevel)的变更。在传统的Unix和Linux系统中,init 是所有进程的祖先(PID为1),负责系统的启动、运行和关闭。使用 init 命令,管理员可以更改系统的运行级别,例如从多用户模式切换到单用户模式,或者反过来。
常用选项
0:关机。1:单用户模式,主要用于维护。3:多用户文本模式,没有图形界面。5:多用户图形模式。6:重启。
注意事项
init命令在不同的Linux发行版中可能表现不同,尤其是在许多现代Linux发行版(如使用systemd的系统)中,init命令已被systemctl替代。- 使用
init命令改变运行级别时,需要管理员权限,并且必须确保系统处于可以安全改变运行级别的状态。 - 在多用户系统中,更改运行级别前应通知所有用户,以避免突然的运行级别变更导致的数据丢失或工作中断。
- 考虑到
init命令的强大功能和潜在的系统影响,使用时应格外谨慎。
reboot
命令说明: reboot 命令用于重新启动计算机。它通常在系统更新或需要重启以应用配置变更时使用。该命令会关闭所有运行的程序,然后重新启动系统。
:常用选项
-p:当与reboot命令一起使用时,此选项将关闭系统电源。-f:强制立即重启,绕过常规的关闭过程。这种方式可能会导致未保存的数据丢失。-h:同-p,用于关机并断电。-i:在重启前关闭所有网络接口。
注意事项:
- 使用
reboot命令前,应确保已保存所有工作和重要数据,以避免数据丢失。 reboot命令在多用户系统中执行时,最好通知所有用户即将重启,以防他们有正在进行的任务。- 在不支持热重启的硬件上,频繁使用
reboot命令可能会对硬件造成额外压力。 - 使用
-f选项可以快速重启系统,但这应该谨慎使用,因为它会跳过许多正常的关闭步骤,可能导致系统不稳定或数据损坏。
logout
命令说明:logout 命令用于从当前登录的会话中退出。它常用在命令行界面,特别是在远程登录会话(如SSH)中。使用此命令可以安全地结束会话,并关闭对应的终端。
常用选项logout 命令通常不需要任何选项,直接输入 logout 即可执行。
注意事项
logout命令只能在登录的shell会话中使用。例如,如果你是通过图形界面启动的终端,直接使用logout可能不会有任何作用,或者会显示错误消息。- 在使用远程终端或多用户环境时,使用
logout来结束会话是一个良好的安全实践,可以防止未授权的访问。 - 如果尝试在脚本中使用
logout命令,可能不会产生预期效果,因为它只对交互式登录会话有效。
硬件
uname
命令说明:uname 命令用于打印当前系统的详细信息,包括操作系统、内核版本、硬件名称等。这个命令对于快速了解正在使用的系统环境非常有用。
常用选项
-a:显示所有可用的系统信息(all),包括内核名称、节点名称、内核版本、机器、处理器、硬件平台和操作系统。-r:显示内核版本(release)。-s:显示内核名称(system),这通常是默认操作。-m:显示机器硬件名称(machine),通常是指CPU类型。-p:显示处理器类型(processor)。-o:显示操作系统名(operating system)。
注意事项
uname命令是只读的,即它不会修改系统设置或配置,只提供信息。- 该命令在所有主要的Linux发行版和Unix系统中都可用,是跨平台兼容的。
- 使用
-a选项可以快速获取系统的综合信息,这在进行故障排查或系统性能分析时特别有用。 uname的输出对系统管理员和开发人员来说非常重要,因为它帮助他们确认软件和驱动程序的兼容性问题。
arch
命令说明:arch 命令用于显示当前机器的处理器架构。它是 uname -m 命令的简化版,提供了快速查看系统架构信息的途径,如 x86_64、i686、arm等。
常用选项arch 命令通常没有额外的选项,直接执行 arch 即可显示结果。
注意事项
arch命令输出的信息比较简单,主要用于快速确认系统的硬件架构。- 在编写跨平台兼容的脚本或程序时,使用
arch可以帮助开发者判断运行环境,从而作出相应的处理。 - 由于输出信息较少,
arch命令常被用作其他脚本和命令的一部分,以提供必要的系统架构信息。
lscpu
命令说明:lscpu 命令用于显示系统的 CPU 架构信息,包括处理器类型、核心数量、线程数、架构位数、缓存信息等。这个命令可以帮助用户快速了解 CPU 的硬件信息,适用于性能分析、硬件诊断以及系统配置检查等场景。
常用选项
-e或--extended:以表格的形式显示所有 CPU 的详细信息。-p或--parse:以简洁的格式输出 CPU 信息,适用于脚本处理。-J或--json:以 JSON 格式输出 CPU 信息,方便与其他工具集成。-c或--cpu:指定查看某个 CPU 核心的具体信息。-h或--help:显示帮助信息,列出lscpu命令的所有选项。
注意事项
lscpu命令是查看系统 CPU 资源的快速工具,对于多核和多线程的处理器,它能提供每个核心和线程的详细信息,适合用于了解处理器性能的瓶颈。- 输出中的“Core(s) per socket”和“Thread(s) per core”可以帮助用户了解每个 CPU 插槽(Socket)上有多少个物理核心以及每个核心可以处理的线程数。
- 如果想获取更多关于 CPU 性能的详细信息,可以结合
top或htop等实时监控工具使用,获取更细粒度的资源使用情况。
lsusb
命令说明:lsusb 是一个用于显示本机的 USB 设备的列表的命令。这个命令对于诊断和管理 USB 设备特别有用,可以查看挂载的设备信息,包括设备厂商、设备ID等。
常用选项
-v:显示详细信息。输出包括关于USB设备的所有可用信息。-t:显示USB设备的树状结构,帮助理解设备之间的连接关系。-s [bus]:[devnum]:显示指定USB总线和设备编号的设备详情。-d [vendor]:[product]:显示指定厂商和产品ID的设备信息。
注意事项
- 运行
lsusb命令可能需要管理员权限,尤其是在使用-v选项显示详细信息时。 - 对于系统中连接的USB设备较多的情况,使用
-t选项可以更清晰地查看设备的层级和依赖关系。 - 在使用
-d选项时,厂商ID和产品ID应以16进制形式提供,这些信息可以通过简单的lsusb命令得到。 - 由于
lsusb主要用于查看信息,所以它不会对系统或USB设备产生任何更改或影响。
lspci
命令说明:lspci 是一个用于显示当前主机的所有PCI总线信息及所有已连接的PCI设备信息的命令。这个命令非常有用,可以帮助用户了解主机的硬件配置,尤其是与PCI设备相关的配置,包括显卡、声卡、网卡等。
常用选项
-v:显示详细信息。输出包括设备的详细信息,较基本输出更全面。-t:以树状格式显示PCI设备,帮助用户理解设备之间的层级关系。-n:显示PCI设备的厂商和设备代码,而不是其名称,这有助于快速识别设备。-s [bus]:[device]:[function]:显示指定位置的PCI设备详情,这些位置参数需要精确指定。
注意事项
- 在使用
-v选项时,可能需要超级用户权限,以获取更详细的信息。 lspci命令输出的信息量可能很大,特别是在设备较多的系统上,使用管道命令如grep可以帮助过滤并找到感兴趣的信息。- 使用
-t选项可以帮助新手更好地理解PCI设备的物理或逻辑排列。 - 这个命令主要用于信息检索,不会修改任何设备设置或系统配置。
系统
hostname
命令说明hostname 命令用于显示或设置系统的主机名。主机名是识别网络中设备的一个标识符,它在网络通信中非常重要,例如在使用SSH远程登录时。
常用选项
-f:显示完全限定域名(FQDN),即包括域的完整主机名。-i:显示主机的网络地址(IP地址)。-s:显示短主机名,即不包括域名的部分。新主机名:直接跟在命令后的新主机名,用于设置系统的主机名。
注意事项
- 改变主机名时,需要管理员权限,并且改变会即刻生效,但在某些系统中,重启后才会永久生效。
- 主机名应避免使用特殊字符或过长的名称,以免造成网络通信中的问题。
- 在网络中,应确保每个设备的主机名是唯一的,以避免网络服务错误。
- 使用
-f和-i选项可以帮助诊断网络问题,了解主机在网络中的标识。
who
命令说明:who 命令用于显示当前登录系统的所有用户信息。它提供了用户的登录名、所用的终端、登录时间等信息,有助于系统管理员监控和管理系统使用情况。
常用选项
-a:显示所有信息,包括用户、终端、登录时间、空闲时间、进程号等。-H:在输出的信息中包含列标题,使得信息更易于理解。-q:显示登录用户的名称和总数,快速查看当前登录的用户数量。-u:显示用户登录以及空闲时间,有助于了解用户的活跃程度。
注意事项
who命令非常适合用来快速检查系统中活跃的用户,特别是在多用户环境中。- 输出信息中的终端名可以帮助识别用户是从物理终端登录还是通过网络。
- 使用
who命令时,应注意隐私和安全问题,因为它显示了当前系统中所有用户的登录信息。 - 在脚本中使用
who命令可以自动化某些基于用户活动的任务,如自动注销长时间空闲的用户。
who am i
命令说明:who am i 命令用于显示当前用户的登录信息,包括用户名、终端号以及登录时间。这个命令实际上是 who 命令的一个特定用法,常用来确认当前会话的用户身份。
常用选项
这个命令通常不带额外选项,直接输入 who am i 就可以返回当前会话的登录信息。
注意事项
who am i与whoami命令不同。whoami只返回当前用户的用户名,而who am i返回的是完整的登录会话信息。- 在使用远程登录(如SSH)时,
who am i可以显示从哪个终端和IP地址登录的信息,对于检查和确认用户身份非常有用。 - 有时在脚本中使用
who am i命令来确定脚本是以何种用户身份运行,尤其是在权限敏感的操作中。 - 在某些环境中,如图形终端会话或某些配置的SSH环境下,
who am i命令可能不返回任何输出,这取决于系统如何记录会话信息。
uptime
命令说明:uptime 命令用于显示系统自上次启动以来已运行的时间,包括当前时间、系统运行时间、登录用户数以及平均负载。这个命令可以快速提供系统的活动概况,对于监控系统健康状态非常有用。
常用选项uptime 命令通常不带额外的选项,直接执行 uptime 即可显示系统运行时间和当前的负载信息。
注意事项
uptime命令提供的负载平均数表示过去1分钟、5分钟和15分钟的时间内,系统等待运行的进程平均数量。这些数字有助于评估系统的当前负载情况。- 在多用户系统中,
uptime可以快速显示当前的活跃用户数量,有助于管理员了解系统的使用情况。 - 该命令非常适合用于监控和报告脚本中,尤其是在需要定期检查系统运行状态的自动化任务中。
- 虽然
uptime命令输出简洁,但提供的信息对于判断系统是否正常运行非常关键。
env
命令说明:env 命令用于显示当前用户的环境变量或在修改后的环境中执行指定命令。它可以列出所有的环境变量,包括用户的路径(PATH)、使用的外壳(SHELL)等,或者在特定的环境设置下运行程序。
常用选项
-i或--ignore-environment:在一个空的环境中启动指定的命令。-u或--unset:删除指定的环境变量后执行命令。变量=值:在环境中设置一个变量后执行命令。
注意事项
- 使用
env命令可以在不改变当前环境变量的情况下,临时修改环境变量来运行程序,这在开发和测试中非常有用。 env命令也常用于脚本中,确保脚本在预定的环境变量设置下运行。- 在使用
-i选项时,因为所有环境变量都被忽略,所以执行命令可能需要手动设置一些必需的环境变量,比如PATH,以避免找不到基本的命令。 env命令非常适合用来查看当前的环境设置,特别是在复杂的开发环境中,了解当前设置的环境变量可以帮助排查问题。
lsmod
命令说明:lsmod 命令用于显示当前加载的内核模块的状态。它从 /proc/modules 读取信息,提供了关于各个模块的名称、大小、被使用的次数以及依赖关系等详细信息。这个命令对于系统管理员来说是理解和管理Linux内核模块非常重要的工具。
常用选项lsmod 命令本身不带额外的选项,直接执行 lsmod 即可获得当前系统所有活动的内核模块列表。
注意事项
- 在使用
lsmod命令时,输出列表中的“Used by”列非常重要,它显示了每个模块被其他模块依赖的情况,有助于确定模块之间的依赖性。 - 当需要卸载或故障排查某个模块时,
lsmod提供的信息可以帮助判断是否可以安全地卸载该模块,或者哪些模块可能因依赖问题而受到影响。 - 对于新手或不熟悉内核模块的用户,
lsmod的输出可能显得复杂。在这种情况下,结合使用modinfo命令来获取有关特定模块的更多信息会更有帮助。 - 由于
lsmod命令显示的是内核模块的实时状态,所以在进行系统维护或调优时,这个命令是不可或缺的工具。
date
命令说明:date 命令用于显示或设置系统日期和时间。这个命令可以格式化输出日期和时间信息,也可以用来修改系统的当前日期和时间,是系统管理中常用的工具。
常用选项
+%Y-%m-%d %H:%M:%S:使用指定的格式显示当前日期和时间,例如%Y表示四位年份,%m表示两位月份,等等。-u或--utc或--universal:显示或设置协调世界时(UTC)。-s或--set:设置系统日期和时间,格式通常跟随日期字符串,例如date -s "2024-05-25 20:00:00"。
注意事项
- 修改系统日期和时间通常需要管理员权限。
- 在脚本中使用
date命令来记录事件发生的时间或作为日志文件的时间戳非常有用。 - 使用
date命令时应注意系统的时间区设置,尤其是在处理跨时区的操作时。 - 如果系统配置了网络时间协议(NTP),手动更改系统时间后可能会被自动校正回网络时间。这在配置系统或进行故障排查时需特别注意。
cal
命令说明:cal 命令用于在终端显示公历日历。这个命令可以快速查看月历或年历,支持查看过去、现在和未来的日期信息。
常用选项
年份:显示指定年份的完整年历。月份 年份:显示指定年份和月份的日历,例如cal 5 2024显示2024年5月的日历。-3:显示当前月及其前后各一个月的日历。-m:以星期一作为一周的开始。
注意事项
cal命令默认显示当前月份的日历,其中周日作为一周的第一天。这可以通过-m选项改变,以符合国际标准。- 在进行日期相关的计划或回顾时,使用
cal命令可以快速获取日期信息,特别是在需要确定某一天是周几时。 cal命令是只读的,不能用来设置或更改日期,只用于查看。- 对于简单的日期查看需求,
cal命令是一个轻量级且即时的选择,不需要复杂的图形界面支持。
性能
top
命令说明top 命令用于动态显示运行中的系统进程和资源使用情况,包括CPU使用率、内存占用、以及进程状态等。这是系统管理员和用户监控系统性能的重要工具。
常用选项
-n:指定更新次数,用于控制top命令自动退出前的屏幕更新次数。-d:指定屏幕刷新的时间间隔(秒),控制查看实时数据的速度。-u:显示指定用户的进程。-p:指定监控的进程ID,这样可以更专注于某些特定的进程。
注意事项
top命令在使用时可以交互式操作,比如按%可以按 CPU 使用率排序,按M可以按内存使用率排序。- 在使用
top时,按q可以随时退出。 - 这个命令可以帮助及时发现资源使用异常的进程,是优化系统性能的一个重要步骤。
- 虽然
top提供了丰富的信息,但在输出信息量极大时可能会显得复杂难懂,特别是对初学者而言。使用帮助命令(按h)可以获得关于如何操作和理解top的更多指导。
vmstat
命令说明:vmstat (Virtual Memory Statistics) 命令用于显示关于系统虚拟内存、进程、CPU活动以及I/O块设备的统计信息。这个命令可以帮助诊断系统性能问题,提供实时系统性能监控的能力。
常用选项
1:运行vmstat 1会每秒刷新一次输出,提供实时更新的系统性能数据。-a:显示活动和非活动内存信息。-d:显示磁盘相关的统计数据。-s:显示内存使用统计汇总。-t:在报告中包含时间戳信息,有助于日志记录和长期性能分析。
注意事项
- 在高负载系统中,频繁运行
vmstat可能会对性能产生轻微的影响,尤其是在短时间间隔的情况下。 vmstat输出的某些列可能需要一些系统知识来正确理解,例如si(交换进) 和so(交换出) 指示的是内存与交换空间的活动情况。vmstat提供的数据可以帮助确定系统的瓶颈,如CPU、内存或I/O,但可能需要结合其他工具进行深入分析。- 使用
vmstat监控系统时,观察一段时间的趋势通常比单次的快照更有信息量,尤其是在解决性能问题时。
iostat
命令说明:iostat 命令用于显示系统的输入/输出统计信息,帮助监控系统的存储设备和分区的性能。该命令可以报告CPU利用率和每个物理磁盘的读写详细信息,非常适合分析性能问题和系统的瓶颈。
常用选项
-x:显示扩展统计信息,包括每个设备的详细性能数据。-c:仅显示CPU使用率。-d:仅显示磁盘统计信息。-m:显示统计信息的单位为MB/s。-t:显示时间戳,帮助追踪每次报告的具体时间。
注意事项
iostat命令通常用于定期监控系统性能,可与cron等工具结合使用,定时收集和记录数据。- 在分析输出数据时,高的等待时间和低的利用率可能表明存储性能存在问题。
- 运行
iostat可能需要一些基础的系统和硬件知识,特别是对于解释复杂的磁盘IO数据。 - 这个命令对于诊断系统延迟和磁盘使用效率非常有用,尤其是在处理大量数据读写的环境中。
sar
命令说明:sar 命令用于收集、报告或保存系统活动信息(System Activity Report),是系统性能分析工具sysstat的一部分。它可以显示关于CPU使用率、内存使用、磁盘I/O、网络性能等的数据,非常适合用于系统性能的长期监控和历史数据分析。
常用选项
-u:报告CPU使用情况,包括用户空间、系统空间和空闲时间的使用比例。-r:报告内存使用情况,包括物理和虚拟内存的统计数据。-b:报告I/O和传输速率统计。-n DEV:报告网络设备的活动。-f [文件名]:从指定的文件中读取历史数据,而不是实时数据。
注意事项
- 使用
sar命令前可能需要安装sysstat包,具体取决于系统发行版。 sar可以配置为定期收集系统性能数据,通常与cron作业结合使用,将数据保存到日志文件中。- 分析
sar输出时需要一定的系统和性能分析知识,以正确解读各项指标的含义。 sar命令的输出可以非常详细,使用过滤和排序工具(如grep、awk)可以帮助提取和查看关键数据。
free
命令说明:free 命令用于显示系统的内存使用情况,包括物理内存、交换空间和缓存的详细信息。这个命令可以帮助用户快速了解系统当前的内存状况和资源利用率。
常用选项
-m:以兆字节(MB)为单位显示内存使用情况。-g:以千兆字节(GB)为单位显示内存使用情况。-h:显示易于阅读的格式,自动为输出选择合适的单位(KB、MB、GB)。-t:添加一行显示物理内存和交换空间的总计。-s <间隔>:持续显示内存状态,间隔为指定的秒数。
注意事项
free命令提供的是瞬时内存使用情况,对于动态变化的内存状况,建议多次运行或使用-s选项进行定期监控。- 输出中的“buffer”和“cache”显示的是Linux内核用于缓冲和高速缓存的内存,这部分内存是可以被回收的,用于新的内存请求。
- 在评估系统的内存不足问题时,应关注“available”列,它提供了当前可用于新应用程序的内存估计值。
free是查看内存使用情况的快速工具,但对于更详细的分析,可能需要结合其他工具,如vmstat或top。
磁盘分区
fdisk
命令说明:fdisk 是一个用于磁盘分区的命令行工具。它允许用户创建、删除、调整和查看磁盘分区表。
常用选项
-l:列出所有磁盘及其分区信息。-u:以扇区为单位显示分区大小。/dev/sdx:指定要操作的磁盘设备,例如/dev/sda。
交互式命令
进入 fdisk 交互模式后,可以使用以下命令进行分区操作:
m:显示帮助菜单。n:新建一个分区。d:删除一个分区。p:显示当前分区表。w:将修改写入磁盘并退出。q:不保存修改并退出。
注意事项
- 使用
fdisk修改分区表时,需要有管理员权限。 - 在对磁盘进行分区操作之前,建议备份重要数据,因为分区操作可能会导致数据丢失。
fdisk适用于MBR(主引导记录)分区表,对于GPT(GUID分区表),建议使用gdisk或parted。- 操作分区后,可能需要重新启动系统或使用
partprobe命令来通知内核更新分区表。
swapon
命令说明:swapon 命令用于启用交换空间(swap),它可以是一个交换分区或交换文件。这有助于系统在物理内存不足时使用磁盘空间作为虚拟内存。
常用选项
-a:启用/etc/fstab文件中定义的所有交换设备。-s:显示当前已启用的交换空间信息,类似于cat /proc/swaps。-d:禁用指定的交换设备。-v:显示详细操作信息。--show:显示交换空间信息,等同于-s选项。
注意事项
- 使用
swapon命令启用交换空间需要管理员权限,通常通过sudo运行。 - 交换空间的配置通常在
/etc/fstab文件中定义,可以使用swapon -a启用所有配置的交换设备。 - 启用交换文件时,确保文件具有合适的权限和大小,并且使用
mkswap命令正确格式化过。 - 交换空间有助于系统在高负载情况下维持性能,但频繁使用交换空间可能会导致系统性能下降,因为磁盘I/O速度远低于内存访问速度。
df
命令说明:df(disk free)命令用于显示文件系统的磁盘空间使用情况。它可以帮助用户了解磁盘分区的总空间、已用空间和剩余空间。
常用选项
-h:以人类可读的格式显示磁盘空间(例如,使用KB、MB、GB等单位)。-T:显示文件系统的类型。-i:显示inode的信息而不是块使用信息。-a:显示所有文件系统,包括大小为0的伪文件系统。-l:仅显示本地文件系统,不显示网络文件系统。-t fstype:仅显示指定类型的文件系统。-x fstype:排除指定类型的文件系统。
注意事项
- 使用
df -h可以更直观地查看磁盘空间使用情况,因为它会自动选择合适的单位(如MB、GB)。 df -T可以帮助了解文件系统类型,有助于进行针对特定文件系统的维护操作。df显示的是块设备的使用情况,不包括内存文件系统(如 tmpfs)或交换分区的使用情况,除非使用-a选项。- 对于监控磁盘空间的自动化脚本,可以使用
df命令结合grep和awk等工具,提取和处理所需的磁盘空间数据。
du
命令说明:du(disk usage)命令用于估算文件和目录的磁盘空间使用情况。它可以帮助用户了解哪些文件或目录占用了磁盘空间。
常用选项
-h:以人类可读的格式显示磁盘使用情况(例如,使用KB、MB、GB等单位)。-s:只显示每个参数的总计,而不显示其子目录的使用情况。-a:显示目录中每个文件的磁盘使用情况,而不仅仅是目录。-c:最后再加上一个总计行。-d N:仅显示深度为 N 的目录的磁盘使用情况。-k:以KB为单位显示磁盘使用情况(默认单位)。-m:以MB为单位显示磁盘使用情况。--max-depth=N:与-d N类似,仅显示深度为 N 的目录的磁盘使用情况。--exclude=PATTERN:排除匹配PATTERN的文件和目录。
注意事项
- 使用
du -h可以更直观地查看磁盘使用情况,因为它会自动选择合适的单位(如MB、GB)。 - 使用
du -s可以快速获取某个目录或文件的总磁盘使用情况,而无需查看详细的子目录信息。 du -a可以帮助识别具体的文件占用了多少磁盘空间,适合详细分析磁盘空间占用情况。- 在大目录上运行
du可能需要较长时间,可以通过限制深度(例如--max-depth)来加快执行速度。
mount
命令说明:mount 命令用于挂载文件系统。它将设备(如硬盘分区、光驱、网络共享等)连接到目录树中的一个目录,使该目录成为访问该设备内容的入口。
常用选项
-t type:指定文件系统的类型,例如ext4,ntfs,vfat,iso9660等。-o options:指定挂载选项,例如ro(只读),rw(读写),noexec,nosuid等。多个选项用逗号分隔。-a:挂载/etc/fstab文件中定义的所有文件系统。-r:以只读方式挂载设备。-v:显示详细信息。-L label:按照文件系统标签挂载设备。-U uuid:按照文件系统的 UUID 挂载设备。
注意事项
- 挂载操作通常需要管理员权限,使用
sudo命令。 - 挂载时要确保目标挂载点(目录)存在,如果不存在可以先创建目录,例如
sudo mkdir /mnt/mydisk。 - 在进行写操作之前,确保以读写模式(
rw)挂载设备。 - 文件系统类型需要正确指定,否则挂载可能失败。
- 修改
/etc/fstab文件可以设置文件系统在系统启动时自动挂载。
umount
命令说明:umount 命令用于卸载已经挂载的文件系统。它将文件系统从目录树中分离,使设备不再被访问。
常用选项
-f:强制卸载文件系统,即使设备繁忙(仅适用于某些文件系统类型)。-l:延迟卸载文件系统,直到文件系统不再被使用时才实际卸载。-v:显示详细信息。-r:在无法卸载时尝试以只读方式重新挂载文件系统。
注意事项
- 卸载文件系统通常需要管理员权限,使用
sudo命令。 - 在卸载之前,确保没有任何进程正在使用该文件系统,以避免数据丢失或文件系统损坏。可以使用
lsof或fuser命令检查是否有进程在使用该文件系统。 - 强制卸载(
-f选项)可能导致数据丢失或文件系统不一致,应谨慎使用。 - 延迟卸载(
-l选项)在某些情况下非常有用,例如当设备被网络文件系统占用时。
fuser
命令说明:fuser 命令用于显示使用指定文件、目录或文件系统的所有进程的标识符。它可以帮助系统管理员找出哪些进程正在使用特定的资源,从而执行进一步的操作(如终止进程或卸载文件系统)。
常用选项
-a:显示所有指定文件的进程。-k:杀死访问指定文件的所有进程。-i:在杀死进程前进行交互确认,与-k选项一起使用。-l:列出所有已知的信号名称。-m:显示正在使用指定文件系统或挂载点的所有进程。-n space:指定命名空间(file, udp, tcp)进行操作。-s:显示简洁输出,不显示进程标识符。-u:显示进程所属的用户。-v:显示详细信息。-V:显示版本信息。
注意事项
- 使用
fuser命令时需要有管理员权限,特别是使用-k选项终止进程时。 - 在终止进程之前,应确保不会对系统或用户造成不良影响。使用
-i选项可以在终止进程前进行确认。 fuser命令可以与umount命令配合使用,找出导致文件系统繁忙的进程,以便安全地卸载文件系统。- 显示的进程标识符可以用于进一步的管理操作,例如通过
kill命令终止进程。
用户和用户组
useradd
命令说明useradd 是一个用于创建新用户账户的命令。它是Linux系统管理员用来设置新用户和其属性的基本工具。
常用选项
-m:创建用户的同时创建用户的主目录。-d /path/to/home:指定用户的主目录。-s /path/to/shell:指定用户的登录shell。-g group:指定用户的初始登录组。-G group1,group2:指定用户的附加组。-u UID:指定用户的唯一用户ID。
注意事项
- 在没有
-m选项的情况下,默认可能不会为新用户创建家目录,这取决于系统的配置。 - 使用
-s选项为用户指定的登录shell应当是/etc/shells文件中列出的有效shell。 - 为用户指定的UID应该是唯一的,不应与系统中已存在的其他用户ID冲突。
- 在添加用户时,确保了解并设置了适当的权限和组,以防止安全问题。
userdel
命令说明:userdel 是一个用于删除用户账户及其相关文件的命令。这个命令允许系统管理员从系统中移除用户的登陆能力和相关信息。
常用选项
-r:删除用户的同时,也删除用户的主目录以及邮件目录,这包括所有的文件和子目录。-f:强制删除用户,即使用户当前正在登录。
注意事项
- 删除用户时使用
-r选项要非常小心,因为这将连同用户的个人数据一起删除,无法恢复。 - 在执行
userdel命令时,确保用户没有正在运行的进程。可以使用pkill -u username命令来杀掉所有属于该用户的进程。 - 如果用户正在系统中登录或有活动的进程,直接删除可能会失败。在这种情况下,可能需要首先杀掉这些进程或从系统中注销该用户。
- 使用
-f选项可以强制删除账户,即使用户还有活动进程也会进行删除。这个选项应谨慎使用,因为它可能导致未预期的问题,比如数据丢失或系统不稳定。 userdel命令通常需要管理员权限执行,通常通过sudo来运行。
在进行用户删除操作之前,最好检查并确认是否有备份用户的重要数据,特别是如果使用了 -r 选项。这样可以避免因操作不当造成的数据丢失。
usermod
命令说明:usermod 命令用于修改已存在的用户账户的设置。它允许管理员更改用户的登录名、家目录、登录Shell、用户组等属性。
常用选项
-l new_name:更改用户的登录名。-d /new/home:更改用户的主目录,并使用-m选项同时移动所有内容到新目录。-s /new/shell:更改用户的默认登录Shell。-g group:更改用户的主组。-G group1,group2:更改用户的附加组列表,没有指定-a时会覆盖原有的附加组。-a:与-G一起使用,向用户的附加组列表添加新组而不移除现有组。-u UID:更改用户的用户ID (UID)。
注意事项
- 通常需要管理员权限执行。
- 修改用户登录名或用户ID时,确保新的名称或ID不与系统中其他用户冲突。
- 在更改主目录时,使用
-m选项来确保用户的数据被正确迁移。 - 更改用户的Shell时,应确保新Shell在
/etc/shells文件中被列出为有效。 - 修改用户组信息时,确保新的用户组已经存在。如果需要创建新组,可以使用
groupadd命令。 - 使用
-G选项时,如果不加-a,原有的附加组信息将被新指定的信息覆盖。要添加而不是替换组,需同时使用-a选项。
groups
命令说明:groups 命令用于显示指定用户所属的所有用户组。如果没有指定用户,它会显示当前用户的用户组。
常用选项
- 通常不需要特别的选项,直接使用
groups [username]即可显示用户的组信息。
注意事项
- 如果命令后不接任何用户名,
groups将显示当前登录用户的所有组信息。 - 此命令对于快速检查用户权限和组成员资格非常有用,尤其是在配置文件权限或调试访问问题时。
- 在多用户系统中,了解用户的组成员资格对于管理文件和目录的访问权限至关重要。
使用 groups 命令是一个简单而有效的方法来验证用户的组信息,特别是在处理文件系统权限和用户权限管理时,了解这些信息非常关键。
groupadd
命令说明:groupadd 命令用于创建一个新的用户组。它是系统管理员用来设置和管理系统用户组的基本工具。
常用选项
-g GID:指定新用户组的组ID(GID)。如果不指定,系统将自动分配下一个可用的GID。-r:创建一个系统组,系统组的GID通常小于1000(具体值取决于发行版)。
注意事项
- 通常需要管理员权限执行。
- 创建新组之前应确保组名唯一,避免与现有组名冲突。
- 确保使用的GID不与系统中现有的GID冲突,尤其是当手动指定GID时。
- 系统组通常用于系统服务和进程,而非普通用户使用,因此在创建系统组时应谨慎考虑其用途和安全性。
groupdel
命令说明:groupdel 命令用于删除现有的用户组。这允许系统管理员移除不再需要的用户组。
常用选项
- 此命令通常没有特殊选项,直接使用
groupdel groupname即可删除指定的组。
注意事项
- 在删除用户组之前,确保没有任何用户仍然属于该组。如果尝试删除一个仍有成员的组,此命令可能会失败。
- 删除用户组可能会影响依赖该组权限设置的系统服务和应用,因此在执行删除操作之前应仔细考虑其可能带来的影响。
- 此命令不会删除组目录,如有需要,需要手动删除相关文件和目录。
- 使用此命令需要具有管理员权限,通常需要通过
sudo进行。
groupmod
命令说明groupmod 命令用于修改现有用户组的属性。这包括更改用户组的名称或组ID(GID)。
常用选项
-n new_name:更改用户组的名称。-g GID:更改用户组的GID。当指定新的GID时,应确保它不与现有的GID冲突。
注意事项
- 通常需要管理员权限执行。
- 更改用户组名称时,应确保新名称不与系统中任何现有的用户组或用户名冲突。
- 更改GID时,应检查系统中是否有文件或目录仍然引用旧的GID,因为这些文件的权限可能需要相应更新。
- 在更改用户组信息之前,通知所有可能受影响的系统用户和服务是一个好习惯,以避免潜在的访问问题。
su
命令说明:su(switch user 或 substitute user)命令用于在同一个登录会话中切换不同用户的身份,通常用于获取超级用户(root)权限或切换到其他用户。
常用选项
- 无参数:默认切换到超级用户(root)。
-:切换到指定用户的登录环境,包括环境变量和工作目录,如su - username。username:直接跟在su后的用户名,切换到该用户,但不加载用户的完整环境。-c command:以指定用户的身份执行一个命令,然后返回到原用户。
注意事项
- 使用
su命令时通常需要输入目标用户的密码,除非是root用户切换到其他用户。 - 频繁使用
su切换到root用户可能带来安全风险,建议仅在必要时使用。 - 在使用
-c选项执行命令后,会立即返回原始用户,这对于脚本中执行单个命令很有用。 - 使用带
-的su(如su -或su - username)会启动一个登录shell,这意味着会读取用户的配置文件(如.bash_profile),设置一个与直接登录该用户相似的环境。
passwd
命令说明:passwd 命令用于修改用户的登录密码。它是用户和系统管理员管理账户安全的基本工具。
常用选项
- 无参数:默认修改当前用户的密码。
username:指定一个用户,修改该用户的密码(需要管理员权限)。--status:显示用户的密码状态信息。-e或--expire:强制用户在下次登录时修改密码。-l或--lock:锁定用户密码,禁止用户登录。-u或--unlock:解锁用户密码,允许用户登录。
注意事项
- 修改密码时,系统通常会要求输入当前密码作为验证。
- 为其他用户重设密码时需要具有管理员权限,通常通过使用
sudo执行。 - 使用
passwd修改密码时,建议遵循强密码原则,包括使用混合大小写字母、数字和特殊字符。 - 锁定或解锁账户时,只是禁止通过密码登录,用户可能仍然可以通过其他认证方式登录(如SSH密钥)。
w
命令说明:w 命令用于显示当前登录系统的用户信息以及他们正在执行的命令。它提供了一个快照,显示了系统的活动用户和他们的活动状态。
常用选项
-h:不显示标题行。-u:忽略用户名,显示以用户登录的方式。-s:使用短格式输出,不显示登录时间和JCPU(对终端的累积CPU时间)。
注意事项
w命令显示的信息包括用户名、终端、从哪里登录的远程主机、登录时间、空闲时间、JCPU时间、PCPU时间(当前进程所使用的CPU时间)和用户当前正在执行的命令。- 输出中的 “WHAT” 列显示用户正在执行的命令,这可以用来监控系统中的活动和诊断问题。
- 此命令对于系统管理员监控系统使用情况和用户活动非常有用,特别是在多用户环境中。
id
命令说明:id 命令用于显示关于用户的身份信息,包括用户的UID(用户ID)、GID(组ID)以及所属的所有用户组。
常用选项
-u:仅显示用户的UID。-g:仅显示用户的主组GID。-G:显示用户所属的所有组的GID。-n:与-u,-g, 或-G选项结合使用时,显示名称而非数字ID。username:显示指定用户的身份信息。
注意事项
id命令非常有用,尤其是在编写脚本时,需要确定运行环境的用户权限和组成员身份。- 输出的UID和GID是重要的安全属性,因为它们决定了用户对系统资源的访问权限。
- 常用于诊断权限问题或验证配置变更的影响。
last
命令说明:last 命令用于显示系统登录记录,特别是用户登录和注销的信息。它读取 /var/log/wtmp 文件的内容来报告每个会话的开始和结束。
常用选项
-n number:限制显示的行数,显示最近的number行记录。-a:在最后一列显示登录的主机名。-x:显示系统关机和系统运行级别改变的信息。-w:显示完整的用户域名。
注意事项
last命令提供的信息对于诊断系统问题、检查非授权访问或理解用户登录模式非常有用。- 记录可能会随时间增长非常大,使用
-n选项可以帮助限制输出的长度,使查找更加高效。 last命令输出的信息包括用户名、终端、IP地址或主机名、登录和注销时间,以及会话持续时间。- 考虑到隐私和安全,访问这些登录记录通常需要管理员权限。
crontab
命令说明:crontab 命令用于创建、编辑、列出或删除定时任务(cron jobs)。这些任务是在后台自动执行的计划任务,由cron守护进程管理。
常用选项
-e:编辑当前用户的crontab文件。-l:列出当前用户的crontab文件内容。-r:删除当前用户的crontab文件。-u username:指定一个用户,用于编辑、列出或删除指定用户的crontab(需要管理员权限)。
注意事项
- 编辑
crontab时,应注意正确设置时间和日期字段,格式错误可能导致任务无法按预期执行。 - 使用
crontab -e时,默认使用系统设置的编辑器,可以通过设置EDITOR环境变量来改变默认编辑器。 - 删除
crontab时务必小心,因为一旦删除,所有相关定时任务将不再执行。 - 考虑到系统安全和维护的便捷性,合理地组织和注释crontab中的任务非常重要。
cut
命令说明:cut 命令用于从文件或标准输入中提取文本的指定部分。通常用于处理和解析数据文件中的列。
常用选项
-b list:仅显示指定的字节。-c list:仅显示指定的字符。-d delim:使用指定的分隔符(默认是TAB)。-f list:显示指定的字段(列),使用-d选项指定分隔符。--complement:显示除指定范围之外的部分。-s:当行中不包含分隔符时,不输出该行。
注意事项
list的格式可以是单个数字、逗号分隔的数字列表或数字范围(如1-4,7)。cut命令通常与其他文本处理命令(如grep、sort、awk等)一起使用,以实现更复杂的数据处理任务。- 处理多字符分隔符时,
cut可能不适用,建议使用awk或perl。
网络
hostname
命令说明:hostname 命令用于显示或设置系统的主机名。主机名是系统在网络中的标识。
常用选项
-s:显示短主机名,即主机名的第一个部分。-f:显示FQDN(完全限定域名)。-d:显示域名部分。-i:显示主机名的IP地址。-I:显示所有网络接口的IP地址。-b:仅当设置主机名失败时才会返回错误。-V:显示版本信息。
设置主机名
- 直接使用
hostname new_hostname命令设置新主机名(需要管理员权限)。 - 永久设置主机名可以通过编辑
/etc/hostname文件实现,并使用systemctl restart systemd-hostnamed命令或重启系统使其生效。
注意事项
- 设置主机名需要有管理员权限,通常通过
sudo运行。 - 修改主机名时,应确保新主机名符合网络命名规则,并且在网络中唯一,以避免冲突。
- 修改主机名后,相关的网络服务和应用可能需要重新启动,以识别新的主机名。
- 对于分布式系统或集群,确保主机名和DNS配置的一致性,以保证系统通信的正常进行。
host
命令说明:host 命令用于执行DNS查找,获取域名对应的IP地址,或反向查找IP地址对应的域名。它是一个简单的DNS查询工具。
常用选项
-a:执行全面的查询,相当于查询所有类型的DNS记录。-t type:指定查询的记录类型,例如 A(地址记录)、MX(邮件交换记录)、NS(名称服务器记录)、TXT(文本记录)等。-v:显示详细查询信息。-c class:指定查询的DNS类,默认是 IN(Internet)。-W wait:设置等待DNS服务器响应的超时时间(以秒为单位)。-R retries:设置重试次数。-4:强制使用IPv4查询。-6:强制使用IPv6查询.
注意事项
host命令是一个简单而快速的DNS查询工具,适用于故障排查和验证DNS配置。- 在查询特定类型的DNS记录时,使用
-t选项可以获得更精确的结果。 - 在网络环境复杂或DNS服务器响应缓慢时,可以调整超时时间和重试次数,以确保查询成功。
nslookup
命令说明:nslookup 命令用于查询DNS(域名系统)记录。它可以用于查找域名对应的IP地址或从IP地址查找对应的域名,是一个交互式的DNS查询工具。
常用选项
-type=record_type:指定查询的DNS记录类型,例如 A、MX、NS、TXT 等。-timeout=seconds:设置等待DNS服务器响应的超时时间(以秒为单位)。-retry=number:设置重试次数。-debug:显示详细的调试信息。-query=record_type:同-type选项,指定查询的DNS记录类型。-vc:使用TCP连接而不是UDP进行查询。-port=port_number:指定DNS服务器的端口号。-class=class:指定查询的DNS类,默认是 IN(Internet)。
注意事项
nslookup命令在交互模式下使用时,可以输入多个查询命令,使用exit或Ctrl+C退出交互模式。- 查询特定类型的DNS记录时,使用
-type选项可以获得更精确的结果。 nslookup是一个较老的工具,在某些情况下可能会被dig命令替代,dig提供了更强大的功能和更详细的输出信息。
ifconfig
命令说明:ifconfig(interface configuration)命令用于配置、控制和查询网络接口。它是传统的网络配置工具,在现代系统中逐渐被 ip 命令取代,但仍然广泛用于诊断和管理网络接口。
常用选项
ifconfig:不带选项时,显示所有网络接口的当前配置。interface:指定网络接口名称,例如eth0,wlan0。up:启用指定网络接口。down:禁用指定网络接口。inet addr:设置指定接口的IP地址。netmask:设置指定接口的子网掩码。broadcast:设置指定接口的广播地址。mtu N:设置指定接口的最大传输单元(MTU)。hw ether:设置指定接口的MAC地址。
注意事项
- 配置网络接口时需要有管理员权限,通常通过
sudo运行。 - 临时配置的网络设置在系统重启后会丢失,需要将配置写入网络配置文件(如
/etc/network/interfaces或/etc/sysconfig/network-scripts/)以便永久生效。 - 使用
ifconfig可以快速查看网络接口的状态和流量统计信息。 - 在现代Linux系统中,推荐使用
ip命令(如ip addr和ip link)进行更高级和灵活的网络配置。
route
命令说明:route 命令用于显示和修改IP路由表。它可以设置静态路由,决定网络流量的转发路径。
常用选项
-n:以数字格式显示IP地址和网关地址,避免DNS查找延迟。add:添加一条新的路由。del:删除一条路由。default:设置默认路由。gw:指定路由的网关。metric:设置路由的度量值(优先级)。netmask:指定路由的子网掩码。
注意事项
- 配置路由表时需要有管理员权限,通常通过
sudo运行。 - 临时配置的路由设置在系统重启后会丢失,需要将配置写入网络配置文件以便永久生效。
- 在现代Linux系统中,推荐使用
ip route命令进行更高级和灵活的路由配置。
netstat
命令说明:netstat 命令用于显示网络相关的信息,例如网络连接、路由表、接口状态、网络协议统计等。
常用选项
-a:显示所有连接中的套接字,包括监听和非监听状态。-t:仅显示TCP连接。-u:仅显示UDP连接。-l:仅显示监听的连接。-n:以数字形式显示地址和端口号,避免DNS解析。-p:显示每个连接所属的进程ID和进程名称(需要管理员权限)。-r:显示路由表。-i:显示网络接口的统计信息。-s:显示各个协议的统计信息。
注意事项
- 配置网络信息时需要有管理员权限,通常通过
sudo运行。 netstat命令提供的输出信息可以帮助诊断网络问题,监控网络活动和安全性。- 在现代Linux系统中,
netstat已被ss命令取代,但仍广泛使用。
ss
命令说明:ss(socket statistics)命令是一个用于查看系统上的网络连接、路由表、接口统计等网络信息的实用工具,它是 netstat 命令的现代替代品。ss 提供了更快的数据获取方式,并能显示更多的网络连接信息。
常用选项
-t:显示 TCP 连接。-u:显示 UDP 连接。-a:显示所有连接(包括监听和非监听状态)。-l:仅显示处于监听状态的套接字。-p:显示每个套接字关联的进程。-n:不解析服务名称,显示端口号。-r:尝试解析网络和主机名。-s:输出套接字使用概要。-4:仅显示 IPv4 的套接字。-6:仅显示 IPv6 的套接字。-e:显示扩展信息,这会提供更详细的套接字信息。-o:显示计时器信息。
注意事项
- 某些
ss的用法(尤其是那些涉及进程信息的-p选项)可能需要超级用户权限来完全执行。
ifup
命令说明:ifup 命令用于启用网络接口。它读取网络配置文件中的配置并将指定的网络接口激活,使其可以发送和接收数据。
常用选项
-a:启用所有在配置文件中定义的网络接口。--force:即使接口已经启用,仍然强制重新启用。-v:显示详细的操作信息。
注意事项
- 使用
ifup命令需要有管理员权限,通常通过sudo运行。 - 网络接口的配置文件通常位于
/etc/network/interfaces或/etc/sysconfig/network-scripts/目录中,具体路径取决于Linux发行版。 - 在配置文件中正确设置网络接口的参数(如IP地址、子网掩码、网关等)是确保
ifup命令成功启用网络接口的关键。 ifup和ifdown命令通常成对使用,ifdown用于禁用网络接口。
ifdown
命令说明:ifdown 命令用于禁用网络接口。它读取网络配置文件中的配置并将指定的网络接口关闭,停止其发送和接收数据。
常用选项
-a:禁用所有在配置文件中定义的网络接口。--force:即使接口已经禁用,仍然强制重新禁用。-v:显示详细的操作信息。
注意事项
- 使用
ifdown命令需要有管理员权限,通常通过sudo运行。 - 禁用网络接口后,所有依赖该接口的网络连接将断开。
ifup和ifdown命令的配置文件路径和格式依赖于具体的Linux发行版。- 在执行
ifdown命令前,确保禁用该接口不会对系统造成不良影响,特别是在远程管理时。
iptables
命令说明:iptables 命令用于配置IPv4的包过滤规则、NAT和端口转发。它是Linux系统中防火墙和网络流量控制的重要工具。
常用选项
-A chain rule-specification:在指定链的末尾添加规则。-D chain rule-specification:删除指定链中的规则。-I chain rule-number rule-specification:在指定链的指定位置插入规则。-R chain rule-number rule-specification:替换指定链中的指定规则。-L [chain]:列出指定链的所有规则,如果未指定链,则列出所有链的规则。-F [chain]:清空指定链的所有规则,如果未指定链,则清空所有链的规则。-N chain:创建一个新的用户定义链。-X [chain]:删除用户定义链,如果未指定链,则删除所有用户定义链。-P chain target:设置指定链的默认策略。-p protocol:指定协议(如tcp、udp、icmp)。-s source:指定源地址。-d destination:指定目标地址。-j target:指定目标动作(如ACCEPT、DROP、REJECT、LOG)。
注意事项
- 使用
iptables命令需要有管理员权限,通常通过sudo运行。 - 配置防火墙规则时,应确保规则的顺序,因为iptables会按顺序处理规则,直到找到匹配的规则为止。
- 在对
iptables进行更改之前,建议备份当前的规则集,可以使用iptables-save命令保存当前配置。 - 配置完成后,可以使用
iptables-save > /etc/iptables/rules.v4命令保存配置,以便在系统重启时自动加载。 - 可以通过
iptables-restore命令恢复之前保存的规则集。 - 在现代Linux系统中,
iptables已经逐渐被nftables所取代,但仍然是许多系统管理员的重要工具。
dhclient
命令说明:dhclient 命令用于配置和管理DHCP(动态主机配置协议)客户端。它请求和获取网络参数(如IP地址、子网掩码、网关和DNS服务器)并配置网络接口。
常用选项
-v:显示详细操作信息。-r:释放当前的DHCP租约并停止dhclient。-x:释放所有接口上的DHCP租约并退出。-1:仅发送一次DHCP请求,不进行重试。-4:强制使用IPv4。-6:强制使用IPv6。-cf file:指定客户端配置文件。-lf file:指定租约文件。-pf file:指定保存进程ID的文件。-sf script-file:指定脚本文件,用于配置网络接口。
注意事项
- 使用
dhclient命令通常需要有管理员权限,通常通过sudo运行。 - 默认情况下,
dhclient会读取/etc/dhcp/dhclient.conf配置文件,但可以使用-cf选项指定其他配置文件。 - 释放DHCP租约(使用
-r选项)会使当前IP地址失效,可能导致网络连接中断。 dhclient会在后台运行,并定期向DHCP服务器续租,以确保IP地址和其他网络参数的持续有效。dhclient日志通常存储在系统日志文件中,可以通过查看/var/log/messages或journalctl获取详细信息。
route
命令说明:route 命令用于显示和修改IP路由表。它可以设置静态路由,决定网络流量的转发路径。
常用选项
-n:以数字格式显示IP地址和网关地址,避免DNS查找延迟。add:添加一条新的路由。del:删除一条路由。default:设置默认路由。gw:指定路由的网关。metric:设置路由的度量值(优先级)。netmask:指定路由的子网掩码。
注意事项
- 配置路由表时需要有管理员权限,通常通过
sudo运行。 - 临时配置的路由设置在系统重启后会丢失,需要将配置写入网络配置文件(如
/etc/network/interfaces或/etc/sysconfig/network-scripts/)以便永久生效。 - 设置默认路由时,要确保网关可达,否则会导致网络连接问题。
- 可以通过
route -n查看当前的路由表,检查配置是否正确。
traceroute
命令说明:traceroute 命令用于显示数据包到达目标主机所经过的路径。它可以帮助诊断网络故障、确定网络延迟的位置和检查路由路径。
常用选项
-m max_ttl:设置最大TTL(生存时间)值,默认是30。-p port:设置目的端口,默认是33434。-q nqueries:对每个跳进行查询的次数,默认是3。-w wait:设置等待每次回复的超时时间(以秒为单位)。-I:使用ICMP ECHO代替UDP数据包。-T:使用TCP SYN数据包代替UDP数据包。-4:强制使用IPv4。-6:强制使用IPv6。
注意事项
- 需要管理员权限才能执行某些类型的
traceroute命令,例如使用ICMP或TCP包。 - 运行
traceroute命令可能会被某些防火墙或网络设备阻止,导致部分或全部路径无法显示。 traceroute显示的是数据包通过的路由器的IP地址和延迟时间,有时可能无法解析某些IP地址的主机名。- 路由路径的变化可能导致
traceroute的结果不一致,这是正常现象,尤其是在复杂的网络环境中。
ping
命令说明:ping 命令用于测试网络连通性。它通过发送ICMP ECHO请求数据包并等待响应,来检测目标主机的可达性和网络延迟。
常用选项
-c count:发送指定数量的请求数据包,然后停止。-i interval:设置发送每个数据包的间隔时间(以秒为单位),默认是1秒。-s packetsize:设置每个请求数据包的大小(以字节为单位),默认是56字节。-t ttl:设置数据包的TTL(生存时间),默认是64。-W timeout:设置等待每个响应的超时时间(以秒为单位),默认是1秒。-q:静默模式,只显示开始和统计信息。-v:显示详细输出,包括每个数据包的发送和接收信息。-4:强制使用IPv4。-6:强制使用IPv6。
注意事项
ping命令的结果可以帮助诊断网络连接问题,例如网络延迟、数据包丢失和主机不可达等问题。- 使用
ping命令时,目标主机需要启用ICMP ECHO响应,否则即使主机可达,也不会收到响应。 - 发送大量的
ping请求可能会对网络和目标主机造成负载,因此在测试时应适当控制请求的数量和频率。 - 某些网络设备或防火墙可能会限制或阻止ICMP ECHO请求,因此在这些情况下可能无法获得正确的结果。
telnet
命令说明:telnet 命令用于通过TELNET协议与远程主机建立连接。它可以用于远程登录、测试端口连通性和诊断网络服务。
常用选项
host:连接的远程主机名或IP地址。port:连接的远程端口号,默认是23。-l user:以指定的用户名登录远程主机。-a:自动登录,使用当前用户名。-e escape_char:设置脱离字符,默认是Ctrl+]。-E:禁用脱离字符功能。-8:允许使用8位字符数据,禁用8位字符的转义。-L:使用8位数据路径进行输出。
注意事项
telnet传输的数据是明文的,不安全,因此在生产环境中建议使用更安全的协议,如SSH(Secure Shell)。- 使用
telnet命令连接远程主机时,需要确保TELNET服务在远程主机上运行,并且防火墙允许相应端口的通信。 telnet可以用于测试特定端口的连通性,例如telnet host 80用于测试HTTP服务的连通性。- 在连接到远程主机后,可以使用
Ctrl+]进入telnet命令模式,输入quit断开连接。
curl
命令说明:curl 命令用于在命令行中进行网络请求和数据传输。它支持多种协议,包括HTTP、HTTPS、FTP、SMTP等,是一个强大的网络工具。
常用选项
-X, --request:指定请求方法,如 GET、POST、PUT、DELETE 等。-d, --data:发送指定的数据,适用于 POST 请求。-H, --header:添加请求头。-o, --output:将输出写入到指定文件。-O, --remote-name:将远程文件下载到本地,保持远程文件名。-u, --user:指定用户名和密码进行服务器认证。-I, --head:只请求头信息。-L, --location:跟随重定向。-k, --insecure:允许不安全的 SSL 连接。-v, --verbose:显示详细的请求和响应信息。-s, --silent:静默模式,不显示进度和错误信息。-w, --write-out:输出额外的信息。
注意事项
curl是一个非常灵活的工具,可以与多种协议和认证机制配合使用。- 使用
-d选项发送数据时,默认的请求方法是 POST,可以通过-X指定其他方法。 - 当下载大文件时,使用
-O选项可以方便地保存文件,并保持远程文件的名称。 - 为了安全性,处理敏感数据时应小心使用
-k选项。 - 使用
-v选项可以帮助调试网络请求,显示详细的请求和响应头信息。 curl的功能非常强大,建议结合使用不同选项和参数,以实现所需的网络请求和数据传输任务。
scp
命令说明:scp 使用 SSH 来传输数据,提供与 SSH 相同的认证和同样的安全保障。它可以复制文件到主机之间或从一个主机到另一个主机。
常用选项
-P <端口>:指定 SSH 连接的端口。注意是大写的P,因为小写的-p被用于保留文件的修改和访问时间。-p:保留原文件的修改时间,访问时间和访问权限。-r:递归复制整个目录。-i <密钥文件>:用指定的 SSH 私钥文件进行认证,这在自动化脚本中非常有用。-C:启用压缩。如果要传输的文件未压缩,这会提高传输速度。-q:静默模式,不显示进度条和错误消息。
注意事项
- 尽管
scp使用 SSH 进行安全传输,用户仍应注意确保使用强密码或密钥认证,并且定期更新。 - 在网络连接慢或不稳定时,大文件传输可能会中断,且不支持断点续传。
rsync
命令说明:rsync 可以用于本地文件复制、目录树的完整备份,以及与其他计算机之间的同步。它支持多种选项来控制其行为和输出,包括数据压缩和差异比较,确保网络传输的效率和速度。
常用选项
-v(verbose):详细模式,显示正在执行的操作。-r(recursive):递归到目录,即包含子目录。-a(archive):归档模式,等同于-rlptgoD,它保留符号链接、设备、属性、权限、所有权等。-z(compress):在发送时压缩数据。-h(human-readable):输出易读的格式,例如使用 K, M, G 等单位。--delete:删除目的地中源端已经删除的文件。--progress:在传输时显示进度条。--exclude:排除不需要同步的文件或目录。-e(ssh):指定使用 SSH 作为数据传输的通道,提高安全性。
注意事项
rsync是处理大文件和大量文件的理想工具,因为它只传输变更部分。- 使用
--delete选项时要格外小心,因为它会删除目标目录中不存在于源目录的文件。
wget
命令说明:wget 具有众多功能,包括但不限于文件下载、网站镜像、断点续传和带宽限制。它可以处理大量的下载任务,非常适合自动化的脚本和定时任务。
常用选项
-O <文件名>:将下载的文件保存为指定的文件名。-c:继续执行部分下载的文件,实现断点续传。-r或--recursive:递归下载,常用于下载整个网站。-l <深度>或--level=<深度>:递归下载时的最大深度。--limit-rate=<速率>:限制下载速度,例如--limit-rate=100k限制为每秒100KB。--no-clobber:不覆盖已存在的文件或链接。-i <文件>或--input-file=<文件>:从指定文件读取要下载的URL列表。--http-user=<用户名>和--http-password=<密码>:指定 HTTP 认证所需的用户名和密码。--mirror:开启镜像下载,等同于-r -N -l inf --no-remove-listing。--convert-links:下载完成后,将文档中的链接转换为本地链接,适用于离线浏览。--no-parent:在递归下载时,不下载父目录中的链接。
注意事项
wget常用于脚本中自动化下载任务,设置适当的重试参数和失败后的行为可以提高脚本的鲁棒性。- 在使用
wget进行大规模下载(如镜像网站)时,要注意对目标服务器和你的网络带宽的影响。
进程
ps
命令说明:ps 命令用于显示当前系统上的进程信息。它是一个用于查看系统运行状态和诊断问题的基础工具。
常用选项
-A:显示所有进程。-a:显示所有终端上的进程,不包括会话领导者。-u:显示与指定用户相关的进程。-x:显示没有控制终端的进程。-e:显示所有进程,效果与-A相同。-f:全格式列表显示进程信息。-l:长格式列表显示进程信息。-p:按进程ID过滤。-t:按终端过滤。-o:自定义输出格式。
注意事项
ps命令的输出可以通过管道传递给其他命令(如grep)以进行进一步处理或筛选。- 使用
-f或-l选项可以获取更详细的进程信息,如进程的父进程ID(PPID)、启动时间、CPU和内存使用情况等。 ps命令显示的是命令执行时的快照,要监控进程的动态变化,可以结合watch命令使用,或者使用top或htop等命令进行实时监控。- 自定义输出格式(使用
-o选项)可以根据需要选择显示特定的字段,如ps -o pid,ppid,cmd,%mem,%cpu。
kill
命令说明:kill 命令用于向进程发送信号,通常用于终止进程。默认情况下,kill 发送 SIGTERM 信号,这将请求进程正常终止。
常用选项
-l [signum]:列出所有信号的名称,或者按信号编号显示信号名称。-s signal:发送指定的信号,而不是默认的SIGTERM。-n signum:通过信号编号发送信号,而不是信号名称。-p:不发送信号,只显示指定进程的PID。-SIGKILL或-9:强制终止进程,不执行清理操作。
注意事项
- 发送信号需要相应的权限,通常需要通过
sudo提升权限。 - 使用
kill -9发送SIGKILL信号会立即终止进程,不进行任何清理操作(如释放资源、保存数据等),应谨慎使用。 - 可以通过
ps或top等命令获取进程ID(PID),然后使用kill命令终止进程。 kill命令只能向当前用户拥有的进程或由根用户拥有的进程发送信号。
常见信号
SIGTERM(15):请求进程正常终止(默认信号)。SIGKILL(9):强制终止进程,不能被捕获或忽略。SIGINT(2):终止进程,通常由Ctrl+C触发。SIGHUP(1):挂起信号,通常在终端断开时发送。SIGSTOP(19):停止进程执行,不能被捕获或忽略。SIGCONT(18):继续执行被停止的进程。
系统服务
chkconfig
命令说明:chkconfig 命令用于管理系统服务的启动和停止。它主要在基于SysV init的Linux系统上使用,用以设置服务在各个运行级别中的启动和停止状态。
常用选项
--list:列出所有服务的启动和停止状态。--add:添加服务到管理列表中。--del:从管理列表中删除服务。service name on/off:启用或禁用指定服务在各个运行级别中的启动。
注意事项
- 使用
chkconfig修改服务状态需要管理员权限。 - 只有那些包含适当的初始化脚本(通常位于
/etc/init.d/目录)的服务才能使用chkconfig管理。 chkconfig不会立即启动或停止服务,它仅修改服务在指定运行级别中的启动和停止设置。要立即启动或停止服务,需要使用service命令。- 在现代基于systemd的系统中,
chkconfig已被systemctl所取代,因此在这些系统上应使用systemctl管理服务。
service
命令说明:service 命令用于控制系统服务的启动、停止、重启和查看状态。它主要用于基于SysV init的Linux系统上,调用位于 /etc/init.d/ 目录下的脚本。
常用选项
service service_name start:启动指定服务。service service_name stop:停止指定服务。service service_name restart:重启指定服务。service service_name status:查看指定服务的状态。service --status-all:显示所有服务的状态。
注意事项
- 使用
service命令需要管理员权限。 service命令的操作是即时生效的,与chkconfig命令不同,service直接影响服务的当前状态。- 在现代基于systemd的系统中,
service命令通常是systemctl的一个兼容层。因此在这些系统上应使用systemctl命令进行服务管理,以获得更全面和现代化的服务控制功能。
systemctl
命令说明:systemctl 命令用于控制和管理systemd系统中的系统和服务管理器。它提供了启动、停止、重启和查看服务状态的功能,并能管理服务的启用和禁用。
常用选项
systemctl start service_name:启动指定服务。systemctl stop service_name:停止指定服务。systemctl restart service_name:重启指定服务。systemctl status service_name:查看指定服务的状态。systemctl enable service_name:启用指定服务,使其在系统启动时自动启动。systemctl disable service_name:禁用指定服务,使其在系统启动时不自动启动。systemctl is-enabled service_name:检查服务是否已启用。systemctl daemon-reload:重新加载systemd管理的配置文件。systemctl list-units --type=service:列出所有系统服务的状态。
注意事项
- 使用
systemctl命令需要管理员权限。 systemctl是systemd系统中的核心工具,替代了service和chkconfig等旧有命令。- 在更改服务配置文件后,通常需要运行
systemctl daemon-reload来使更改生效。 systemctl提供了广泛的功能,不仅可以管理服务,还可以管理挂载点、设备、时间同步等其他systemd单元。熟练掌握systemctl对于管理现代Linux系统至关重要。
文件和目录
file
命令说明:file 命令读取一个或多个文件的头部数据,并基于魔术数字、文件头部信息和其他启发式测试来分析和确定文件类型。
常用选项
-b或--brief:不显示文件名,只显示文件类型信息。-i或--mime:输出 MIME 类型字符串,而非可读描述,适用于自动化处理。-f <文件列表>或--files-from=<文件列表>:从文件读取要检查的文件名列表。-z或--uncompress:尝试去解压任何压缩文件,然后再检查其类型。-L或--dereference:跟踪符号链接,检查链接指向的实际文件。-e <测试类型>:指定进行何种测试,比如ascii,compress,tar等,以优化性能或增加精确度。
注意事项
file命令需要有读取目标文件的权限。如果没有适当的权限,命令可能无法正确执行。- 对于二进制文件,
file命令可能只能显示基本的信息,如 “ELF 64-bit LSB executable”,而不会详细描述文件的用途或来源。 - 有些文件可能会显示为 “data” 或其他不具体的描述,这通常表示
file无法准确识别文件内容。
grep
命令说明:grep 是一种强大的文本搜索工具,用于在文件中搜索包含指定模式的行。
常用选项
-i:忽略大小写(即无论是大写还是小写都视为相同)。-v:反转匹配,显示不匹配的行。-c:计算找到的匹配行数而不是显示匹配行。-n:显示匹配的行号。-r或-R:递归查找文件目录。-l:仅列出包含匹配项的文件名,不显示具体匹配的行。-o:仅显示匹配到的部分,而非整行内容。-E:启用扩展正则表达式(相当于使用egrep)。-F:将模式作为固定字符串处理,而不是正则表达式(相当于使用fgrep)。-A n:打印匹配行及其后的n行。-B n:打印匹配行及其前的n行。-C n或--context=n:打印匹配行及其前后的n行。-
-q:使grep静默执行,仅通过退出状态码来表明是否找到匹配项
注意事项
- 特殊字符(如
*.?[])在正则表达式中有特定的意义,如果要按字面意义搜索这些字符,需要使用反斜杠\进行转义。 - 通过
--exclude或--include参数可以排除递归搜索中不必要的目录或文件类型 - 确保处理的文本文件和
grep使用的编码一致(如 UTF-8, ASCII 等)。如果编码不匹配,可能导致搜索结果不准确或漏掉某些匹配项。 - 在处理包含多种语言或特殊字符的文本时,使用
-a选项将二进制文件视为文本,可以帮助避免因编码问题而导致的错误。
cat
命令说明:cat(concatenate)命令是 Unix 和类 Unix 系统中用来读取、创建和合并文件的常用工具。cat 呸首先是被设计用来将几个文件的内容合并并输出,但它也经常被用来简单地显示文件内容。
常用选项
- **
-n**:在输出的每行前面加上行号。 - **
-b**:和-n类似,但不为空白行编号。 - **
-s**:压缩连续的多个空白行为一个空白行。 - **
-E**:在每行结束处显示$字符,可以明显看到行结束符和空行。 - **
-T**:显示制表符(tab)为^I。
注意事项
- 直接使用
cat命令查看大文件可能会导致终端瞬间被大量数据刷新而难以查看,对于查看大文件内容建议使用less或more命令。 - 在处理大量小文件时,合并这些文件的输出再处理比单独处理每个文件要效率低。
tac
命令说明:tac 主要用于将文本文件的行逆序输出。这在需要查看日志文件的最新条目(通常位于文件底部)时特别有用,而不必读取整个文件。
常用选项
tac命令的选项相对较少,因为它的主要任务非常单一。它通常没有必要的选项,直接使用即可达到反向显示文件内容的效果。
注意事项
- 一次性读取整个文件内容到内存中再进行输出,所以对于非常大的文件,可能会消耗大量内存资源
head
命令说明:head 命令用于输出文件的开始部分到标准输出。默认情况下,它显示文件的前10行。
常用选项
-n <数值>或--lines=<数值>:指定显示文件开始的行数。例如,head -n 5 file.txt会显示文件file.txt的前5行。-c <数值>或--bytes=<数值>:指定显示文件的前多少字节。
tail
命令说明:tail 命令用于输出文件的末尾部分到标准输出。默认情况下,它显示文件的最后10行。
常用选项
-n <数值>或--lines=<数值>:指定显示文件末尾的行数。例如,tail -n 5 file.txt会显示文件file.txt的最后5行。-c <数值>或--bytes=<数值>:指定显示文件末尾的多少字节。-f或--follow:实时输出文件的新增内容。这在监视实时更新的日志文件时非常有用。例如,tail -f access.log会持续显示access.log文件末尾的内容,并实时更新。
less
命令说明:less 命令是一个强大的文本查看工具,常用于在 Unix 和类 Unix 系统中查看(但不修改)大文本文件。它允许用户以逐行或逐页的方式滚动浏览文件,而不必一次加载整个文件。
常用选项
-N或--LINE-NUMBERS:显示每行的行号。-S或--chop-long-lines:单行超出屏幕宽度时,不自动折行显示,而是允许用户左右滚动查看。-i:在搜索时忽略大小写,除非搜索字符串包含大写字母。-R:解析文件内容中的颜色代码,使彩色输出(如日志文件中的颜色)正确显示。-F:如果文件内容可以在一个屏幕内显示完毕,则不进入less,直接显示文件内容后退出。-m:显示更详细的提示,包括文件的百分比位置和当前显示的行范围。-X:不发送清屏指令到终端。退出less时,屏幕内容不会被清除。-g:只高亮第一个搜索匹配,而不是高亮所有匹配项。
快捷键
- 导航快捷键
空格键:向下翻一页。b:向上翻一页。d:向下滚动半页。u:向上滚动半页。回车键(Enter):向下滚动一行。y或k:向上滚动一行。Ctrl+F:向下滚动一页(与空格键相同)。Ctrl+B:向上滚动一页(与 b 键相同)。g:跳到文件的开始。G:跳到文件的末尾。p或 **%**:跳到文件中的某个百分比位置。
- 搜索快捷键
/:向下搜索一个字符串。?:向上搜索一个字符串。n:重复前一个搜索(按照相同方向)。N:重复前一个搜索(按照相反方向)
- 其他
h:显示帮助屏幕,列出所有的命令。q:退出less。R:刷新屏幕和清除缓存中的文件内容,适用于查看动态生成或更新的日志文件。m加上一个字母:标记当前位置,你可以用单个字母(例如 a)标记多个位置。'加上一个之前设置的标记字母:跳转到该标记位置。=:显示当前行的行号和文件名。F:实时跟踪最新添加到文件的内容,类似于tail -f。使用 Ctrl+C 退出此模式。v:在当前位置启动默认的文本编辑器编辑当前文件。V:查看版本和版权信息。
- 显示调整
-S:切换折行和截断长行的显示模式。在长行模式下,可以使用左右箭头键水平滚动。z:按当前屏幕大小向下翻页。w:按当前屏幕大小向上翻页。Ctrl+L:重新绘制屏幕。
cd
命令说明:cd(change directory)命令用于更改当前工作目录。它是用户在文件系统中导航的基本命令。
常用选项
- 无特别选项:直接使用
cd后跟目标目录路径来更改目录。 cd ~:进入当前用户的主目录。cd ..:返回上一级目录。cd -:返回到上一个工作目录。cd /path/to/directory:进入指定路径的目录。
注意事项
- 路径可以是相对路径或绝对路径。相对路径是相对于当前工作目录的路径,绝对路径是从根目录开始的完整路径。
- 使用
cd命令时,确保目标目录存在,否则会返回 “No such file or directory” 错误。 - 可以结合环境变量使用,如
cd $HOME进入当前用户的主目录。 cd ..命令对于逐步向上导航目录层次结构非常有用。- 切换目录时,当前工作目录会在环境变量
PWD中反映出来。
pwd
命令说明:pwd(print working directory)命令用于显示当前工作目录的完整路径。它可以帮助用户确认当前所处的目录位置。
常用选项
- 无特别选项:直接使用
pwd命令即可显示当前工作目录的路径。
注意事项
pwd命令显示的是绝对路径,这有助于用户在文件系统中导航和操作时确认自己的位置。- 在脚本中使用
pwd可以获取当前工作目录路径,用于需要基于当前目录进行文件操作的场景。 - 不同的shell(如bash、zsh)默认提供内置的
pwd命令,效果与独立的pwd程序相同。 pwd命令没有参数,因此非常简单直接,可以随时使用来确认当前目录。
pwd 是一个简单而实用的命令,特别是在复杂的目录结构中进行导航时,可以帮助用户始终了解自己所在的位置。
ls
命令说明:ls 命令用于列出指定目录中的文件和目录。它是Linux系统中最常用的命令之一,用于查看目录内容。
常用选项
-l:使用长格式列出文件信息,包括权限、所有者、文件大小和修改时间。-a:显示所有文件,包括隐藏文件(以.开头的文件)。-h:与-l结合使用,以人类可读的格式显示文件大小(例如 KB、MB)。-R:递归列出子目录中的内容。-t:按修改时间排序。-r:逆序排列。-S:按文件大小排序。
注意事项
ls命令的输出可以通过管道传递给其他命令(如grep)以进行进一步处理或筛选。ls -l提供的详细信息对于检查文件权限和所有者非常有用。- 使用
ls -a可以查看包括隐藏文件在内的所有文件,适合在需要检查配置文件或隐藏目录时使用。 ls命令的输出在不同的终端和环境下可能会有所不同,可以通过别名或配置文件自定义输出格式。
mkdir
命令说明:mkdir(make directory)命令用于创建新的目录。
常用选项
-p:递归创建目录。如果上级目录不存在,会自动创建上级目录。-v:显示创建目录的详细信息。-m mode:设置新建目录的权限,使用八进制数表示,如mkdir -m 755 newdir。
注意事项
- 确保指定的路径和目录名称是有效的,并且没有与现有文件或目录冲突。
- 使用
-p选项创建目录时,可以一次创建多层目录,而无需手动逐层创建。 - 目录权限可以在创建时通过
-m选项设置,也可以使用chmod命令在创建后进行修改。 - 在受限权限的环境中执行
mkdir可能需要管理员权限或特定用户权限。
rm
命令说明:rm(remove)命令用于删除文件和目录。
常用选项
-r或-R:递归删除目录及其内容。-f:强制删除,不提示确认。-i:交互式删除,每次删除前询问确认。-v:显示删除过程的详细信息。
注意事项
- 使用
-r或-R选项删除目录时,要特别小心,因为它会递归删除目录及其所有内容。 -f选项可以忽略不存在的文件错误,并强制删除文件,不建议随意使用以免误删重要文件。-i选项在删除多个文件或目录时非常有用,可以防止意外删除重要文件。- 删除操作是不可逆的,被删除的文件无法通过
rm命令恢复,因此操作前应仔细确认。 - 在受限权限的环境中执行
rm可能需要管理员权限或特定用户权限。
rmdir
命令说明:rmdir 命令用于删除空目录。与 rm -r 不同,rmdir 只能删除空目录,如果目录非空则会报错。
常用选项
--ignore-fail-on-non-empty:忽略非空目录的错误信息。-p:递归删除目录及其上级空目录。如果上级目录变为空目录,也会被删除。-v:显示删除过程的详细信息。
注意事项
rmdir只能删除空目录,尝试删除非空目录时会失败并报错。- 使用
-p选项时,可以方便地删除多个嵌套的空目录。 - 删除目录的操作是不可逆的,因此在执行删除操作前,务必确认目录内容和删除需求。
- 在需要删除非空目录时,应该使用
rm -r命令而不是rmdir。 - 在受限权限的环境中执行
rmdir可能需要管理员权限或特定用户权限。
mv
命令说明:mv(move)命令用于移动或重命名文件和目录。
常用选项
-i:交互式操作,如果目标文件已存在,提示用户确认是否覆盖。-f:强制操作,如果目标文件已存在,直接覆盖而不提示。-n:不覆盖任何已存在的文件。-v:显示移动或重命名过程的详细信息。-u:仅在源文件比目标文件新或目标文件不存在时执行移动或重命名。
注意事项
mv命令可以用于重命名文件和目录,也可以用于在不同位置之间移动文件和目录。- 使用
-i选项可以避免意外覆盖文件,特别是在移动或重命名多个文件时。 -f选项会直接覆盖目标文件,因此使用时需要特别小心,以免丢失重要数据。- 移动文件或目录时,
mv命令会保留原始文件的权限和属性。 - 在受限权限的环境中执行
mv可能需要管理员权限或特定用户权限。
cp
命令说明:cp(copy)命令用于复制文件和目录。
常用选项
-r或-R:递归复制目录及其内容。-i:交互式操作,如果目标文件已存在,提示用户确认是否覆盖。-f:强制操作,如果目标文件已存在,直接覆盖而不提示。-v:显示复制过程的详细信息。-u:仅在源文件比目标文件新或目标文件不存在时执行复制。-a:归档模式,递归复制并保持所有文件属性,相当于-dR --preserve=all。-p:保留文件的属性,如修改时间、访问权限等。-n:不覆盖任何已存在的文件。
注意事项
cp命令默认情况下只复制文件,如果要复制目录,需要使用-r或-R选项。- 使用
-i选项可以避免意外覆盖文件,特别是在复制多个文件时。 -f选项会直接覆盖目标文件,因此使用时需要特别小心,以免丢失重要数据。- 复制文件或目录时,
cp命令会尝试保留原始文件的权限和属性,但可以使用-p选项来显式保留这些属性。 - 在受限权限的环境中执行
cp可能需要管理员权限或特定用户权限。
ln
命令说明:ln(link)命令用于创建硬链接或符号链接(软链接)。
常用选项
-s:创建符号链接而不是硬链接。-f:强制创建链接,覆盖已存在的同名文件。-v:显示创建链接的详细信息。-n:在符号链接上创建链接而不是链接指向的文件。
注意事项
- 硬链接(默认)与符号链接(软链接)的区别:
- 硬链接是文件在文件系统中的另一个名字,共享相同的inode,不能跨文件系统。
- 符号链接是一个指向文件或目录的路径名,可以跨文件系统,但如果目标文件被删除,符号链接会失效。
- 使用
-s选项可以创建符号链接,常用于快捷方式或引用文件。 - 使用
-f选项时需要特别小心,以免覆盖重要文件。 - 创建链接时要确保目标文件或目录存在,否则会创建一个指向不存在路径的符号链接。
- 在受限权限的环境中执行
ln可能需要管理员权限或特定用户权限。
find
命令说明:find 命令用于在指定目录及其子目录中搜索文件和目录,并执行指定的操作。它是功能非常强大的搜索工具。
常用选项
-name pattern:根据文件名搜索。-iname pattern:根据文件名搜索(忽略大小写)。-type type:根据文件类型搜索,例如-type f表示搜索普通文件,-type d表示搜索目录。-size n:根据文件大小搜索,n 的格式可以是 +n、-n、n,其中 + 表示大于,- 表示小于,n 表示等于。-mtime n:根据文件的修改时间搜索,n 的格式与-size类似。-user name:根据文件所有者搜索。-group name:根据文件所属组搜索。-exec command {} \;:对搜索到的文件执行指定的命令,{}代表当前文件。-delete:删除搜索到的文件(使用时要小心)。
注意事项
- 搜索范围可以通过在
find命令后指定目录来限定,默认为当前目录及其子目录。 - 使用
-exec选项时,确保命令末尾的\;不被漏掉,这是命令的结束标志。 find命令支持多种条件组合,可以通过逻辑操作符-and、-or、-not来组合复杂的搜索条件。- 在大文件系统上执行
find命令可能会比较慢,可以结合-maxdepth和-mindepth限制搜索深度以提高性能。 - 删除文件时,使用
-delete选项需要特别小心,最好先通过其他选项确认要删除的文件列表。
locate
命令说明:locate 命令用于快速查找文件系统中的文件,基于一个预先构建的数据库来进行搜索。
常用选项
-i:忽略大小写进行搜索。-r pattern:使用正则表达式模式进行搜索。-n number:限制输出结果的数量。-c:仅显示匹配的条目数,而不显示实际条目。-e:只显示存在的文件,忽略已删除但数据库中仍有记录的文件。
注意事项
locate命令依赖于一个定期更新的数据库,该数据库通常由updatedb命令维护。默认情况下,这个数据库每天更新一次。- 如果文件系统中的文件发生了变化,但数据库尚未更新,则
locate可能会返回过时的结果。可以手动运行updatedb命令来更新数据库。 locate命令比find命令更快,因为它搜索的是预先索引的数据库,而不是实时遍历文件系统。locate的搜索速度非常快,适用于快速查找文件路径,但不适合需要实时精确结果的场景。
whereis
命令说明:whereis 命令用于查找系统中可执行文件、源代码文件和手册页的路径。
常用选项
-b:只查找二进制文件。-m:只查找手册页文件。-s:只查找源代码文件。-B paths:指定二进制文件的搜索路径。-M paths:指定手册页文件的搜索路径。-S paths:指定源代码文件的搜索路径。
注意事项
whereis命令的结果依赖于系统的目录结构和环境变量设置,特别是PATH环境变量。- 在默认配置下,
whereis只查找标准位置的文件。如果某个文件被放在非标准目录中,可能需要使用-B,-M,-S等选项来指定搜索路径。 whereis命令适用于快速查找程序的二进制文件和关联的手册页、源代码路径,有助于系统管理员和开发者定位程序文件。
权限
chmod
命令说明:chmod(change mode)命令用于更改文件或目录的访问权限。
常用选项
-R:递归更改目录及其内容的权限。-v:显示每个文件权限更改的详细信息。-c:仅在权限发生更改时显示信息。--reference=FILE:使用指定文件的权限设置来更改目标文件的权限。
注意事项
- 权限表示方式有两种:符号模式(如 u+r)和八进制模式(如 755)。
- 符号模式:
u表示用户,g表示组,o表示其他,a表示所有;+添加权限,-移除权限,=设置权限。 - 八进制模式:每个数字分别表示用户、组和其他用户的权限,总共有三个数字,每个数字由读(4)、写(2)、执行(1)的和组成。
- 符号模式:
- 在递归更改目录权限时,使用
-R选项需要特别小心,以免误改不应更改的文件或目录权限。 - 修改权限时,应确保不会无意中授予过高权限,特别是在公共或多用户系统中,避免安全隐患。
- 可以使用
ls -l命令查看文件和目录的当前权限,以确认修改结果。 - 在受限权限的环境中执行
chmod可能需要管理员权限或特定用户权限。
chown
命令说明:chown(change owner)命令用于更改文件或目录的所有者和/或所属组。
常用选项
-R:递归更改目录及其内容的所有者和/或组。-v:显示每个文件所有者和/或组更改的详细信息。-c:仅在所有者和/或组发生更改时显示信息。--reference=RFILE:使用指定文件的所有者和/或组来更改目标文件的所有者和/或组。--preserve-root:避免递归操作更改根目录/。--no-dereference:只修改符号链接本身,而不修改其指向的目标文件。
注意事项
- 需要管理员权限(如使用
sudo)才能更改文件和目录的所有者和组。 - 格式:
chown [OPTION]... [OWNER][:[GROUP]] FILE...。例如,chown user:group file将文件的所有者更改为user,所属组更改为group。 - 可以单独更改所有者或组,如果只指定所有者(如
chown user file),则只更改所有者而不更改组。 - 使用
-R选项递归更改目录及其内容时,需要特别小心,以免误改大量文件和目录的所有者和/或组。 - 确认所有者和组的变更可以使用
ls -l命令查看文件和目录的当前所有者和组。
chgrp
命令说明:chgrp(change group)命令用于更改文件或目录的所属组。
常用选项
-R:递归更改目录及其内容的所属组。-v:显示每个文件所属组更改的详细信息。-c:仅在所属组发生更改时显示信息。--reference=RFILE:使用指定文件的所属组来更改目标文件的所属组。--preserve-root:避免递归操作更改根目录/。
注意事项
- 更改文件和目录的所属组需要相应的权限,通常需要管理员权限(如使用
sudo)。 - 格式:
chgrp [OPTION]... GROUP FILE...。例如,chgrp group file将文件的所属组更改为group。 - 使用
-R选项递归更改目录及其内容时,需要特别小心,以免误改大量文件和目录的所属组。 - 确认所属组的变更可以使用
ls -l命令查看文件和目录的当前组。 - 在更改所属组时,要确保目标组存在,否则命令会失败。
打包和解压
zip
命令说明:zip 命令用于压缩文件或目录,将其打包成 .zip 格式的压缩文件。
常用选项
-r:递归压缩目录及其内容。-u:更新已有的.zip文件,只压缩修改过或新增的文件。-m:将文件移动到.zip文件中,即压缩后删除原始文件。-d:从.zip文件中删除指定的文件。-x:排除指定的文件或目录。-q:静默模式,不显示压缩过程的详细信息。-v:显示压缩过程的详细信息。
注意事项
- 压缩文件时,
zip命令默认不会保留目录结构,使用-r选项可以递归压缩整个目录。 - 使用
-m选项时,文件会在压缩后删除,使用时需谨慎,以免误删重要文件。 - 可以通过
-x选项排除不需要压缩的文件或目录,例如:zip -r archive.zip folder -x "*.log"排除所有.log文件。 zip命令支持对压缩包添加注释,可以使用-c选项来添加注释。.zip文件可以跨平台使用,适用于不同操作系统间的文件传输。
unzip
命令说明:unzip 命令用于解压缩 .zip 格式的压缩文件。
常用选项
-d directory:指定解压缩的目标目录。-l:列出.zip文件的内容,而不实际解压。-t:测试.zip文件的完整性,不进行解压。-o:覆盖已存在的文件而不提示。-n:不覆盖已存在的文件。-j:解压时不创建目录,将所有文件解压到当前目录。-q:静默模式,不显示解压过程的详细信息。-v:显示解压过程的详细信息。
注意事项
- 使用
-d选项可以指定解压缩的目标目录,否则文件将解压到当前目录。 -l和-t选项非常有用,可以在实际解压前检查.zip文件的内容和完整性。- 使用
-o选项时要小心,因为它会覆盖现有文件,可能导致数据丢失。 - 使用
-j选项时,所有文件将解压到一个目录中,可能会导致文件名冲突。 - 确保有足够的磁盘空间进行解压操作,特别是当解压大文件时。
tar
命令说明:tar(tape archive)命令用于创建、维护、修改和提取文件存档。它是Unix和Linux系统中用于备份和分发文件的常用工具。
常用选项
-c:创建一个新的存档文件。-x:从存档文件中提取文件。-f:指定存档文件的名称,通常与-c或-x选项一起使用。-v:显示详细的操作过程。-t:列出存档文件的内容。-z:使用gzip压缩或解压缩存档文件。-j:使用bzip2压缩或解压缩存档文件。-J:使用xz压缩或解压缩存档文件。-r:向已有存档文件中追加文件。-u:仅将比存档中副本新的文件追加到存档中。-C:切换到指定目录再处理文件。
注意事项
tar命令常与压缩选项结合使用,例如-czf创建一个gzip压缩的存档文件,或-xzf提取一个gzip压缩的存档文件。- 使用
-v选项可以查看详细的操作过程,适用于确认哪些文件被处理。 - 提取文件时,使用
-C选项可以指定解压后的目标目录,以避免解压文件散乱在当前目录中。 - 创建存档文件时,建议使用
.tar.gz、.tar.bz2或.tar.xz扩展名,以指明使用的压缩方法。 - 操作大型存档文件时,确保有足够的磁盘空间和计算资源,以避免操作失败。
bunzip2
命令说明:bunzip2 命令用于解压缩 .bz2 格式的文件。它是 bzip2 压缩格式的解压工具。
常用选项
-c:将解压后的内容输出到标准输出,而不是文件。-k:解压后保留原始的压缩文件。-f:强制解压文件,即使目标文件已存在也会覆盖。-v:显示解压缩过程的详细信息。-q:静默模式,不显示任何警告信息。-t:测试文件的完整性,而不解压。
注意事项
- 默认情况下,
bunzip2会删除原始的.bz2文件。如果希望保留原文件,请使用-k选项。 - 使用
-f选项时要小心,因为它会覆盖现有的文件,可能导致数据丢失。 - 可以使用
-c选项将解压后的内容重定向到其他文件或进行进一步处理,例如bunzip2 -c file.bz2 > file。 bunzip2只能处理单个文件,如果需要解压缩包含多个文件的归档,应先使用tar等工具将其提取。
bzip2
命令说明:bzip2 命令用于压缩文件,使用Burrows-Wheeler算法,生成 .bz2 格式的压缩文件。它通常用于高效地压缩单个文件。
常用选项
-k:压缩后保留原始文件。-f:强制压缩,即使目标文件已存在也会覆盖。-v:显示压缩过程的详细信息。-q:静默模式,不显示任何警告信息。-t:测试文件的完整性,而不压缩。-d:解压缩文件,相当于bunzip2。-z:强制压缩,默认行为。-1至-9:设置压缩级别,-1为最快速、最低压缩率,-9为最慢速、最高压缩率(默认是-9)。
注意事项
- 默认情况下,
bzip2会删除原始文件,并生成.bz2压缩文件。如果希望保留原文件,请使用-k选项。 - 使用
-f选项时要小心,因为它会覆盖现有的文件,可能导致数据丢失。 bzip2主要用于压缩单个文件,如果需要压缩多个文件或目录,可以先使用tar创建归档,然后使用bzip2压缩,例如:tar -cvf archive.tar folder && bzip2 archive.tar。- 压缩和解压缩较大的文件时,确保有足够的磁盘空间和计算资源,以避免操作失败。
gunzip
命令说明:gunzip 命令用于解压缩 .gz 格式的文件。它是 gzip 压缩格式的解压工具。
常用选项
-c:将解压后的内容输出到标准输出,而不是文件。-k:解压后保留原始的压缩文件。-f:强制解压文件,即使目标文件已存在也会覆盖。-l:列出.gz文件的压缩信息。-r:递归解压目录中的所有文件。-v:显示解压缩过程的详细信息。-q:静默模式,不显示任何警告信息。-t:测试文件的完整性,而不解压。
注意事项
- 默认情况下,
gunzip会删除原始的.gz文件。如果希望保留原文件,请使用-k选项。 - 使用
-f选项时要小心,因为它会覆盖现有的文件,可能导致数据丢失。 - 可以使用
-c选项将解压后的内容重定向到其他文件或进行进一步处理,例如gunzip -c file.gz > file。 gunzip只能处理单个文件,如果需要解压缩包含多个文件的归档,应先使用tar等工具将其提取。- 对于较大的压缩文件,确保有足够的磁盘空间和计算资源,以避免解压过程失败。
gzip
命令说明:gzip 命令用于压缩文件,生成 .gz 格式的压缩文件。它使用 Lempel-Ziv (LZ77) 压缩算法。
常用选项
-c:将压缩后的内容输出到标准输出,而不是文件。-k:压缩后保留原始文件。-f:强制压缩,即使目标文件已存在也会覆盖。-l:显示.gz文件的压缩信息。-r:递归压缩目录中的所有文件。-v:显示压缩过程的详细信息。-q:静默模式,不显示任何警告信息。-t:测试文件的完整性,而不压缩。-d:解压缩文件,相当于gunzip。-1至-9:设置压缩级别,-1为最快速、最低压缩率,-9为最慢速、最高压缩率(默认是-6)。
注意事项
- 默认情况下,
gzip会删除原始文件,并生成.gz压缩文件。如果希望保留原文件,请使用-k选项。 - 使用
-f选项时要小心,因为它会覆盖现有的文件,可能导致数据丢失。 gzip主要用于压缩单个文件,如果需要压缩多个文件或目录,可以先使用tar创建归档,然后使用gzip压缩,例如:tar -cvf archive.tar folder && gzip archive.tar。- 压缩和解压缩较大的文件时,确保有足够的磁盘空间和计算资源,以避免操作失败。
- 使用
-r选项递归压缩目录时,需要特别小心,以免误压缩大量文件和目录。
包管理
rpm
命令说明:rpm(Red Hat Package Manager)命令用于管理RPM包,提供安装、卸载、查询、验证和更新软件包的功能。它是Red Hat系Linux发行版的包管理工具。
常用选项
-i:安装一个新的RPM包。-e:卸载一个已安装的RPM包。-U:升级一个已有的RPM包,若未安装则进行安装。-F:仅升级已安装的RPM包。-q:查询已安装的RPM包。-qa:查询所有已安装的RPM包。-ql:列出一个已安装包中的文件列表。-qf:查询指定文件属于哪个RPM包。-V:验证一个已安装的RPM包。-h:显示安装或升级过程的进度条。--prefix:指定安装位置。
注意事项
- 安装或卸载RPM包时需要管理员权限,通常通过
sudo运行。 - 使用
-U选项升级包时,如果包不存在会进行安装,因此对于升级和安装通用。 -q选项可以结合其他选项使用,查询特定包的信息,例如rpm -q package_name查询包是否已安装。- 使用
-V选项验证包时,可以检查包中的文件是否被修改或损坏。 - 安装和卸载RPM包时,需要注意包之间的依赖关系,手动安装可能会遇到依赖性问题,建议使用
yum或dnf这类高层工具来自动处理依赖关系。 - 可以通过
rpm2cpio将RPM包转换为cpio归档,然后解压以查看其内容而不进行安装。
yum
命令说明:yum(Yellowdog Updater, Modified)命令是基于RPM的包管理工具,用于在Red Hat系Linux发行版中自动化处理软件包的安装、更新、删除和依赖关系管理。
常用选项
install:安装一个或多个软件包,例如yum install package_name。update:更新所有已安装的软件包或指定的软件包,例如yum update或yum update package_name。remove:删除一个或多个软件包及其依赖,例如yum remove package_name。search:搜索软件包的名称、描述和摘要中包含指定关键字的软件包,例如yum search keyword。info:显示一个或多个软件包的详细信息,例如yum info package_name。list:列出软件包,例如yum list installed列出已安装的软件包,yum list available列出可用的软件包。clean:清理缓存,例如yum clean all清理所有缓存。repolist:列出所有启用的仓库,例如yum repolist。
注意事项
- 使用
yum命令需要管理员权限,通常通过sudo运行。 yum命令自动处理软件包的依赖关系,确保所需的依赖包也一并安装或删除。yum的配置文件通常位于/etc/yum.conf,仓库配置文件位于/etc/yum.repos.d/目录下,可以在这些文件中配置和管理软件仓库。- 使用
yum clean all命令清理缓存可以释放磁盘空间,特别是在进行大规模更新或安装后。 yum提供了插件机制,可以通过安装和配置插件扩展yum的功能。yum命令的输出信息较为详细,可以通过阅读输出信息了解每个操作的具体细节。
总结
本文为Linux用户提供了一个全面的命令参考,无论是新手还是有经验的系统管理员,都可以从中找到实用信息。掌握这些命令将有助于提高工作效率,优化系统性能,并确保系统安全稳定运行。未来,随着Linux系统的不断更新和命令的增加,本文也将持续更新,以提供最新最全的命令使用指南。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!