通过crontab创建tmux会话时,在`tmux new session -d`命令中指定.bash_profile源路径不起作用

时间:2018-03-13 16:29:58

标签: bash cron tmux

我想要实现的目标是什么? 我正在尝试让crontab杀死之前的tmux会话并创建一个新的tmux会话(具有特定的teamocil设置)。

crontab运行的简单bash脚本:

#!/bin/bash
tmux kill-session;
tmux new-session -d "source /home/qa/.bash_profile;teamocil settings;";

问题我有吗? 手动运行此脚本可以正常工作,但是当通过crontab运行时,它只有在至少2个其他tmux会话预先存在时才会起作用,即它会将会话作为脚本的一部分终止,如果没有会话,则crontab将不会创建第一个会话。如果在杀死一个会话后还有另一个会话可用,那么该脚本就可以工作。

到目前为止的调查结果? 我发现如果我将源声明为bash脚本的一部分,而不是在tmux new sessions命令中,那么它可以正常工作。为什么会这样?请参阅下面的修改后的脚本:

#!/bin/bash
source /home/qa/.bash_profile
tmux kill-session;
tmux new-session -d "teamocil settings;";

理解为什么这会有所帮助,帮助我更新其他脚本并且不再犯这个错误,这将非常有帮助。任何可以解决的光都是值得赞赏的。

1 个答案:

答案 0 :(得分:1)

在crontab行中直接输入脚本路径前的路径,这将使脚本更灵活,以备将来使用。

解释https://serverfault.com/questions/337631/crontab-execution-doesnt-have-the-same-environment-variables-as-executing-user

非常好的回答https://unix.stackexchange.com/questions/27289/how-can-i-run-a-cron-command-with-existing-environmental-variables

另一个非常好的答案https://unix.stackexchange.com/questions/6790/executing-a-sh-script-from-the-cron

Recomendation: 你可能在某处回答问题。人们只需要搜索它。