Linux - HongkuanZhang/Technique-Notes GitHub Wiki
Linux查看和修改Path环境变量
通过ssh免密码登陆gateway
- 本地端生成密钥文件id_rsa和公钥文件id_rsa.pub
ssh-keygen -t rsa -C “your_email”
- 检查生成的钥匙
ls -al ~/.ssh
- 添加SSH Key
ssh-add -K ~/.ssh/id_rsa
- 在研究室输入密码登陆服务器(研究室内网已经在gateway上,不需要登录gateway)
ssh user_name@server_name
- 从本地将公钥放入服务器的路径
scp ~/.ssh/id_rsa.pub [email protected]:/root/path/in/server
- 在服务器上把公钥内容写入authorized_keys
cat id_rsa.pub >> ~/.ssh/authorized_keys
- 在本地终端输入以下命令即可免密码登陆gateway
ssh [email protected]
通过创建ssh中的config文件来绕过跳板机直接登录服务器
在进行了上面的秘钥生成和把公钥放到远程跳板机的操作之后,我们每次登录服务器仍然不得不先登录跳板机再登录远端服务器,实际上我们可以通过修改ssh中的config文件来绕过跳板机直接登录服务器,方法如下
- 在
~/.ssh/
中通过vim创建config文件
cd ~/.ssh/
vim config
- 然后在config文件中记入下方的文字。其中,gateway-name和remote-name都为自定义,只要保持引用时不变即可,gateway hostname是一个ip地址,username为登录名,远端hostname要根据远端名字来定义(fvcrcX)
Host gateway-name
User username
HostName ***.***.**.***
IdentityFile ~/.ssh/id_rsa
ForwardAgent yes
Host remote-name
HostName fvcrc0X
User username
ProxyCommand ssh -W %h:%p gateway-name
Host remote-name-2
HostName fvcrc0Y
User username
ProxyCommand ssh -W %h:%p gateway-name
- 之后在本地端即可直接连接远端服务器:
ssh remote-name
远程连接服务器Jupyter:
- 如果在研究室则:
ssh -4 -N -L localhost:本地端口:localhost:服务器jupyter端口 username@fvcrcn01/02
- 如果在家里则:
- 打开窗口1, 连接本地与gateway端口
ssh -4 -N -L localhost:本地端口:localhost:gateway端口 [email protected]
- 打开窗口2, 先登陆gateway
ssh [email protected]
然后连接gateway与服务器jupyter端口
ssh -4 -N -L localhost:gateway端口:localhost:服务器jupyter端口 username@fvcrcn01/02
- 第三个窗口登陆服务器运行jupyter
source activate env_name
jupyter notebook
PS: 在服务器开一个screen运行jupter, 则不需要第三步
PPS: 根据上述绕过跳板机直接登录服务器的方法,设置完config后连接jupyter一个窗口即可搞定,如下:
ssh -4 -N -L localhost:本地端口:localhost:服务器jupyter端口 remote-name
修改bash文件
- 在Linux上
vim ~/.bashrc
- 在mac上
vim ~/.bash_profile
滚轮跳出跳入快捷键
Ctrl+A+esc
tar压缩、解压缩命令
- 压缩
tar -zcvf 压缩文件名.tar.gz 被压缩文件名
- 解压缩
tar -zxvf 压缩文件名.tar.gz
删除名字为乱码 (如????) 这样的因传输错误产生的文件
ls -i #查看所有文件的inode 记录下乱码文件的icode如: 1357
find ./ -inum 1357 -exec rm {} \; #执行此步骤则可以删除文件
grep 多条件筛选
grep re file.txt | grep re2 | grep re3 # 多条件同时满足(and)
Know More
读日语文件时候出现乱码
nkf -w XX.txt
拷贝文件夹A到指定文件夹B下,名字仍为A
cp -ri A/ B/
于是创建了B/A/
scp传输文件
scp /source-path/source-file usrname@servername(proxy中自定义的名称):/target-path/target-file
根据PID查看进程使用者
ps -o user= -p PROCESS_PID
执行多条命令
; -> 顺序地独立执行各条命令, 彼此之间不关心是否失败, 所有命令都会执行
&& -> 顺序执行各条命令, 只有当前一个执行成功时候, 才执行后面的
|| -> 顺序执行各条命令, 只有当前面一个执行失败的时候, 才执行后面的
& -> 同时执行多条命令
| -> 前者命令输出作为后者命令输入
快速移动和删除文件
移动
mv dir1 dir2 (而不是mv dir1/* dir2/, 不过这样移动会在把dir1整体移到dir2得到dir2/dir1)
删除
mkdir empty_dir
rsync -a --delete empty_dir/ delete_directory/
把当前目录中所有文件移到上级目录
mv * ../
修改文件权限并进行删除操作
在用rm -rf删除文件的时候,遇到了permission deny的问题,查看文件发现是只具有可写权限而没有执行权限。
即通过ls -l看到文件是d-w-------,然后查资料发现有可写权限就能加上执行权限x,所以通过chmod给文件加上了只有拥有者可以rwx的权限如下
chmod u+rwx filename
之后再删除就顺利删除掉了。