Scripting

使用 crontab 執行 .sh 腳本

  • July 20, 2020

我有一個名為diario.sh我手動執行的文件./diario.sh

腳本文件包含以下內容:

#!/bin/bash
cd /home/etapa/Scripts
echo "@CDRS_ETAPATOTAL.sql" | sqlplus -s ooperadores/ooperadores@OOPERADORES | while read output;
do
echo $output
done

當我手動執行它時工作正常,但是當我嘗試使用它執行它時,crontab我收到以下錯誤:

ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified


SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM|SYSBACKUP|SYSDG|SYSKM|SYSRAC}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
<proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]

ERROR:
ORA-12162: TNS:net service name is incorrectly specified


SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus

crontab條目如下:

10 * * * * /home/etapa/Scripts/diario.sh > /home/etapa/Scripts/diario.log 2>&1

請幫我解決這個問題。

當您從 cron 執行此腳本時,似乎未填充某些環境變數。您可以通過採購 ( . /path/name) 適當的文件來解決它,例如

#! /bin/bash
. /home/etapa/.bash_profile

引用自:https://unix.stackexchange.com/questions/599426