How to Run Tmux Service Scripts on Ubuntu Start Up

2019-12-30 17:29:30 浏览数 (1)

是的,做了无数遍还是不长记性,昨天又在这上面踩坑了;在ubuntu上写的启动脚本不执行,仅仅是可执行权限和用户权限的问题,又浪费了一上午;

在unbuntu启动时自动做一些工作,最佳实践是:

你想要执行一个服务
  • 如果是比较老的ubuntu (version<=14.04LTS);

这个时候你需要利用ubuntu的upstart机制

简单说来,就是将一个这样的脚本:

1 2 3

start on startup task exec /path/to/command

存为taskxxx.conf文件,放到/etc/init 目录下面(这将会在开机时用root用户权限启动);

或者存为 ~/.config/upstart(这将会在开机时用当前用户权限启动)

  • 如果你是比较现代的ubuntu (version>=16.04LTS)

你需要利用 systemd 服务,这个我们之前写文章科普过:

https://happy123.me/blog/2016/08/22/how-to-write-standard-startup-script/

仅仅想执行一条简单的命令

1

sudo nano /etc/rc.local

加入执行的命令,不要忘了最后加exit

1 2

/opt/tmux.sh exit 0

增加可执行权限

1

sudo chmod x /etc/rc.local

注意:

  • 要有可执行权限,这个最容易踩坑,ubuntu安装完毕 /etc/rc.local 是没有可执行权限的
  • 注意执行命令的ENV变量,不确定的时候要在命令签名设定SHELL ENV Variable
  • 如果是执行一个脚本,注意脚本命令调用的shell (bash or sh or zsh),以及ENV Variable
  • 注意执行脚本、执行命令的用户
如果是修改一个环境变量

修改当前用户:

1

nano ~/.bashrc

所有用户生效:

1

nano ~/etc/profile

最后,附赠最简单粗暴的开机执行任务方式

就是在/etc/rc.local 里面启动一个tmux session,在里面执行想要运行的命令;简单粗暴有效

来个模板:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

#!/bin/bash # description "Start Tmux" # Sleep for 5 seconds. If you are starting more than one tmux session # "at the same time", then make sure they all sleep for different periods # or you can experience problems /bin/sleep 5 # Ensure the environment is available source ~/.bashrc # Create a new tmux session named newscrawler.. /usr/bin/tmux new-session -d -s bitcoin # ...and control the tmux session (initially ensure the environment # is available, then run commands) # /usr/bin/tmux send-keys -t bitcoincash:0 "source ~/.bashrc" C-m tmux new-window -n console -t bitcoin /bin/sleep 3 /usr/bin/tmux send-keys -t bitcoin:0 "cd /opt/bitcoin && ./startbitcoind.sh" C-m /bin/sleep 3 /usr/bin/tmux send-keys -t bitcoin:1 "cd /opt/bitcoin && ./checkwallet start" C-m

0 人点赞