Command-line Environment
任务控制
shell
会使用UNIX提供的信号机制去执行进程间的通信,进程收到信号的时候,会基于信号改变其执行
停止
停止任务:^c
信号:SIGINT
在进行find
遍历目录时,使用^c
,发出SIGINT
到该进程,停止了该任务
课程中提供了一个脚本,忽略了SIGINT
信号的基本操作也就是终止程序,为了停止可以使用另外一个信号
^\
信号:SIGQUIT
import signal, time
def handler(signum, time):print("\nI got a SIGINT, but i am not stopping")signal.signal(signal.SIGINT,headler)i=0
while True:time.sleep(.1)print("\r".farmat(i),end="")i+=1;
程序接收到了SIGINT
信号,但是并不会让该程序停止,这是就可以使用^\
来停止该程序
另外还有一个信号也可以用来停止程序
信号:SIGTERM
通过执行kill -TERM <pid>
发送该信号
暂停
终端暂停:^z
信号:SIGTSTP
可以使用fg
恢复到前台继续,bg
恢复到后台继续
使用命令:kill -STOP <pid>
信号:SIGSTOP
主要区别
特性 | SIGTSTP | SIGSTOP |
---|---|---|
触发方式 | kill 或者系统 |
交互界面^z |
是否可捕获 | 不可捕获、阻塞、忽略 | 可捕获、阻塞、忽略 |
典型用途 | 系统强制暂停 | 用户暂停 |
后台
在命令后面加上&
,即可让任务在后台执,[[#暂停]]中提到的bg
也可以让暂停的任务在后台去执行
当转入后台运行后,终端关闭后会发送一个SIGHUP
信号,终止该任务
可以使用nohup
忽略SIGHUP
信号,可以使用kill <pid>
直接结束进程
更多信号信息
终端多路复用
tmux
tmux
的结构:
- 会话:每一个会话都是一个独立的工作区
- 窗口:相当于一个标签页,将会话分为多个部分
- 窗格:可以使一个屏幕放多个
shell
- 窗格:可以使一个屏幕放多个
- 窗口:相当于一个标签页,将会话分为多个部分
tmux快速入门
别名
相当于将长命令缩短
定义语法:
alias alias_name="command"
=
两边不要有空格
禁用别名语法:
unalias alias_name
获取别名的定义:
alias alias_name
默认别名是不会持续生效的,可以放进shell
的启动文件中比如:bashrc
、zshrc
bashrc
中的一部分内容
配置文件(Dotfile)
因为.
开头,又叫点文件
默认为隐藏文件,shell程序会读取很多文件加载配置项
可以将这些文件统一放到一个目录中,搭配git
统一进行管理
远端设备
ssh
远端登录
ssh username@server
输入密码即可登录远端的服务器
直接执行命令
ssh username@server ls
SSH密钥
客户端生成密钥对
ssh-keygen -o -a 100 -t rsa -f ~/.ssh/id_rsa
此时~/.ssh/
下就会有一个私钥文件和公钥文件
需要将.pub
文件上传到服务端上
ssh-copy-id -i id_rsa.pub username@server
然后输入密码,即可将公钥上传到服务端,以后即可直接登录,不需要使用密码验证
SSH的复制
ssh+tee
cat filename | username@server tee serverfile
scp
scp /path/local_file username@server:/path/server_file
rsync
与scp
类似
SSH配置
配置~/.ssh/config
文件,可以实现别名登录
config
Host vmUser usernameHostName serverIdentityFile ~/.ssh/id_rsa
使用别名即可直接登录
ssh ming
原文章:http://www.ming-ice-tea.top/?p=38