【Linux教程】Linux 生存指南:掌握常用命令,避开致命误操作

Linux 常用操作命令:避免误操作指南

在 Linux 系统中,熟练掌握常用操作命令是高效工作的基础,但同时也要警惕误操作带来的风险。无论是部署程序、配置防火墙、管理端口还是处理进程,一个小小的失误都可能导致系统故障、数据丢失等严重后果。本文将详细介绍 Linux 中与部署程序、防火墙、端口、进程相关的常用操作命令,并提供避免误操作的实用建议。

目录

[Linux 常用操作命令:避免误操作指南](#Linux 常用操作命令:避免误操作指南)

一、文件与目录管理命令

[1. 切换目录(cd)](#1. 切换目录(cd))

[2. 查看目录内容(ls)](#2. 查看目录内容(ls))

[3. 创建目录(mkdir)](#3. 创建目录(mkdir))

[4. 删除文件和目录(rm)](#4. 删除文件和目录(rm))

[5. 复制文件和目录(cp)](#5. 复制文件和目录(cp))

[6. 移动或重命名文件和目录(mv)](#6. 移动或重命名文件和目录(mv))

二、部署程序相关命令

[1. 上传文件(scp)](#1. 上传文件(scp))

[2. 启动 Java 程序(java -jar)](#2. 启动 Java 程序(java -jar))

[3. 后台运行命令(nohup)](#3. 后台运行命令(nohup))

三、防火墙相关命令

[1. 查看防火墙状态(systemctl status firewalld)](#1. 查看防火墙状态(systemctl status firewalld))

[2. 开启防火墙(systemctl start firewalld)](#2. 开启防火墙(systemctl start firewalld))

[3. 关闭防火墙(systemctl stop firewalld)](#3. 关闭防火墙(systemctl stop firewalld))

[4. 重启防火墙(systemctl restart firewalld)](#4. 重启防火墙(systemctl restart firewalld))

[5. 开放指定端口(firewall-cmd)](#5. 开放指定端口(firewall-cmd))

[6. 关闭指定端口(firewall-cmd)](#6. 关闭指定端口(firewall-cmd))

四、端口相关命令

[1. 查看端口占用情况(netstat、ss、lsof)](#1. 查看端口占用情况(netstat、ss、lsof))

[(1)netstat 命令](#(1)netstat 命令)

[(2)ss 命令](#(2)ss 命令)

[(3)lsof 命令](#(3)lsof 命令)

[2. 释放被占端口(kill)](#2. 释放被占端口(kill))

五、进程相关命令

[1. 查看进程状态(ps)](#1. 查看进程状态(ps))

[2. 实时监控进程(top)](#2. 实时监控进程(top))

[3. 终止进程(kill)](#3. 终止进程(kill))

[4. 调整进程优先级(nice、renice)](#4. 调整进程优先级(nice、renice))

[(1)nice 命令](#(1)nice 命令)

[(2)renice 命令](#(2)renice 命令)

六、避免误操作的综合建议

[1. 使用别名和脚本提高命令安全性](#1. 使用别名和脚本提高命令安全性)

(1)使用别名简化命令

(2)编写脚本加入确认逻辑

[2. 理解并使用 sudo 命令](#2. 理解并使用 sudo 命令)

[3. 使用白名单和黑名单策略](#3. 使用白名单和黑名单策略)

[4. 文件删除前的确认步骤](#4. 文件删除前的确认步骤)

[5. 使用文件权限保护重要文件](#5. 使用文件权限保护重要文件)

[6. 定期备份重要数据](#6. 定期备份重要数据)

[7. 使用文件恢复工具以防万一](#7. 使用文件恢复工具以防万一)

七、总结


一、文件与目录管理命令

1. 切换目录(cd)

  • 功能:用于切换当前工作目录。
  • 示例
    • cd /home:进入 /home 目录。
    • cd ..:返回上一级目录。
    • cd ../..:返回上两级目录。
    • cd /:返回根目录。
    • cd -:返回上次所在的目录。
  • 避免误操作建议 :在输入目录路径时,仔细检查路径的正确性,可使用 Tab 键自动补全路径,减少手动输入错误的可能性。

2. 查看目录内容(ls)

  • 功能:查看指定目录中的文件和子目录。
  • 常用参数
    • -l:显示文件和目录的详细资料,如权限、所有者、大小、修改时间等。
    • -a:显示所有文件,包括隐藏文件(以 . 开头的文件)。
  • 示例
    • ls:查看当前目录下的所有文件和目录。
    • ls -l:以详细列表形式查看当前目录下的文件和目录。
    • ls -a:查看当前目录下的所有文件,包括隐藏文件。
  • 避免误操作建议 :在执行复杂的文件操作前,先使用 ls 命令确认目录内容,确保操作的目标文件或目录存在且正确。

3. 创建目录(mkdir)

  • 功能:创建新的目录。
  • 常用参数
    • -p:递归创建目录树,即如果父目录不存在,会自动创建。
  • 示例
    • mkdir newdir:创建名为 newdir 的目录。
    • mkdir -p /tmp/dir1/dir2:递归创建 /tmp/dir1/dir2 目录树。
  • 避免误操作建议:在创建目录时,确认目录名称和路径的合理性,避免创建重复或不必要的目录。

4. 删除文件和目录(rm)

  • 功能:删除文件和目录。
  • 常用参数
    • -f:强制删除,忽略不存在的文件,不会出现警告消息。
    • -i:互动模式,在删除前会询问用户是否操作。
    • -r:递归删除,用于删除目录及其所有内容。
  • 示例
    • rm file1:删除名为 file1 的文件。
    • rm -r dir1:递归删除名为 dir1 的目录及其所有内容。
    • rm -f file2:强制删除名为 file2 的文件。
    • rm -i file3:在删除 file3 之前询问用户确认。
  • 避免误操作建议
    • 尽量使用 -i 参数,在删除重要文件或目录时,仔细确认操作。
    • 在执行删除操作前,使用 ls 命令确认要删除的文件或目录的路径和名称。
    • 避免使用 rm -rf / 这样的危险命令,该命令会递归删除根目录下的所有文件和目录,可能导致系统崩溃。

5. 复制文件和目录(cp)

  • 功能:复制文件和目录。
  • 常用参数
    • -a:将文件的特性一起复制。
    • -p:连同文件的属性一起复制,而非使用默认方式,与 -a 相似,常用于备份。
    • -r:递归持续复制,用于目录的复制行为。
    • -u:目标文件与源文件有差异时才会复制。
  • 示例
    • cp file1.txt file2.txt:复制 file1.txtfile2.txt
    • cp -r dir1 dir2:递归复制目录 dir1dir2
  • 避免误操作建议:在复制目录时,确保目标目录有足够的空间,避免因空间不足导致复制失败。同时,确认目标目录是否已经存在同名文件或目录,避免覆盖重要数据。

6. 移动或重命名文件和目录(mv)

  • 功能:移动文件或目录,也可用于重命名。
  • 常用参数
    • -f:强制移动,如果目标文件已经存在,不会询问而直接覆盖。
    • -i:若目标文件已经存在,就会询问是否覆盖。
    • -u:若目标文件已经存在,且比目标文件新,才会更新。
  • 示例
    • mv file1.txt newfile.txt:将文件 file1.txt 重命名为 newfile.txt
    • mv dir1 dir2:将目录 dir1 移动到目录 dir2 下。
  • 避免误操作建议 :在重命名或移动重要文件和目录时,使用 -i 参数,确认操作的正确性。同时,注意目标路径是否正确,避免将文件或目录移动到错误的位置。

二、部署程序相关命令

1. 上传文件(scp)

  • 功能:用于在 Linux 下进行远程拷贝文件,传输是加密的。
  • 语法scp [选项] [源文件] [目标文件]
  • 常用选项
    • -r:以递归方式复制目录。
    • -P:指定远程主机的端口号。
  • 示例
    • scp -r /local/dir user@remote:/remote/dir:将本地的 /local/dir 目录递归复制到远程主机的 /remote/dir 目录。
  • 避免误操作建议 :在使用 scp 命令时,确认远程主机的 IP 地址、用户名和目标路径的正确性。同时,注意网络连接的稳定性,避免在网络不稳定时进行大文件的传输,以免传输中断导致数据丢失。

2. 启动 Java 程序(java -jar)

  • 功能:启动 Java 的 JAR 包程序。
  • 示例java -jar myapp.jar:启动名为 myapp.jar 的 Java 程序。
  • 避免误操作建议 :在启动 JAR 包之前,确认 JAR 包的路径和名称是否正确,以及 Java 环境是否已经正确配置。同时,可以使用 nohup 命令将程序在后台运行,避免因终端关闭而导致程序停止,如 nohup java -jar myapp.jar &

3. 后台运行命令(nohup)

  • 功能:使命令在后台运行,即使终端关闭,程序也不会停止。
  • 示例nohup command &:将 command 命令在后台运行,并将输出重定向到 nohup.out 文件。
  • 避免误操作建议 :在使用 nohup 命令时,注意 nohup.out 文件的大小,避免因文件过大占用过多磁盘空间。可以定期清理或重定向 nohup.out 文件的内容。

三、防火墙相关命令

1. 查看防火墙状态(systemctl status firewalld)

  • 功能 :查看防火墙的运行状态,running 代表开启,dead 代表关闭。
  • 示例systemctl status firewalld
  • 避免误操作建议:在对防火墙进行操作之前,先查看防火墙的状态,确保操作的正确性。同时,注意防火墙状态的显示信息,避免误判。

2. 开启防火墙(systemctl start firewalld)

  • 功能:启动防火墙服务。
  • 示例systemctl start firewalld
  • 避免误操作建议:在开启防火墙之前,确认系统是否真的需要防火墙保护,以及防火墙的规则是否已经正确配置。避免因开启防火墙而导致某些服务无法正常访问。

3. 关闭防火墙(systemctl stop firewalld)

  • 功能:停止防火墙服务。
  • 示例systemctl stop firewalld
  • 避免误操作建议 :关闭防火墙会使系统失去防火墙的保护,增加安全风险。在关闭防火墙之前,确保系统处于安全的网络环境中,或者已经采取了其他安全措施。同时,注意临时关闭和永久关闭的区别,临时关闭(systemctl stop firewalld)在系统重启后防火墙会恢复启动,而永久关闭(systemctl disable firewalld)则会禁止防火墙开机自启。

4. 重启防火墙(systemctl restart firewalld)

  • 功能:重启防火墙服务,使配置的规则生效。
  • 示例systemctl restart firewalld
  • 避免误操作建议:在重启防火墙之前,确认防火墙的配置文件是否已经正确修改。重启防火墙可能会导致网络连接短暂中断,因此尽量选择在业务低谷期进行操作。

5. 开放指定端口(firewall-cmd)

  • 功能:配置防火墙开放指定的端口。
  • 示例firewall-cmd --zone=public --add-port=8080/tcp --permanent:开放 TCP 协议的 8080 端口,并永久生效。
  • 避免误操作建议 :在开放端口时,确认端口号和协议的正确性,避免开放不必要的端口,增加系统的安全风险。同时,开放端口后,使用 firewall-cmd --reload 命令重新加载配置,使开放的端口生效。

6. 关闭指定端口(firewall-cmd)

  • 功能:配置防火墙关闭指定的端口。
  • 示例firewall-cmd --zone=public --remove-port=8080/tcp --permanent:关闭 TCP 协议的 8080 端口,并永久生效。
  • 避免误操作建议 :在关闭端口之前,确认该端口是否真的不再需要使用,避免关闭正在使用的端口导致服务中断。同样,关闭端口后,使用 firewall-cmd --reload 命令重新加载配置。

四、端口相关命令

1. 查看端口占用情况(netstat、ss、lsof)

(1)netstat 命令
  • 功能:打印网络连接、路由表、接口统计等网络多方面信息。
  • 示例netstat -tuln:显示所有监听的 TCP 和 UDP 端口。
(2)ss 命令
  • 功能:打印 socket 统计信息,功能类似于 netstat,但速度更快。
  • 示例ss -tuln:显示所有监听的 TCP 和 UDP 端口。
(3)lsof 命令
  • 功能:列出当前系统打开文件的工具,也可查看网络连接、端口信息。
  • 示例lsof -i:列出所有的网络连接情况,包括端口号、协议、进程等信息。
  • 避免误操作建议:在使用这些命令查看端口占用情况时,注意命令的输出信息,准确判断端口的状态和占用进程。如果需要终止占用端口的进程,先确认该进程是否可以安全终止,避免误杀重要进程导致系统故障。

2. 释放被占端口(kill)

  • 功能:终止占用指定端口的进程,从而释放端口。
  • 示例 :先使用 lsof -i :8080 找到占用 8080 端口的进程的 PID,假设 PID 为 1234,然后使用 kill -9 1234 强制终止该进程。
  • 避免误操作建议 :在使用 kill 命令终止进程时,尽量先使用普通的 kill 命令(如 kill 1234)尝试优雅关闭进程,不行再用 -9 参数强制杀死。同时,确认进程的来源和重要性,避免误杀系统关键服务。

五、进程相关命令

1. 查看进程状态(ps)

  • 功能:查看当前系统中的进程状态。
  • 常用参数
    • -ef:显示所有进程的详细信息,包括进程 ID、父进程 ID、用户、启动时间等。
    • -aux:显示进程信息,包括无终端的(x)和针对用户(u)的进程。
  • 示例
    • ps -ef:显示所有进程的详细信息。
    • ps -aux:显示所有进程的详细信息。
  • 避免误操作建议 :在查看进程信息时,注意区分不同进程的用途和重要性。可以使用 grep 命令过滤出需要的进程信息,如 ps -ef | grep java 查看所有 Java 进程。

2. 实时监控进程(top)

  • 功能:实时显示系统中不同进程所使用的资源,提供实时的系统状态信息。
  • 示例top:启动 top 命令,实时监控进程。
  • 避免误操作建议 :在使用 top 命令时,注意观察 CPU、内存等资源的使用情况,及时发现资源占用过高的进程。可以使用快捷键进行排序和操作,如按 P 键按 CPU 使用率排序,按 M 键按内存使用率排序。

3. 终止进程(kill)

  • 功能:发送信号来结束进程。
  • 常用参数
    • -9:强制杀死进程。
  • 示例kill -9 1234:强制杀死 PID 为 1234 的进程。
  • 避免误操作建议 :在使用 kill 命令终止进程时,先使用 ps 命令确认进程的 PID 和状态。尽量使用普通的 kill 命令尝试优雅关闭进程,避免直接使用 -9 参数强制杀死进程,以免导致数据丢失或系统不稳定。

4. 调整进程优先级(nice、renice)

(1)nice 命令
  • 功能:设置和改变进程的优先级。进程优先级值的范围从 -20 到 19,值越低,优先级越高。
  • 示例nice -n -5 myprogram:以 -5 的优先级启动 myprogram 程序。
(2)renice 命令
  • 功能:改变正在运行的进程的优先值。
  • 示例renice -n -5 -p 1234:将 PID 为 1234 的进程的优先级调整为 -5。
  • 避免误操作建议:在调整进程优先级时,谨慎操作,避免将重要进程的优先级设置过低,导致系统性能下降。同时,普通用户只能调整自己的进程的优先级,不能调整其他用户的进程优先级。

六、避免误操作的综合建议

1. 使用别名和脚本提高命令安全性

(1)使用别名简化命令
  • 可以为危险的命令创建别名,在执行前自动添加必要的确认步骤。例如,alias rm='rm -i',这样每次使用 rm 删除文件时,系统都会提示用户确认。
(2)编写脚本加入确认逻辑
  • 脚本可以在执行危险操作前加入用户确认逻辑。例如,以下是一个简单的 bash 脚本示例,它在删除文件前要求用户输入 "yes" 进行确认:
bash 复制代码
#!/bin/bash
read -p "Are you sure you want to delete this file? (yes/no) " answer
if [ "$answer" = "yes" ]; then
    rm "$1"
    echo "File deleted."
else
    echo "Operation cancelled."
fi
  • 将上述脚本保存为文件,例如 confirm_delete.sh,并赋予执行权限:chmod +x confirm_delete.sh。然后,在需要删除文件时,使用脚本而不是直接调用 rm 命令:./confirm_delete.sh /path/to/file

2. 理解并使用 sudo 命令

  • sudo 命令允许用户以其他用户(通常是 root)的身份执行命令。正确使用 sudo 可以显著提高系统的安全性,因为它允许管理员精细控制哪些用户可以执行哪些命令。
  • 配置 sudoers 文件 :编辑 sudoers 文件需要非常谨慎,通常使用 visudo 命令编辑。例如,以下配置允许用户 user1 无需密码执行 /usr/bin/chown 命令:user1 ALL=(ALL) NOPASSWD: /usr/bin/chown
  • 使用 sudo 执行需要确认的操作 :在使用 sudo 执行可能需要确认的操作时,可以通过在命令后添加 -S 选项,从标准输入读取用户密码。例如:
bash 复制代码
#!/bin/bash
read -p "Are you sure you want to perform this operation? (yes/no) " answer
if [ "$answer" = "yes" ]; then
    echo "Your password will be required to proceed:" 
    sudo -S your_sudo_command
    echo "Operation completed."
else
    echo "Operation cancelled."
fi

3. 使用白名单和黑名单策略

  • 白名单策略 :允许用户只能执行列表中明确指定的命令,任何不在白名单中的命令都将被禁止执行。可以通过配置 sudoers 文件来实现,例如,允许用户 user2 只能执行 /usr/bin/chown/usr/bin/chmod 命令:user2 ALL=(ALL) NOPASSWD: /usr/bin/chown, /usr/bin/chmod
  • 黑名单策略 :用户可以执行除了黑名单中明确指定的命令之外的所有命令。同样可以通过编辑 sudoers 文件来完成,例如,禁止用户 user3 执行 /usr/bin/rm 命令。

4. 文件删除前的确认步骤

  • 使用 ls 命令确认文件路径 :在执行删除命令之前,使用 ls 命令确认文件或目录的路径是否正确。例如,ls -l /path/to/file/to/be/deleted
  • 使用 read 命令提示确认 :在执行删除操作之前,可以使用 read 命令来提示用户确认他们的选择。例如:
bash 复制代码
read -p "Are you sure you want to delete this file? (y/n) " answer
if [ "$answer" != "y" ]; then
    echo "File deletion cancelled."
    exit 1
fi
rm /path/to/file/to/be/deleted
  • 使用 find 命令确认删除范围 :如果打算删除一个目录及其所有内容,使用 find 命令列出所有将要被删除的文件和目录。例如,find /path/to/directory -type f -exec echo {} \;

5. 使用文件权限保护重要文件

  • 设置文件权限 :使用 chmod 命令可以设置文件的权限。例如,chmod 600 file.txt 表示只有文件所有者可以读写 file.txt,其他人没有任何权限;chmod 700 directory 表示只有所有者可以在 directory 目录中执行操作,包括删除文件。
  • 使用访问控制列表(ACL) :除了基本的文件权限,Linux 支持访问控制列表(ACL),它提供了比传统权限更细粒度的控制。使用 setfacl 命令可以为单个用户或组设置特定权限。例如,setfacl -m u:username:rw /path/to/protected/file.txt 为用户 username 赋予对 file.txt 的读写权限。

6. 定期备份重要数据

  • 使用 rsync 进行数据备份:rsync 是一个强大的工具,用于快速文件复制和同步。例如,rsync -avz /path/to/source /path/to/backup 会递归地将 /path/to/source 目录下的内容备份到 /path/to/backup 目录,并且保持文件权限和修改时间不变。
  • 自动化备份脚本:可以创建一个 shell 脚本来自动化备份过程。例如:
bash 复制代码
#!/bin/bash
SOURCE_DIR="/path/to/source"
BACKUP_DIR="/path/to/backup"
rsync -avz --delete "$SOURCE_DIR" "$BACKUP_DIR"
echo "Backup completed successfully."

将这个脚本设置为定时任务(例如使用 cron),可以确保数据定期备份。

7. 使用文件恢复工具以防万一

  • undelete 命令 :如果文件系统支持,undelete 命令可以帮助恢复被删除的文件,通常用于 EXT3 和 EXT4 文件系统。例如,undelete /path/to/deleted/file
  • photorec 工具photorec 可以恢复丢失的文件,包括视频、文档和归档文件,从硬盘、CD - ROM 和失去文件系统的存储介质中。例如,photorec /dev/sdX,需要指定设备名称(如 /dev/sdX)。
  • extundelete 工具:专门为 EXT 文件系统设计的文件恢复工具。

七、总结

Linux 系统中的操作命令丰富而强大,但同时也伴随着一定的风险。在进行部署程序、防火墙配置、端口管理和进程处理等操作时,务必谨慎小心,遵循避免误操作的建议。通过合理使用别名、脚本、权限管理、备份和恢复工具等方法,可以有效降低误操作的风险,确保系统的稳定运行和数据安全。希望本文介绍的命令和建议能帮助你更好地管理和维护 Linux 系统。

相关推荐
编码小笨猪3 小时前
浅谈Linux中一次系统调用的执行过程
linux·服务器·c++
yuren_xia3 小时前
RabbitMQ 知识详解(Java版)
java·rabbitmq·java-rabbitmq
小小小小宇3 小时前
前端 Service Worker
前端
只喜欢赚钱的棉花没有糖4 小时前
http的缓存问题
前端·javascript·http
kfyty7254 小时前
轻量级 ioc 框架 loveqq,支持接口上传 jar 格式的 starter 启动器并支持热加载其中的 bean
java·jvm·ioc·jar·热加载
小小小小宇4 小时前
请求竞态问题统一封装
前端
loriloy4 小时前
前端资源帖
前端
源码超级联盟4 小时前
display的block和inline-block有什么区别
前端
GISer_Jing4 小时前
前端构建工具(Webpack\Vite\esbuild\Rspack)拆包能力深度解析
前端·webpack·node.js
让梦想疯狂4 小时前
开源、免费、美观的 Vue 后台管理系统模板
前端·javascript·vue.js