首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Crontab不会运行命令@reboot

Crontab不会运行命令@reboot
EN

Ask Ubuntu用户
提问于 2019-06-12 23:44:52
回答 1查看 2.4K关注 0票数 1

我在服务器上运行jupyter记事本。

要启动它,我有以下脚本:

代码语言:javascript
复制
#!/bin/sh
exec &> /home/user/logfile2.txt

echo 'running jup.sh' >> /home/user/logfile2.txt

cd /home/user/jup
unset XDG_RUNTIME_DIR
pipenv run jupyter notebook &

我的sudo crontab文件看起来如下:

代码语言:javascript
复制
@reboot sleep 20 && /usr/scripts/jup.sh

它似乎还包括:

代码语言:javascript
复制
@reboot sleep 20 && /usr/scripts/jup.sh &    -or-
@reboot sleep 20 && /home/user/jup.sh &      -or- 
@reboot (sleep 20 && /usr/scripts/jup.sh) > /dev/null 

脚本将输出文件的回显部分,我还输出了工作目录。据我所知,唯一没有执行的是"pipenv .“命令。

  1. 最近我把LTS从17.10升级到18.04。它过去在“常规”crontab下工作,而不是sudo。
  2. 脚本将在shell中启动jupyter笔记本。

编辑1:我实现了建议,为pipenv和. /etc/profile添加了完整的路径。这两个问题都没有解决。

我还删除了脚本的第一行,并收到一封邮件,称它找不到完整的路径。它说它需要一条完整的道路。我加了完整的路径,这个错误就消失了。因此,完整的道路是我问题的一部分。

我有一个类似的脚本,运行一个django应用程序的gunicorn服务器。它也能从shell中运行,但不适用于@reboot。它过去也适用于@reboot。

编辑2:收到关于错误的电子邮件:(这已经通过添加路径来修复)

代码语言:javascript
复制
From root@experiments.local  Thu Jun 13 11:25:23 2019
Return-Path: <root@experiments.local>
X-Original-To: root
Delivered-To: root@experiments.local
Received: by experiments.local (Postfix, from userid 0)
    id 05966E144D; Thu, 13 Jun 2019 11:25:23 -0700 (PDT)
From: root@experiments.local (Cron Daemon)
To: root@experiments.local
Subject: Cron <root@experiments> (sleep 20 && /usr/scripts/jup.sh)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
Message-Id: <20190613182523.05966E144D@experiments.local>
Date: Thu, 13 Jun 2019 11:25:23 -0700 (PDT)

/usr/scripts/jup.sh: 13: /usr/scripts/jup.sh: pipenv: not found

当前脚本:

代码语言:javascript
复制
#!/bin/sh
. /etc/profile

#exec &> /home/john/logfile2.txt

echo 'running jup.sh' >> /home/john/logfile2.txt

cd /home/john/jup
echo $PWD >> /home/john/logfile2.txt


unset XDG_RUNTIME_DIR
/usr/local/bin/pipenv run jupyter notebook &

juypter是一个用于代码探索的IDE。jupyter.org。我是通过这里的说明安装的:https://jupyterlab.readthedocs.io/en/stable/getting_已启动/installation.html

Root:我已经在sudo crontab和常规crontab中运行了它。在最近几天之前,它还没有作为root运行。作为故障排除的一部分,我已经在这两种情况下运行了脚本,以查看它是否起了作用。它还没有。

EN

回答 1

Ask Ubuntu用户

发布于 2019-06-13 00:03:11

当脚本由cron执行时,通常不像从登录shell中设置环境变量那样设置环境变量。特别是缺少PATH,这意味着shell找不到pipenv命令。可能的解决办法:

  1. 将绝对路径添加到外部命令。您可以找到pipenv的位置,$哪个pipenv在脚本中的调用应该读/usr/bin/pipenv,运行jupyter记事本&
  2. 加载完整的环境。这通常是通过在脚本顶部添加以下行来实现的:/etc/概况
票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1150659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档