1596 字
8 分钟
常用Linux命令总结
2026-09-17
2026-10-14

本文总结了一些常用的Linux命令,主要用于日常操作和系统管理。希望对学习Linux的朋友有所帮助。

查看某个PID是如何启动的#

在 Linux 中,要查看一个进程(已知 PID)具体是“怎么拉起来的”,最核心的手段是查看 /proc 虚拟文件系统下的对应进程目录。

假设进程 PID 是 1234,可以通过以下几个步骤全面还原它的启动现场:

查看完整的启动命令 (cmdline)#

这是最准确的方法,能看到启动程序时传入的所有参数。由于该文件中的参数是以隐藏的 \0(空字符)分隔的,直接查看会粘在一起,建议配合 tr 命令将其替换为空格:

Terminal window
cat /proc/1234/cmdline | tr '\0' ' '

这会输出类似:/usr/bin/python3 /opt/app/main.py --config /etc/config.json,让你清楚地看到它是带了什么参数启动的。

查看真正的可执行文件路径 (exe)#

如果你看到启动命令里用的是相对路径(比如 ./start.sh)或者系统别名,想知道到底指向硬盘上的哪个实际文件,可以查看 exe 软链接:

Terminal window
ls -l /proc/1234/exe

输出结果会指向程序真正的物理路径(例如 -> /usr/local/bin/node)。

查看启动时的当前工作目录 (cwd)#

程序的运行往往依赖它启动时所在的目录(比如读取相对路径的配置文件)。通过查看 cwd (Current Working Directory) 可以知道进程是从哪个目录下被拉起的:

Terminal window
ls -l /proc/1234/cwd

箭头指向的目录就是程序启动时所在的路径。

查看运行时的环境变量 (environ)#

有些程序是通过环境变量配置拉起的(比如 JAVA_HOME 或 ENV=prod)。你可以查看它启动时加载的所有环境变量:

Terminal window
cat /proc/1234/environ | tr '\0' '\n'

这里用换行符替换空字符,方便一行一行检查它的环境配置是否正确。

快捷替代方案:使用 ps 命令#

如果你只需要粗略看一下,也可以直接用 ps 命令:

Terminal window
ps -fww -p 1234
  • -f 表示全格式显示(包含 UID、父进程 PPID、启动时间等)。
  • -ww 表示加宽输出,防止启动命令太长被屏幕截断。
  • 注意:如果该进程是通过 systemd 拉起的后台服务,你也可以直接执行 systemctl status 1234 来查看它的服务状态和对应的 ExecStart 启动配置。

改变文件夹权限#

在 Linux 中,如果从别人的 home 目录复制文件,通常需要使用 chown(修改所有者)和 chmod(修改读写权限)这两个命令来将文件完全“变成你的”。

具体操作步骤如下:

修改文件的所有者 (chown)#

如果你是用 sudo 复制的,或者保留了原文件的属性,文件的所有者可能还是原来的用户或 root。你需要将其改回你自己的账号。

打开终端,使用以下命令(-R 表示递归,如果是文件夹会连同里面的所有文件一起修改):

Terminal window
sudo chown -R $USER:$USER /目标文件或文件夹的路径

注:$USER 是 Linux 的环境变量,会自动识别为你当前登录的用户名。冒号前后的 $USER 分别代表“所属用户”和“所属用户组”。

添加读写权限 (chmod)#

有时候,即便你变成了文件的所有者,但如果原文件是“只读”的,你复制过来后依然无法修改或删除。你需要给自己加上读写(甚至执行)权限:

Terminal window
# 给自己(所有者,u代表user)添加读(r)和写(w)权限
chmod -R u+rw /目标文件或文件夹的路径

场景举例: 假设你把别人目录下的 project_data 文件夹复制到了自己的 ~/Documents 下,一整套最稳妥的处理命令就是:

Terminal window
sudo chown -R $USER:$USER ~/Documents/project_data
chmod -R u+rw ~/Documents/project_data

比较两个文件是否相同#

如果这两个文件分别在两台不同的 Linux 机器上,最稳妥且节省带宽的方法是分别计算哈希值进行比对,或者通过 SSH 管道直接比对。

分别计算哈希值(最推荐,无需跨网传文件)#

如果可执行文件很大,直接把文件传过来对比会很慢。你只需要在两台机器上分别生成文件的“数字指纹”,对比指纹即可。

  • 在机器 A 上执行:
Terminal window
sha256sum /path/to/fileA
  • 在机器 B 上执行:
Terminal window
sha256sum /path/to/fileB

对比两边终端输出的一长串字符串,如果完全一样,说明底层的二进制代码100%相同。

通过 SSH 管道一行命令直接比对(适合自动化)#

如果你已经在机器 A 上,并且配置了到机器 B 的 SSH 免密登录,可以利用管道(Pipe)直接把机器 B 的文件流拉过来,在内存中与机器 A 的文件进行逐字节比对,无需在本地生成临时文件。

在机器 A 上执行:

Terminal window
ssh user@machine_B_ip "cat /path/to/remote_fileB" | cmp /path/to/local_fileA -
  • 如何看结果: 如果执行完没有任何输出,说明两个文件一模一样。如果出现类似 differ: byte 1, line 1 的提示,说明它们不一样。
  • (注:命令末尾的 - 连字符不能漏掉,它代表将 SSH 传过来的数据流作为 cmp 命令的第二个对比文件。)

修复动态库路径#

Terminal window
export LD_LIBRARY_PATH=../Interfaces:$LD_LIBRARY_PATH

压缩文件夹#

最常用的是使用 tar 命令,将文件夹打包并压缩成 .tar.gz 格式。

基本命令如下:

Terminal window
tar -czvf 压缩包名称.tar.gz 要打包的文件夹名/

参数快速回忆:

  • -c : Create,创建新的压缩包
  • -z : gzip,使用 gzip 进行压缩
  • -v : Verbose,在终端显示正在打包的文件(如果不喜欢刷屏可以去掉)
  • -f : File,指定压缩包的文件名(注意:-f 必须放在所有参数的最后,紧跟压缩包名字)

其他常见需求:

1. 如果需要打包成 .zip 格式(方便发给 Windows 环境解压):

Terminal window
zip -r 压缩包名称.zip 要打包的文件夹名/

(-r 代表递归压缩文件夹内的所有内容)

2. 顺便附上解压命令(将 -c 换成 -x 即可):

Terminal window
tar -xzvf 压缩包名称.tar.gz
常用Linux命令总结
https://blog.xiaobaizhang.top/posts/linux_commands/
作者
张小白
发布于
2026-09-17
许可协议
CC BY-NC-SA 4.0