Linux的计划任务(crontab)环境变量问题解决

news/2024/6/19 6:06:28 标签: linux, 运维, 服务器, crontab, oracle, 调用oracle

1、背景
新上了个python服务,里面有调用oracle,其中有个需求需要定时去调用,贪方便想用crontab,出现了环境变量问题,于是跟他杠上了,势必要解决它!

2、现象
在这里插入图片描述
尽管我在计划任务里写全了脚本路径,甚至让它重新加载环境变量,不管是source /etc/profile
还是source /home/xxx/.bashrc 还是把所有的执行命令都写了绝对路径,都会报错,报错如下:

Traceback (most recent call last):
  File "manager.py", line 20, in <module>
    cx_Oracle.init_oracle_client(lib_dir=path_to_oracle_client_lib)
cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "/home/xxxx/project/install/instantclient_11_2/libclntsh.so: cannot open shared object file: No such file or directory". See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help
根据提示,我去指定路径找,确实没有这个文件,官网也下载了很多个版本,确实没有;提示缺依赖包,但是这台机器还有别的服务,不想更新了linux的lib,这个可能会引发很多问题;

最重要的是,同样的命令我直接运行不会报错,一放到crontab就会报这个环境变量问题;
于是我尝试,查询到调用oracle client的时候,有加载这个变量:LD_LIBRARY_PATH
尝试在终端输出这个环境变量的值:

echo $LD_LIBRARY_PATH

原来系统里有这个文件,我指定的目录缺少了这个文件“libclntsh.so”,然而使用source /home/xxx/.bashrc 并不会生效,于是我在计划任务里直接重设这个变量,这时再测试就正常了;

3、具体操作

echo $LD_LIBRARY_PATH

在这里插入图片描述
将输出的值复制,加到计划任务里

crontab -e
45 17 * * 1-5 cd /home/xxxx/project/DailyxxxxAuto/ && source /home/xxxx/.bashrc && export LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/client_1 && /usr/local/python36/bin/python3 manager.py &> output.log &

主要是加入这个
export LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/client_1

4、总结
具体解决办法还是要结合自己生产实际,做每个操作前都需三思而后行。


http://www.niftyadmin.cn/n/5368773.html

相关文章

ProtonMail邮箱怎么样?国内有什么替代品?

ProtonMail作为业界知名的加密邮箱提供者&#xff0c;其安全性、隐私保护等特性让不少追求私密通信的用户趋之若鹜。然而对于国内用户而言&#xff0c;ProtonMail可能并非最佳选择&#xff0c;受限于许多因素&#xff0c;从语言支持到服务器位置再到可访问性&#xff0c;都可能…

Leetcode 30天高效刷数据结构和算法 Day1 两数之和 —— 无序数组

两数之和 —— 无序数组 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现…

FLStudio21.2.2.3914中文破解版完整下载

FLStudio21.2.2.3914中文破解版完整下载是最好的音乐开发和制作软件也称为水果循环。它是最受欢迎的工作室&#xff0c;因为它包含了一个主要的听觉工作场所。最新fl studio破解版有不同的功能&#xff0c;如它包含图形和音乐音序器&#xff0c;帮助您使完美的配乐在一个美妙的…

docker安装etherpad文档系统

效果 安装 1.创建并进入目录 mkdir -p /opt/etherpad cd /opt/etherpad 2.修改目录权限 chmod -R 777 /opt/etherpad 3.创建并启动容器 docker run -d --name etherpad --restart always -p 10054:9001 -v /opt/etherpad/data:/opt/etherpad-lite/var etherpad/etherpad:la…

小白代码审计入门

最近小白一直在学习代码审计,对于我这个没有代码审计的菜鸟来说确实是一件无比艰难的事情。但是着恰恰应了一句老话:万事开头难。但是小白我会坚持下去。何况现在已经喜欢上了代码审计,下面呢小白就说一下appcms后台模板Getshell以及读取任意文件,影响的版本是2.0.101版本。…

电脑访问网站受限

电脑访问网站受限通常是由于以下几种情况导致的&#xff1a; 网络防火墙&#xff1a;某些组织或机构会设置网络防火墙&#xff0c;限制员工或用户访问特定的网站。这些防火墙可以根据网站的域名、IP地址或关键词进行过滤和屏蔽。 地理位置限制&#xff1a;有些网站可能根据用户…

单片机的了解与主流型号有哪些?

单片机是一种集成电路芯片&#xff0c;采用超大规模集成电路技术将具有数据处理能力的中央处理器 CPU、随机存储器 RAM、只读存储器 ROM、多种 I/O 口和中断系统、定时器/计数器等功能集成到一块硅片上&#xff0c;构成一个微型计算机系统。单片机广泛应用于工业控制领域&#…

linux系统非关系型数据库redis的配置文件

redis配置文件 Redis的配置文件位于Redis安装目录下&#xff0c;文件名为redis.conf&#xff0c;配置项说明如下 Redis默认不是以守护进程的方式运行&#xff0c;可以通过该配置项修改&#xff0c;使用yes启用守护进程 daemonize no当Redis以守护进程方式运行时&#xff0c;Red…