65

show を実行すると、これを含む file.sh があります: TERM 環境変数が設定されていません。

smbmount //172.16.44.9/APPS/Interfas/HERRAM/sc5 /mnt/siscont5 -o 
iocharset=utf8,username=backup,password=backup2011,r

if [ -f /mnt/siscont5/HER.TXT ]; then
    echo "No puedo actualizar ahora"
    umount /mnt/siscont5
else 
    if [ ! -f /home/emni/siscont5/S5.TXT ]; then
        echo "Puedo actualizar... "
        touch /home/emni/siscont5/HER.TXT
        touch /mnt/siscont5/SC5.TXT
        mv -f /home/emni/siscont5/CCORPOSD.DBF /mnt/siscont5
        mv -f /home/emni/siscont5/CCTRASD.DBF /mnt/siscont5
        rm /mnt/siscont5/SC5.TXT
        rm /home/emni/siscont5/HER.TXT
        echo "La actualizacion ha sido realizada..."
    else
        echo "No puedo actualizar ahora: Interfaz exportando..."
    fi
fi
umount /mnt/siscont5
echo "/mnt/siscont5 desmontada..."
4

6 に答える 6

61

cron (端末なし) から呼び出されたスクリプトで端末コマンド、つまり「clear」を使用すると、このエラー メッセージが表示されます。特定のスクリプトでは、smbmount コマンドは端末を想定しており、その場合は上記の回避策が適切です。

于 2015-11-12T19:42:28.857 に答える
6

あなたは次のステートメントで質問に答えました。

Cronはこれ.shを2分ごとに呼び出します

Cron はターミナルでは実行されません。

このエラー メッセージが表示される最も一般的な理由は、スクリプトがユーザーのソースを取得しようとして、.profiletty 関連の何かを実行する前に端末で実行されていることを確認しないためです。回避策には、次のようなシバン行の使用が含まれます。

#!/bin/bash -p

これにより、システムレベルのプロファイルスクリプトのソースが発生し、(1 つは) あまりにもばかげたことをしようとせず、端末からの実行に依存するコードを保護します。

これがスクリプト全体である場合、TERMエラーはスクリプトのプレーン コンテンツ以外の原因で発生しています。

于 2013-04-27T13:28:15.597 に答える
0

解決済み: Debian 10 では、CRONTAB (ルート) によって実行されるが www-data として実行されるスクリプトに「EXPORT TERM=xterm」を追加します。

$ crontab -e

*/15 * * * * /bin/su - www-data -s /bin/bash -c '/usr/local/bin/todos.sh'

FILE=/usr/local/bin/todos.sh

#!/bin/bash -p
export TERM=xterm && cd /var/www/dokuwiki/data/pages && clear && grep -r -h '|(TO-DO)' > /var/www/todos.txt && chmod 664 /var/www/todos.txt && chown www-data:www-data /var/www/todos.txt
于 2019-10-25T15:47:40.553 に答える