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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/9/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【案例分享】crontab执行脚本异常问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

很多時(shí)候我們會(huì)遇見(jiàn)這種情況,我們千辛萬(wàn)苦寫(xiě)了一個(gè)腳本,經(jīng)過(guò)測(cè)試,一切正常,然后放到了crontab里面執(zhí)行,結(jié)果,不管怎么配置,就是執(zhí)行不正常。


結(jié)果發(fā)現(xiàn)環(huán)境問(wèn)題,居然是這個(gè)異常的元兇。


我們先在我們的服務(wù)器上執(zhí)行env命令,出現(xiàn)如下:

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


然后我們編輯一個(gè)crontab,如下:

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


然后我們?cè)?home/crontab.out文件中,看看里面的內(nèi)容。令人奇怪的是,我們發(fā)現(xiàn)的里面的信息只有

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中編輯后不可以運(yùn)行了。因?yàn)閏rontab的任務(wù)環(huán)境就沒(méi)有定義那么多的環(huán)境變量,我們?cè)诮换ナ降沫h(huán)境下寫(xiě)的腳本中用到了這些沒(méi)有的環(huán)境變量,當(dāng)然可以通過(guò),但是放到crontab下就不行了。


那么這些環(huán)境變量居然差那么多,為什么呢?因?yàn)橄到y(tǒng)的cron deamon會(huì)自動(dòng)設(shè)置可構(gòu)成最小環(huán)境的環(huán)境變量。


解決方案可以有兩種:

1. 定義好一些環(huán)境參數(shù),并在crontab里面先source生效,再執(zhí)行主程序腳本

2. 直接把腳本中的環(huán)境變量改為絕對(duì)路徑。


公眾號(hào)-智能化IT系統(tǒng)。每周都有技術(shù)文章推送,包括原創(chuàng)技術(shù)干貨,以及技術(shù)工作的心得分享。掃描下方關(guān)注。



總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。