得之我幸 失之我命

when someone abandons you,it is him that gets loss because he lost someone who truly loves him but you just lost one who doesn’t love you.

偷懒大法好,直接上,获取定制 PS1 的变量值吧

拿某个 PS1 变量举例吧

1
2
3
4
5
6
7
8
9
$ echo $PS1
\[\033[1;35m\]\T\[\033[0m\]User:\[\033[1;33m\]\u\[\033[0m\]Dir:\[\033[1;32m\]\w\[\033[0m\]\n\$
# '\[\033[1;35m\]\T\[\033[0m\]':高亮品红当前时间(12小时) HH: MM: SS
# 'User:':User:
# '\[\033[1;33m\]\u\[\033[0m\]':高亮黄色当前用户名称
# 'Dir:':Dir:
# '\[\033[1;32m\]\w\[\033[0m\]':高亮绿色当前工作目录
# '\n':换行
# '\$':根用户为 #,其它用户为 $

Read More...


明明配置了 ssh 公钥,却还是不能在登录服务器的时候免去输入密码的过程,这是为啥?大概率是因为你忽略了一个叫 authorized_keys 的东西

Read More...


踩坑,bash 的单引号和双引号的坑,首先给出结论,两者差距还是蛮大的

'" 的不同,主要是对于某些 meta 的关闭与否,以 $ 來作说明:

1
2
3
4
5
$ A=B\ C
$ echo "$A"
B C
$ echo '$A'
$A

在第一个 echo 命令行中,$ 被置于 soft quote 中,將不被关闭,继续处理变量替换,因此 echo 將 A 的变量值输出到屏幕,也就得到 “B C” 的结果

在第二个 echo 命令行中,$ 被置于 hard quote 中,则被关闭,因此 $ 只是一个 $ 符号,并不会用來作变量替换处理,因此结果是 $ 符号后面接一个 A 字母:$A

Read More...


介绍几个进程

进程、僵尸进程、孤儿进程、进程组、前台进程组、后台进程组、孤儿进程组、会话

由于不同的 shell 对使用管道线时创建子进程的顺序不同,故本族谱选用 bash 为例,它是支持作业控制的 shell 的典型代表

文中用到的缩写:

  • PID:进程 ID (由内核根据延迟重用算法生成)
  • PPID:父进程 ID(只能由内核修改)
  • PGID:进程组 ID(子进程、父进程都能修改)
  • SID:会话 ID(进程自身可以修改,但有限制)
  • TPGID:控制终端进程组 ID(由控制终端修改,用于指示当前前台进程组)

Read More...


screen 日常使用

因为探究断开 ssh 继续运行命令而收获的一个小工具,在此记录下

在用 ssh 远程登录到 Linux 服务器后,经常运行一些需要很长时间才能完成的任务,如果为一个这样的任务开一个远程终端窗口,因为它们执行的时间太长,且必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,就半途而废了

Read More...


为什么 ssh 断开后运行的命令会退出呢?

明确元凶:

SIGHUP 信号

简单的来说:

因为所有进程都得有个父进程。当 ssh 到一个服务器上时,打开的 shell 就是所有执行命令的父进程,当断开 ssh 连接后,在 ssh 中运行命令的父进程就没了。如果处理不当,这些进程就会收到 SIGTERM 信号,全被干掉了

Read More...


起初不知 docker 滋味,一尝才知其好滋味,在 python 项目上来说,其实跟 pipenv 也是差不了太多。最初使用 docker 的目的其实是用 flask run 的方式部署 flask 项目,不过在 flask 的官方文档中发现了部署一章节,其实也不用这么麻烦了,不过在多个项目同时隔离运行上感觉还是有点用处的

Read More...


the only present love demands is love