【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 系统。

相关推荐
程序员张32 小时前
Maven编译和打包插件
java·spring boot·maven
ybq195133454313 小时前
Redis-主从复制-分布式系统
java·数据库·redis
weixin_472339464 小时前
高效处理大体积Excel文件的Java技术方案解析
java·开发语言·excel
小毛驴8504 小时前
Linux 后台启动java jar 程序 nohup java -jar
java·linux·jar
zwjapple4 小时前
docker-compose一键部署全栈项目。springboot后端,react前端
前端·spring boot·docker
DKPT5 小时前
Java桥接模式实现方式与测试方法
java·笔记·学习·设计模式·桥接模式
好奇的菜鸟6 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
像风一样自由20207 小时前
HTML与JavaScript:构建动态交互式Web页面的基石
前端·javascript·html
aiprtem7 小时前
基于Flutter的web登录设计
前端·flutter
DuelCode7 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis