Living a Simple Life is a Happy Life

有饭吃,自由自在,就非常开心

How to Run Tmux Service Scripts on Ubuntu Start Up

| Comments

是的,做了无数遍还是不长记性,昨天又在这上面踩坑了;在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

Comments