PS命令、procfs

本文详细介绍了Linux中进程的PID、UID、GID等标识及其作用,阐述了它们在权限管理和资源访问中的角色。通过`ps`命令和`/proc`文件系统,我们可以查看和监控进程的详细信息,包括进程的执行文件、环境变量、内存使用等。了解这些概念对于系统管理和安全控制至关重要。

进程的UID和GID

进程的PID

  • 创建进程时系统为每一个进程自动分配一个整数,用于进程身份识别
  • 每个进程的PID在内核中是唯一的,不能重复
  • PID资源有限:cat /proc/sys/kernel/pid_max
  • PPID:该进程父进程的ID号
  • ps -O pid,ppid,tty,cmd //这样能显示终端更多信息
  • ps -a:显示所有终端所有用户正在运行的进程

进程UID和GID

进程与UID之间的关系

  • 每一个进程与用户、用户组相关联
    • 进程必须以适合的用户和组运行
    • 运行进程的用户ID即该进程的UID
    • 该UID和GID表示进程资源访问,操作权限
  • 进程的各种ID
    • RUID:实际用户ID。运行该进程的那个登录用户ID,一般会继承父进程,子进程可通过setuid修改
    • EUID:有效用户ID。当前进程所使用的用户ID,一般等于RUID,用于权限验证
    • SUID:设置用户ID。父进程原先的有效ID(执行setuid之前),子进程会继承并将其设置为有效用户ID

通过ps命令查看进程资源

ps命令

  • -A/-e:显示系统所有的进程(包括守护进程),相当于-e
  • -a:显示所有终端下的所有用户运行的进程
  • -u:显示用户名,CPU百分比和内存的使用
  • -x/-f:列出进程的详细信息
  • -H:显示进程树
  • -r: 只显示正在运行的进程
  • -o:不分类输出
  • 监视进程:top

通过proc查看进程资源

procfs文件系统

  • Linux内核:一切皆文件,ps命令也是从proc文件读取数据
  • profs是Linux内核中一个特殊的文件系统,以/proc目录形式呈现
  • 应用程序可通过/proc下的文件接口对驱动和内核信息进行访问
    • 获取内核信息、硬件设备信息、进程信息
    • 设置内核参数、控制开关

进程资源

通过proc查看进程资源

  • 进程对应的可执行文件名字
  • 环境变量、CPU、内存相关信息
  • 进程的上下文环境、堆栈
  • 进程状态
  • 进程打开的文件列表
    • 通过ps -a
    • cd /proc
    • ls
    • 找到进程pid,cd 进程号
文件说明
cmdline以\O分割的命令行参数
cmd指向当前工作目录的符号链接
environNAME=value键值对环境列表,以\0分隔
exe指向正在执行文件的符号链接
fd文件目录
maps内存映射
mem进程虚拟内存
mounts进程的安装点
root指向根目录的符号链接
status进程的各种信息:PID、内存使用量、信号
task进程中的每一个线程均包含一个子目录
### Java 开发中常用的 Linux 命令汇总 在 Java Web 开发过程中,Linux 是一种非常重要的操作系统环境。掌握一些常见的 Linux 命令对于提高开发效率至关重要[^1]。以下是 Java 开发者经常使用的 Linux 命令分类及其功能: #### 文件操作类命令 - **`ls`**: 列出当前目录下的文件子目录列表。 示例:查看详细信息 `ls -l` 或按时间排序 `ls -lt`。 - **`cd`**: 改变工作目录到指定路径。 示例:进入 `/home/user` 目录 `cd /home/user`。 - **`pwd`**: 显示当前所在的工作目录路径。 - **`cp`**: 复制文件或目录。 示例:复制文件 `cp source.txt destination.txt`。 - **`mv`**: 移动或重命名文件。 示例:移动文件 `mv file.txt /new/path/file.txt`。 #### 文本处理类命令 - **`cat`**: 查看、创建或连接文件的内容并输出到标准输出设备上。 示例:显示文件内容 `cat filename.txt`。 - **`grep`**: 在文件中搜索特定字符串,并返回匹配的结果。 示例:查找包含关键词的行 `grep "keyword" filename.txt`。 - **`sed`**: 流编辑器,可以用来执行基本的文本转换。 示例:替换文件中的字符串 `sed 's/old/new/g' inputfile > outputfile`。 - **`awk`**: 强大的文本分析工具,适合复杂的文本数据提取报告生成。 #### 系统管理类命令 - **`ps`**: 显示当前系统的进程状态。 示例:查看所有进程 `ps aux`。 - **`top`**: 实时动态监控系统运行情况以及资源消耗状况。 - **`kill`**: 终止某个正在运行的进程。 示例:终止 PID 为 1234 的进程 `kill 1234`。 - **`df`**: 报告磁盘空间使用情况。 示例:以人类可读的方式展示 `df -h`。 - **`du`**: 计算目录所占的空间大小。 示例:统计某目录下各文件夹占用量 `du -sh *`。 #### 权限设置类命令 - **`chmod`**: 修改文件或者目录访问权限。 示例:赋予脚本执行权 `chmod +x script.sh`。 - **`chown`**: 更改文件所属用户及组别归属关系。 示例:更改所有权给 userA 用户 `chown userA file.txt`。 #### 网络配置类命令 - **`ifconfig`** (部分发行版已弃用): 配置网络接口参数;可以用 `ip addr show` 替代它来获取网卡信息。 - **`ping`**: 测试主机之间连通性延迟性能指标。 - **`netstat`**: 展示网络连接、路由表等相关统计数据;也可以通过更现代版本如 ss 工具代替之。 - **`ssh`**: 安全远程登录其他计算机上的 shell 并传输加密后的指令流。 #### 缓存清理相关命令 由于缓冲区的存在可能影响实际可用内存数值观察,在排查问题时常需注意清除缓存的影响因素之一即 pagecache/dentries/inodes 数据结构等内容,则有如下方法可供参考: - 手动释放页面高速缓存(Page Cache)、dentry inode 缓冲区可以通过向 procfs 特殊虚拟文件写入对应数字实现清零效果[^4]: ```bash sync && echo 3 | sudo tee /proc/sys/vm/drop_caches ``` 以上这些只是基础的一部分常用命令集合,具体场景还需要根据项目需求灵活运用更多高级技巧[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值