Linux Ubuntu:启动时用args启动shell脚本

Linux Ubuntu:启动时用args启动shell脚本,linux,bash,shell,ubuntu,Linux,Bash,Shell,Ubuntu,我正在运行UbuntuServer14.04,我正在尝试让一个shell脚本在启动时运行。问题是脚本需要args,其中一个是文件(数据库),另一个是端口号,该端口号与脚本位于同一文件夹中。我对这方面还不太熟悉 例如,当我进入终端中的文件夹时,我可以键入: sh script.sh potato 1234 script.sh是脚本,potato是文件名,1234是端口号。手动操作时效果很好 我尝试添加一个crontab,@rebootscript.sh.1234,当然它不起作用,它找不到脚本 所

我正在运行UbuntuServer14.04,我正在尝试让一个shell脚本在启动时运行。问题是脚本需要args,其中一个是文件(数据库),另一个是端口号,该端口号与脚本位于同一文件夹中。我对这方面还不太熟悉

例如,当我进入终端中的文件夹时,我可以键入:

sh script.sh potato 1234
script.sh是脚本,potato是文件名,1234是端口号。手动操作时效果很好

我尝试添加一个crontab,@rebootscript.sh.1234,当然它不起作用,它找不到脚本

所以我试着:

 @reboot */path/to/my/script.sh* potato 1234
@reboot path/to/my/script.sh /path/to/my/potato 1234
再说一次,没用。我想它找不到数据库了

所以我试着:

 @reboot */path/to/my/script.sh* potato 1234
@reboot path/to/my/script.sh /path/to/my/potato 1234
还是没有骰子

我也试着用路径来运行它

sh path/to/my/script.sh potato 1234
当然失败了-脚本启动并告诉我它找不到数据库,这是应该的

sh/path/to/my/script.sh/path/to/my/potato 1234
未返回任何错误,但也未启动

这就是我试图开始的脚本的样子:

if [ $# -lt 1 -o $# -gt 2 ]; then
    echo 'Usage: restart dbase-prefix [port]'
    exit 1
fi

if [ ! -r $1.db ]; then
    echo "Unknown database: $1.db"
    exit 1
fi

if [ -r $1.db.new ]; then
    mv $1.db $1.db.old
    mv $1.db.new $1.db
    rm -f $1.db.old.Z
    compress $1.db.old &
fi

if [ -f $1.log ]; then
    cat $1.log >> $1.log.old
    rm $1.log
fi

echo `date`: RESTARTED >> $1.log
nohup ./moo $1.db $1.db.new $2 >> $1.log 2>&1 &``

有什么线索吗?

您需要查看程序的输出
cron
将输出发送到crontab的所有者或发送到crontab顶部的
MAILTO
环境变量中指定的地址

注意执行环境。通常,大多数基本环境变量(
PATH
HOME
等)都不会设置,可能会导致执行错误

有关更多信息,请参阅
cron
手册页:

man 5 crontab
这些帖子也可以帮助您:


运行
sh-x/path/to/my/script.sh/path/to/my/potato 1234
并查看正在运行的命令是什么?它在哪里停止/失败?感谢您的关注!它是:
+[2-lt 1-o2-gt 2]+[!-r/path/to/my/potato.db]+[-r/path/to/my/potato.db.new]+mv/path/to/my/potato.db/path/to/my/potato.db.old+mv/path/to/my/potato.db.new/path/to/my/potato.db+rm-f/path/to/to/my/potato.db.old.Z+-f/path/to/to/my/potato.log]+cat/path/to/my/potato.log+rm/path/to/my/potato.log+compress/path/to/my/potato.db.old/path/to/my/script.sh:32:/path/to/my/script.sh:compress:not found+date+echo Sun 11月22日23:08:07 GMT 2015:重启root@moodev:/#+nohup./moo/path/to/my/potato.db/path/to/my/potato.db.new 7777
我无法插入换行符。在这里问问题也很新鲜。它似乎在压缩时拉屎。让我看看如果我在它的文件夹中运行脚本,它是否会出错。这是我直接在它的文件夹中使用-x得到的结果<代码>+[2-lt 1-o 2-gt 2]+[!-r potato.db]+[-r potato.db.new]+[-f potato.log]+cat potato.log+rm potato.log+date+echo Sun 2015年11月22日23:18:40 GMT:重新启动好的,所以我通过实现cron以术语运行所有东西来解决这个问题。因此,@reboot cd/path/to/my//restart.sh.7777。经过测试,效果良好。