最近(Aliyun)服务器又出问题没反应准备重启,不是第一次了,所以准备把重启后要运行的命令都写到一个shell script
里,例如启动 nginx/postgress ,有2个问题请教(搜索无果):
-
能否自动 tmux new-session
一个session
然后运行 Emacs
?
例如搜索后试了 tmux new-session -d -s test "emacs"
,不行
-
Emacs
启动后(自动)运行对应的SLIME
脚本启动服务器,例如启动命令写成
emacs '--eval=(progn (slime) (cd "~") (slime-switch-to-output-buffer) (insert "(start-server-example)") (slime-repl-return))
但是只有前半部分可以运行 启动(slime) (cd ~)
) ,进去后再人工eval
后面那段代码是可以自动达到效果
懒惰是程序员的美德,尽量“自动化”,让多任务都“一步到位”啊
另外阿里云的问题不知道是什么,很久没有登陆运行什么,CPU小号一般不超过1%,忽然之间。。
用last
查阅一下登陆历史好像没有什么异常情况
wsug
3
我似乎也是类似这样玩的,开机自动启动emacs,然后emacs自动打开shell,运行apache,然后又启动另一个shell,运行nginx、然后又启动其它shell运行node等在后台有一堆进程,我是写在emacs配置文件里面的,用elisp定义了win-apache
,win-nginx
这样的函数。
不过是在我自己电脑windows系统这样做,在服务器linux上没有敢这样折腾
最后发现关键是要多加一个 (sleep-for 1)
就可以了!!
这样又可以再懒一点了! (在shell里一个 wecat
就帮我打开了Emacs+SLIME+[wecat-server]
)
第一个问题 tmux+Emacs
大家都还没有遇到过吗?咱这用tmux
的还比较少?
现在只能人工 tmux new -s some_session
打开后再运行 wecat
了
我虽然在用 tmux,但具体的 tmux 用法基本上忘光了,只记得几个自己设置的快捷键。
我也是用 tmux 开启一个 session,然后在里面执行 emacs 并且启动一些东西。
手机回复的,不太方便手打,我就直接把我自己的配置贴上了供参考了:
if [ -e /usr/bin/tmux ] && [ "$TERM" != "screen-256color" ] && [ "$EMACS_START" != "emacs_start" ]
then
tmux has-session -t emacsserver &> /dev/null
if [ $? != 0 ]; then
tmux new-session -s emacsserver -d
fi
emacsclient -e '(server-running-p)' &> /dev/null
if [ $? != 0 ]; then
tmux send-keys -t emacsserver \
'/usr/local/bin/emacs -f server-start -f vesie-mode -nw' C-m
fi
mylocation=$(tty|cut -d'/' -f3)
if [ "$mylocation" == "pts" ]; then
tmux
exit
fi
fi
挺多多余的东西的,大致思路就是先开一个 session,然后借由 send-keys 去发送启动 emacs 的命令……
最后的 C-m 估计是回车……
1 个赞
通过关键词send-keys
搜到了解答:
https://www.atjiang.com/pragmatic-tmux-scripting-customized-envs/
今天学到不少,之前对tmux
的如此关键有用功能 send-keys
居然还毫不知情。。。
问题得到了完美解决,以后可以每次重启后自动执行我的任务,我的Web Server(Common Lisp开发的,基于Hunchentoot/Hunchensocket
打造了自己的 smart-server
)会自动运行起来了~~
又可以更懒一点了!!
1 个赞