Linux 查看运行中进程的 umask
线上某台虚机因为故障重装了系统(基线 CentOS 6.9 内核 2.6.x),重新部署了应用。这个应用会生成一个文件,到NFS挂载目录。
而这个 NFS 挂载目录是一个 FTP 服务器的目录。另一台虚机登陆 FTP 服务下载该文件时,提示没有权限。
重装的系统由于等保三级的要求,umask=0077。这会导致应用生成文件时默认的权限为 600 。
而登陆 FTP 的用户名是 FTP 主机上单独创建的一个用户,与主机的通用用户名不同,所以下载文件时出现权限问题。
如果要查看正在运行的进程 mask 信息,可以使用 gdb 工具:
$ gdb --pid=<your pid>
...
(gdb) call/o umask(0)
$1 = 077 # 进程 mask 信息
(gdb) call umask($1) # 恢复进程 umask
$2 = 0
(gdb) quit
也可以用一行非交互式的 gdb 命令得到:
(注意:通过上面交互式的方式对一个JAVA进程操作时,出现了 segmentation fault,进程崩溃。但通过以下命令获取umask对进程无影响)
$ gdb --batch -ex 'call/o umask(0)' -ex 'call umask($1)' --pid=<your pid> 2> /dev/null | awk '$1 == "$1" {print $3}'
原理:gdb 可以调试正在运行的进程,由于 umask 是 glibc 的库函数,所以我们可以直接执行 umask 函数。
定义函数: mode_t umask(mode_t mask);
函数说明: umask()会将系统umask值设成参数mask&0777后的值,然后将先前的umask值返回。
由于 umask 函数定义的参数和返回值如上,所以在执行后需要再恢复原来的 umask 值。
另一个简单的方法:
如果 Linux 内核的版本比较高(如 4.7+),也可以直接从进程的 proc 文件中获取
$ grep Umask /proc/<your pid>/status
Linux 查看运行中进程的 umask的更多相关文章
- Linux查看系统中的每个进程
Linux查看系统中的每个进程 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ ps -A PID TTY TIME CMD 1 ? 00:00:01 init ...
- Linux查看命令终止进程
Linux查看命令终止进程 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ ps PID TTY TIME CMD 2576 pts/0 00:00:00 ba ...
- Linux查看用于终止进程命令
Linux查看用于终止进程命令 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ ps PID TTY TIME CMD 2576 pts/0 00:00:00 ...
- Linux查看目录中的文件
Linux查看目录中的文件 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ ls examples.desktop jdk 公共的 视频 文档 音乐 java ...
- mySQL查看运行的进程
查看运行的进程 show processlist kill id 杀掉进程
- Docker查看运行中容器并进入容器
一.简述 Docker查看运行中容器并进入容器. 二.方法 $ sudo docker ps $ sudo docker exec -it 775c7c9ee1e1 /bin/bash 将黄色文字替换 ...
- Linux查看端口占用进程
Linux查看端口占用进程 netstat -anlp|grep 8081 tcp /java 此处3195为进程ID
- linux 查看运行进程详细信息
Linux在启动一个进程时,系统会在/proc下创建一个以PID命名的文件夹,在该文件夹下会有我们的进程的信息 通过ll或ls –l命令即可查看. ll /proc/PID cwd符号链接的是进程运行 ...
- Linux 查看和删除进程
1. 在 LINUX 命令平台输入 1-2 个字符后按 Tab 键会自动补全后面的部分(前提是要有这个东西,例如在装了 tomcat 的前提下, 输入 tomcat 的 to 按 tab).2. ps ...
随机推荐
- 《从LFS到自己的Linux发行版》系列教程:一步到位体验LFS11.0
目录 前言 第一节:LFS 准备工作 第二节:一步完成你的 LFS11.0 第三节:开启你的 LFS 系统 结语 前言 如果你把从源代码开始编译构建一个操作系统的工作当成厨师做一桌菜的话,Lin ...
- A New Defense Against Adversarial Images: Turning a Weakness into a Strength
目录 概 主要内容 准则1 准则2 总策略 Hu S, Yu T, Guo C, et al. A New Defense Against Adversarial Images: Turning a ...
- A Primer on Domain Adaptation Theory and Applications
目录 概 主要内容 符号说明 Prior shift Covariate shift KMM Concept shift Subspace mapping Wasserstein distance 应 ...
- 使用 Android Studio 开发工具创建一个 Android 应用程序,并在 Genymotion 模拟器上运行
需求说明: 使用 Android Studio 开发工具创建一个 Android 应用程序,并在 Genymotion 模拟器上运行 实现步骤: 打开 Android Studio,创建一个 Andr ...
- Java初学者作业——编写Java程序,输出1~100之间能够同时被3和4整除的最大的五个数字。
返回本章节 返回作业目录 需求说明: 编写Java程序,输出1-100之间能够同时被3和4整除的最大的五个数字. 实现思路: 声明变量count,用于存储满足条件的数据个数,设置初始值为0. 在区间1 ...
- 【】JSON介绍
0.说明 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写. 同时也易于机器解析和生成. 它是基于JavaScript Programm ...
- Spark-2.0.2源码编译
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6813925210731840013/ Spark官网下载地址: http://spark.apache.org/d ...
- Word2010制作日历
原文: https://www.toutiao.com/i6494876164157342222/ 最终效果: 设置页面纸张为"横向". 选择"页面布局"选项卡 ...
- 服务限流 -- 自定义注解基于RateLimiter实现接口限流
1. 令牌桶限流算法 令牌桶会以一个恒定的速率向固定容量大小桶中放入令牌,当有浏览来时取走一个或者多个令牌,当发生高并发情况下拿到令牌的执行业务逻辑,没有获取到令牌的就会丢弃获取服务降级处理,提示一个 ...
- leetcode 54. 螺旋矩阵 及 59. 螺旋矩阵 II
54. 螺旋矩阵 问题描述 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入: [ [ 1, 2, 3 ], [ 4, 5, ...