相关疑难解决方法(0)

sh和bash之间的区别

在编写shell程序时,我们经常使用/bin/sh/bin/bash.我经常使用bash,但我不知道它们之间有什么区别.

bash和之间的主要区别是sh什么?

我们究竟需要意识到在编程时bashsh

unix bash shell sh

1194
推荐指数
11
解决办法
46万
查看次数

在cron中使用rbenv的ruby脚本

我正在尝试使用rbenv和cron运行ruby脚本.我知道我需要加载rbenv才能加载正确的ruby版本.

我尝试过这样的选项:

*/10****/bin/bash -c'source $ HOME/.bashrc; cd/data/app; ruby -v'>> /tmp/logfile.txt 2>&1

但由于会话不是交互式的,我没有正确的ruby版本.我找到了这样的例子:

15 14 1**export BASH_ENV =/path/to/environment &&/full/path/to/bash -c'/full/path/to/rvm_script.rb'

它没有更好的工作.然后我写了一个加载器,它只在当前shell中加载rbenv,但它不起作用.

*/1****/bin/bash -c'$ HOME/.rbenv/loader.sh; cd/data/app /; ruby -v'>> /tmp/logfile.txt 2>&1

现在我正在寻找另一种加载它的方法......任何想法?

ruby cron rbenv

31
推荐指数
3
解决办法
1万
查看次数

CronJob没有运行

我通过输入crontab -e在ubuntu环境中为root用户设置了cronjob

  34 11 * * * sh /srv/www/live/CronJobs/daily.sh
  0 08 * * 2 sh /srv/www/live/CronJobs/weekly.sh
  0 08 1 * * sh /srv/www/live/CronJobs/monthly.sh
Run Code Online (Sandbox Code Playgroud)

但是cronjon不会跑.我已经尝试检查cronjob是否正在运行

pgrep cron

并提供进程ID 3033. shell脚本调用python文件,用于发送电子邮件.运行python文件是可以的.它没有错误,但是cron没有运行.daily.sh文件中包含以下代码.

python /srv/www/live/CronJobs/daily.py
python /srv/www/live/CronJobs/notification_email.py
python /srv/www/live/CronJobs/log_kpi.py
Run Code Online (Sandbox Code Playgroud)

linux crontab ubuntu-12.04

31
推荐指数
4
解决办法
8万
查看次数

AWS无法在Cronjob工作

所以我每天都有一个脚本从AWS下载文件并将其附加到电子表格中.要做到这一点,我已经建立了一个cronjob.

我手动运行时脚本工作正常,但从cronjob运行时不起作用.

代码有一行:

aws s3 cp s3://My/files/backup/ ~/home/AnPoc/ --recursive --exclude "*.tgz" --include "*results.tgz"
Run Code Online (Sandbox Code Playgroud)

在我收到的cronjob执行的电子邮件中,我看到以下错误消息:

./AnPoc/DayProcessing.sh: line 14: aws: command not found
Run Code Online (Sandbox Code Playgroud)

我不知道为什么命令没有找到.任何帮助都会很棒.

shell cron amazon-s3

28
推荐指数
3
解决办法
1万
查看次数

Cron作业不会获取.bashrc中设置的环境变量

这是我的cron工作:

plee@dragon:~$ crontab -l
* * * * * /bin/bash -l -c 'source ~/.bashrc; echo $EDITOR > /tmp/cronjob.test'
Run Code Online (Sandbox Code Playgroud)

和内部~/.bashrc文件,我有export EDITOR=vim,但在最终/tmp/cronjob.test文件中,它仍然是空的?

那么如何获取环境变量(在.bashrc文件中设置)并在我的cron作业中使用它?

plee@dragon:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04 LTS
Release:        12.04
Codename:       precise
plee@dragon:~$ uname -a
Linux dragon 3.2.0-26-generic-pae #41-Ubuntu SMP Thu Jun 14 16:45:14 UTC 2012 i686 i686 i386 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

如果使用这个:

* * * * * /bin/bash -l -c -x 'source ~/.bashrc; echo $EDITOR …
Run Code Online (Sandbox Code Playgroud)

bash cron environment-variables

22
推荐指数
2
解决办法
3万
查看次数

在 docker 中通过 cron 运行时`/bin/sh: 1: python: not found`

我想在 docker 容器中通过 cron 重复调用一个脚本,但是当我从一次性执行切换到通过 cron 执行时,官方 python 镜像似乎突然找不到 python。

Dockerfile:

FROM python:3.7-slim

COPY main.py /home/main.py

#A: works
CMD [ "python", "/home/main.py" ]

#B: doesn't work
#RUN  apt-get update && apt-get -y install -qq --force-yes cron
#COPY hello-cron /etc/cron.d/hello-cron
#CMD ["cron", "-f"]
Run Code Online (Sandbox Code Playgroud)

主要.py

import time

for i in range(90000):
    print(i)
    time.sleep(5000)
Run Code Online (Sandbox Code Playgroud)

你好-cron:

* * * * * root python /home/main.py > /proc/1/fd/1 2> /proc/1/fd/2
#
Run Code Online (Sandbox Code Playgroud)

当我在 Dockerfile 中将 A 切换为 B 时,错误消息是:/bin/sh: 1: python: not found

谢谢大家的快速回复!添加PATH=/usr/local/bincron …

python cron docker

7
推荐指数
1
解决办法
5391
查看次数

无法从 crontab 作业进行 git 提交

git commit我正在尝试使用 bash 脚本进行操作。我已经设置了一个 cron 作业来定期执行该脚本。如果我直接执行脚本,一切都会按预期进行。由于某种原因,当从 调用脚本时crontab,会git commit失败。这是脚本:

#!/bin/bash
cd /mnt/ebs2/sitemap
echo "Calling java application to generate sitemap"
java -jar SiteMap-1.0-jar-with-dependencies.jar -i sitemapconfig.xml -o /mnt/ebs2/sitemap/website_sitemaps -url ADSKContentURL
echo "sitemap generation complete.."
cd website_sitemaps
chmod 750 *
echo "Updated file permission, commiting to git..."
git commit -am 'automated weekly update'
git push -u
echo "git commit done..."
cd ..
Run Code Online (Sandbox Code Playgroud)

这是 crontab 的输出:

Calling java application to generate sitemap
sitemap generation complete..
Updated file permission, commiting to …
Run Code Online (Sandbox Code Playgroud)

git shell cron git-commit

5
推荐指数
1
解决办法
2155
查看次数

注意:root 的 PATH 通常应该包含 /usr/local/sbin、/usr/sbin 和 /sbin UBUNTU

在 shell 中运行命令时(例如 sudo apt-get install aptitude),这是输出:

dpkg: warning: 'ldconfig' not found in PATH or not executable.
dpkg: warning: 'start-stop-daemon' not found in PATH or not executable.
dpkg: 2 expected program(s) not found in PATH or not executable.
NB: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.
Run Code Online (Sandbox Code Playgroud)

这是我设置的变量:

export PATH=$PATH:/usr/local/sbin:/usr/local/bin in bashrc
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" in /etc/environment
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" in /etc/sudoerds
echo $path /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/node/node:/usr/local/sbin:/usr/local/bin
sudo echo $path
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/node/node:/usr/local/sbin:/usr/local/bin
Run Code Online (Sandbox Code Playgroud)

linux ubuntu

4
推荐指数
1
解决办法
2万
查看次数

Bundle exec rake不在cron中运行

我做了一些研究,但所有与cron和bundle exec相关的问题都没有解决,如果已经讨论过,我将再次为我辩解。

我正在运行Ubuntu 13.10,并且有一个Ruby On Rails应用程序,该应用程序几乎不需要每隔几分钟就在Cron上运行的一些rake任务。

我运行一个每当gem时,借助该语法

every 3.minutes do
  rake 'update_balance'
end
Run Code Online (Sandbox Code Playgroud)

转换为crontab文件中的这一行

0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 * * * * /bin/bash -l -c 'cd /var/fruby/releases/20140513091404 && RAILS_ENV=production bundle exec rake update_balance --silent'
Run Code Online (Sandbox Code Playgroud)

当我完全复制此行时

/bin/bash -l -c 'cd /var/fruby/releases/20140513091404 && RAILS_ENV=production bundle exec rake update_balance --silent'
Run Code Online (Sandbox Code Playgroud)

并在它的控制台中运行,它运行得很好,并且可以按预期更新数据库中的多个记录。

但是当设置为cron时,我可以看到它在/ var / log / syslog文件中运行,但是实际上并没有执行任何操作。

May 13 13:06:01 sandbox2 CRON[9656]: (root) CMD (/bin/bash -l -c 'cd /var/fruby/releases/20140513091404 && RAILS_ENV=production bundle exec rake update_balance --silent')
May 13 13:06:01 sandbox2 CRON[9655]: (CRON) info (No MTA installed, …
Run Code Online (Sandbox Code Playgroud)

ruby ubuntu cron ruby-on-rails

2
推荐指数
1
解决办法
3064
查看次数