我有一个 bash 脚本,它使用一些监视工具启动 tmux 会话,并有一个 cronjob 在启动时运行它;但是,我看不到命令的常用前缀,也无法使用任何箭头键。
通常它应该是这样的:
(实际脚本)
#!/bin/sh
cd /home/ubuntu/
tmux start-server
tmux new-session -d -s "0" bash
tmux selectp -t 1
tmux splitw -h -p 50
tmux selectp -t 2
tmux splitw -v -p 50
tmux selectp -t 3
tmux send-keys "htop" C-m
# Select pane 1
tmux selectp -t 0
tmux attach-session -t "0"
tmux detach
什么地方出了错??
答案1
看起来你的 cron 作业启动了 sh 或 dash 而不是 bash(Ubuntu 区分了 bash 和 sh...我不知道情况是否仍然如此)。ps ux
当 cron-tmux 运行时,您应该能够使用 a 检查这一点。
如果真正的 bash 已启动,也许它没有source ~/.bashrc
:尝试/bin/bash -i
,或者在脚本中手动获取它。
此外,在 cron 作业中,环境通常很小。输入env
您的 tmux 会话以查看可用的内容,这可以给您提供线索。
如果你的 cron 以 root 身份运行(你没有提到,所以我假设为用户),他的 bashrc 可能很小或不存在,因此是丑陋的 cmdline。