perf性能分析+sudo用户权限+环境变量管理Modules

一、gprof与perf性能分析工具

1、gprof使用
编译程序时使用 -pg 选项,程序在运行时会生成一个名为 gmon.out 的文件。
这个文件包含了程序的性能数据,例如每个函数被调用的次数和每个函数执行时所占时间的百分比。
gprof my_program gmon.out > gprof.txt
这条命令会将分析结果输出到 gprof.txt 文件中
2、perf使用
perf record  ./run
会生成一个文件perf.data
perf report

二、sudo用户权限管理

1、修改配置文件vim /etc/sudoers

或使用visudo命令修改

root     ALL=(ALL)      ALL
User Aliases     Host Aliases = (Runas Aliases)     Command Aliases
//   谁             通过哪些主机    可以通过哪个身份      运行哪些命令

%wheel         ALL=(ALL)        ALL
//用户组   通过哪些主机   可以通过哪个身份   运行哪些命令

2、配置一些Alias命令列表

//1、配置User_Alias:具有sudo权限的用户的列表
User_Alias USER_FLAG = user1, user2, user3

//2、配置Host_Alias:主机的列表
Host_Alias       HOST_FLAG = hostname1, hostname2, hostname3,192.168.253.4/32

//3、配置Runas_Alias:用户以什么身份执行(例如root,或者oracle)的列表
Runas_Alias RUNAS_FLAG = operator1, operator2, operator3

//4、配置Cmnd_Alias:允许执行的命令的列表
Cmnd_Alias      COMMAND_FLAG = command1, command2, command3

3、实际用例

(1)允许普通用户swtest使用rpm、yum权限而又不用输入密码

//软件安装管理相关命令别名  
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
//给用户添加权限
swtest    ALL=(ALL)    NOPASSWD: SOFTWARE
(2)允许普通用户

4、修改执行sudo命令时的提示语

 (1)修改vim /etc/sudoers.lecture文件,添加以下内容

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
    #1)尊重别人的隐私。
    #2)输入前要先考虑(后果和风险)。
    #3)权力越大,责任越大。

英文版:

We trust you have received the usual lecture from the local system administrator.
It usually boils down to these three things:
  #1) Respect the privacy of others.
  #2) Think before you type.
  #3) With great power comes great responsibility.

(2)修改vim /etc/sudoers文件

Defaults        lecture_file = /etc/sudoers.lecture
Defaults        lecture = always

其中lecture = always是提示语出现次数
always也可以分别被替换成:
    1.always(总是,每次输入sudo都会出现提示语)
    2.once(只有用户第一次使用sudo才会显示)
    3.never(永远不显示提示语)

image

5、Makefile文件

make all: test
make install: test
    hwclock --set --date="09/15/2025/ 09:30:00"
    hwclock --hctosys
执行sudo make
系统时间与硬件时间
date :显示当前系统时间
date -s :设置指定时间(date -s "20201218 20:12:18")

hwclock :硬件时间

hwclock -s :以硬件时间修改系统时间
hwclock -w :将系统时间修改为硬件时间

hwclock --systohc:系统时钟和硬件时钟同步
hwclock --hctosys:硬件时钟与系统时钟同步

三、环境变量管理工具Modules的安装

一、编译安装modules软件

(1)软件依赖tcl软件

//编译安装
cd unix/     ./configure --prefix=/usr/local/tcl
(apt install tcl tcl-dev)

(2)modules软件下载地址:  https://modules.sourceforge.net/

(3)解压安装:(apt-get install environment-modules)

tar -zxvf modules-5.2.0.tar.gz
./configure --prefix=/usr/local/modules-5.2.0
./configure --prefix=/usr/local/modules --with-tcl-lib=/usr/local/tcl/lib \
            --with-tcl-inc=/usr/local/tcl/include 

二、module的初始化及常用命令

(1)module的初始化

       安装module工具后,你会发现它并不是一个可执行的二进制文件,你需要对module工具进行一次初始化。
       在/usr/local/modules/init(注意此处,可能是module也可能是modules)内部你可以找到针对各个脚本的二进制初始化文件,有profile.sh和profile.csh文件,用来配置module的脚本文件。如果当前用的shell是bash,就使用profile.sh,如果当前用的shell是cshell,就使用profile.csh。可以直接source这个文件,也可以打开/etc/profile文件,加入source /usr/llocal/tools/modules/init/profile.sh这一行代码。重启终端,使用module -h,就可以打印module命令的help了。
也可以建立符号链接,这样当系统重启后,会自动加载

ln -s /usr/local/modules/init/profile.sh /etc/profile.d/module.sh
ln -s /usr/local/modules/init/profile.csh /etc/profile.d/module.csh

        不过如果使用which module,会发现找不到module命令。

(2)常用命令
(通过命令你可以看出我为什么module和modules傻傻不分了)
module avail     显示可以使用的模块
module load/add  加载模块
module unload/rm 卸载模块
module list      显示已经加载的模块
module show      来查看相应配置信息
module switch gcc gcc/10    切换到模块的不同版本

三、modulefiles文件编写

        以下是/usr/local/modules/modulefiles目录下的modules文件,我们后面实现的工具配置文件,都是基于这个文件进行的修改。千万不要出现软件名和版本一样的modulefile文件。

例如gcc环境变量的添加
cd /usr/local/modules/modulefiles/gcc   ||     vim 4.8.4

set version     4.8.4
set GCC         /usr/xu_apps/gcc-4.8.4

setenv          MODULESHOME      ${GCC}
prepend-path    PATH             ${GCC}/bin
prepend-path    LD_LIBRARY_PATH  ${GCC}/lib64
prepend-path    LD_LIBRARY_PATH  ${GCC}/lib
prepend-path    INCLUDE          ${GCC}/include

四、默认版本

        在module avail中,我们可以设置默认版本,例如我想将gcc 4.9.3设置为默认版本,当我module load gcc的时候,就直接载入4.9.3版本,我们可以使用.version文件来控制这个默认信息。
        在modulefile同级目录下创建.version文件,看清楚,前面有个点,写法如下:
cd /etc/modulefiles/gcc
vim .version
#%Module1.0
set ModulesVersion "4.9.3"
使用module avail查看信息

 在4.8.4版本后面多了一个(default)

五、多路径设置

(1)Module工具依托于MODULEPATH这个环境变量来查找配置信息目录。MODULEPATH可以设置为多个路径,例如我设置/soft、/soft1、/soft2都是工具、软件等脚本的存放路径,那么我就可以设置MODULEPATH为多个路径,路径之间用冒号分割。
export MODULEPATH=/soft:/soft1:/soft2
这时候我们module avail来查看信息,即可看到如下

 (2)yum install environment-modules
默认的的modulefiles路径设置在/usr/share/Modules/init/.modulespath文件中。也可以在这个文件中添加设置为多个路径,而不用配置MODULEPATH这个环境变量。

 【注意】:modulefiles路径设置后,路径下一定要有例如gcc/4.8.4的文件;要不然module avail会什么都不显示。

 

 

 

 

 

七+

 
posted @ 2024-01-27 15:28  惊小呆  阅读(1784)  评论(0)    收藏  举报