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 ...
随机推荐
- IntelliJ IDEA打war包
1.按ctrl+alt+shift+s键打开Project Structure,点击+号图标,选择"Artifacts->Web Application Archive" 2 ...
- Chapter 14 G-estimation of Structural Nested Models
目录 14.1 The causal question revisited 14.2 Exchangeability revisited 14.3 Structural nested mean mod ...
- The Hessian Penalty: A Weak Prior for Unsupervised Disentanglement
目录 概 主要内容 标量情况 向量情况 处于实际(计算量)的考量 应用到生成模型中 代码 Pebbles W., Pebbles J., Zhu J., Efros A., Torralba A. T ...
- linux rm 删除命令
2022-01-04 1. 命令简介 Linux rm(英文全拼:remove)命令用于删除一个文件或者目录. 2. 语法及参数 2.1 语法 rm [options] name... 2.2 参数 ...
- Unity——火烧+水波纹效果(噪音图)
使用噪声图实现火烧和水波纹效果: 1.溶解 关闭裁剪,根据noise纹理取样,r通道和_BurnAmount比较,裁剪掉小于_BurnAmount的片元: 通过菲尼尔得到裁剪边缘,添加火焰燃烧的颜色进 ...
- OAuth2.0的定义
1. 什么是OAuth2.0 * 用于REST/APIs的代理授权框架(delegated authorization) * 基于令牌Token的授权,在无需暴露用户密码的情况下,使应用能获取对用户数 ...
- CSS 表格基本使用 案例
知识点普及: 表格是html中经常使用到的,简单的使用可能很多人都没问题,但是更深入的了解的人恐怕不多,下面我们先来看一下如何使用. <table>是<tr>的上层标签 < ...
- 初识python: 自定义函数
什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 函数的定义方法: def test(x): '函数定义方法' x+=1 r ...
- Pytest_简介与安装(1)
一.Pytest简介 pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但更灵活.官方网站优点简介: 非常容易上手,入门简单,文档丰富,文档中有很多实例可 ...
- Flask_cookie和session(五)
一.cookie和session介绍 cookie 在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现 ...