SSH 连接断了但是不想关掉终端重新打开怎么办? - 2017-05-05 20:36:49

SSH 连接断了但是不想关掉终端重新打开怎么办?依次输入 回车 ~ . ~是 SSH 的命令,使用~? 可以看到全部命令,只能在行开始的时候有效 ian@ops:~$ ~? Supported escape sequences: ~. - terminate connection (and any multiplexed sessions) ~B - send a BREAK to the remote system ~C - open a command line ~R - request rekey ~V/v - decrease/increase verbosity (LogLevel) ~^Z - suspend ssh ~# - list forwarded connections ~& - background ssh (when waiting for connections to terminate) ~? - this message ~~ - send the escape character by typing it twice (Note that escapes are only recognized immediately after newline.

start-stop-daemon 将程序作为守护进程启动 - 2017-05-05 20:36:49

像 nohup 这种 太简单,而supervisor这种又有点复杂,需要安装配置 start-stop-daemon 作为系统自带,简单实用 TLDR; 示例 PIDFILE=/var/run/nginx.pid DAEMON=/home/foo/bin/nginx DAEMON_OPTS="-c /tmp/bar/nginx/fake.conf" start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS 上面执行指令通过 start-stop-daemon 来启动一个Nginx进程,并且要求生成一个pid文件到指定目录中。注意这里只是一个虚拟出来的范例,用来说明 start-stop-daemon 的运作方式,真实环境中Nginx不需要这样启动。 参数介绍 –start 启动一个守护进程 –stop 终止一个守护进程 –status 查看一个守护进程运行状态 –pidfile 记录进程号(pid)的文件 –exec 启动进程的入口 –user 启动进程的用户 –make-pidfile 如果进程自己不创建pidfile,可以通过该参数指定 –quiet 不输出警告信息 –background 指定为后台运行模式,一般和–background合用 – 空格之后的参数是传给–exec的,如上例就是/home/foo/bin/nginx
 --status 的几个状态说明 0 Program is running. 1 Program is not running and the pid file exists. 3 Program is not running.

如何实现命令行进度条 - 2017-05-05 20:36:49

关键点 \r -ne \r 保证从行开始处开始输出 -ne 不输出换行 \n demo: echo -ne '##### (33%)\r' sleep 1 echo -ne '############# (66%)\r' sleep 1 echo -ne '####################### (100%)\r' echo -ne '\n' 参考 http://stackoverflow.com/questions/238073/how-to-add-a-progress-bar-to-a-shell-script 一些 Golang 项目 mitchellh/ioprogress: Go (golang) package for progress bars around io.Reader/Writers. cheggaaa/pb: Console progress bar for Golang sethgrid/multibar: Display multiple progress bars in Go (golang). mitchellh/cli: A Go library for implementing command-line interfaces.