日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【案例分享】crontab执行脚本异常问题

發布時間:2024/9/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【案例分享】crontab执行脚本异常问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

很多時候我們會遇見這種情況,我們千辛萬苦寫了一個腳本,經過測試,一切正常,然后放到了crontab里面執行,結果,不管怎么配置,就是執行不正常。


結果發現環境問題,居然是這個異常的元兇。


我們先在我們的服務器上執行env命令,出現如下:

XDG_VTNR=1

XDG_SESSION_ID=1

HOSTNAME=bogon

IMSETTINGS_INTEGRATE_DESKTOP=yes

GPG_AGENT_INFO=/run/user/0/keyring/gpg:0:1

VTE_VERSION=3802

TERM=xterm

SHELL=/bin/bash

XDG_MENU_PREFIX=gnome-

HISTSIZE=1000

GJS_DEBUG_OUTPUT=stderr

WINDOWID=37748743

GJS_DEBUG_TOPICS=JS ERROR;JS LOG

IMSETTINGS_MODULE=IBus

QT_GRAPHICSSYSTEM_CHECKED=1

USER=root

SSH_AUTH_SOCK=/run/user/0/keyring/ssh

USERNAME=root

SESSION_MANAGER=local/unix:@/tmp/.ICE-unix/1672,unix/unix:/tmp/.ICE-unix/1672

PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin

MAIL=/var/spool/mail/root

DESKTOP_SESSION=gnome

QT_IM_MODULE=ibus

PWD=/root

XMODIFIERS=@im=ibus

LANG=zh_CN.UTF-8

GDM_LANG=zh_CN.UTF-8

KDEDIRS=/usr

GDMSESSION=gnome

SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass

HISTCONTROL=ignoredups

HOME=/root

XDG_SEAT=seat0

SHLVL=2

GNOME_DESKTOP_SESSION_ID=this-is-deprecated

XDG_SESSION_DESKTOP=gnome

LOGNAME=root

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-VQpgyslPbO,guid=0b7c6ec0e15a92dd89a8eaf654f84153

LESSOPEN=||/usr/bin/lesspipe.sh %s

WINDOWPATH=1

XDG_RUNTIME_DIR=/run/user/0

DISPLAY=:0

XDG_CURRENT_DESKTOP=GNOME

XAUTHORITY=/run/gdm/auth-for-root-A4DlSi/database

_=/usr/bin/env


然后我們編輯一個crontab,如下:

* * * * * env > /home/crontab.out


然后我們在/home/crontab.out文件中,看看里面的內容。令人奇怪的是,我們發現的里面的信息只有

XDG_SESSION_ID=3

SHELL=/bin/sh

USER=root

PATH=/usr/bin:/bin

PWD=/root

LANG=zh_CN.UTF-8

SHLVL=1

HOME=/root

LOGNAME=root

XDG_RUNTIME_DIR=/run/user/0

_=/usr/bin/env


我們先不討論原因,這里,我們就可以看到為什么很多腳本在crontab中編輯后不可以運行了。因為crontab的任務環境就沒有定義那么多的環境變量,我們在交互式的環境下寫的腳本中用到了這些沒有的環境變量,當然可以通過,但是放到crontab下就不行了。


那么這些環境變量居然差那么多,為什么呢?因為系統的cron deamon會自動設置可構成最小環境的環境變量。


解決方案可以有兩種:

1. 定義好一些環境參數,并在crontab里面先source生效,再執行主程序腳本

2. 直接把腳本中的環境變量改為絕對路徑。


公眾號-智能化IT系統。每周都有技術文章推送,包括原創技術干貨,以及技術工作的心得分享。掃描下方關注。



總結

以上是生活随笔為你收集整理的【案例分享】crontab执行脚本异常问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。