一次程序运行引发的思考-Linux的/usr/local/bin与/usr/bin的区别

一、故障现象

zabbix在执行告警脚本时,导入requests模块出错,无法找到该模块。具体的内容如下截图:

 

二、分析

1.在系统安装的python版本中分别导入requests模块,无异常。在系统层面能够直接运行该脚本,无报错。

 

 

2.开始怀疑脚本指定的python3解释器没有生效,系统使用默认的python2解释器,导致无法加载requests模块,修改系统的python默认版本为python3,调用脚本还是异常。

3.查找requests的安装位置,发现有点异常。正常的用户可执行程序都安装在/usr/local目录,而requests的安装目录为:/root/.local/lib/python3.6/site-packages/requests,导致系统在导入requests模块出错。

三、解决

使用pip3 uninstall requests卸载此模块,重新安装requests到/usr/local/python3的目录:/usr/local/python3/lib/python3.6/site-packages/requests。系统调用python脚本的requests正常。

四、总结

1./usr/sbin与/usr/bin区别:

1) /usr/sbin:root权限下的命令属于基本的系统命令,如shutdown,reboot,用于启动系统,修复系统;

2) /usr/bin普通用户权限,存放一些普通的基本命令,如ls,chmod等;


2./usr/bin与/usr/local/bin:

1) /usr/bin:系统预装的可执行程序,会随着系统升级而改变;

2) /usr/local/bin:用户放置自己的可执行程序的地方,推荐放在这里,不会被系统升级而覆盖同名文件。

 

posted @ 2019-11-12 11:12  不清  阅读(524)  评论(0)    收藏  举报