Linux - HongkuanZhang/Technique-Notes GitHub Wiki

Linux查看和修改Path环境变量

通过ssh免密码登陆gateway

  1. 本地端生成密钥文件id_rsa和公钥文件id_rsa.pub
    ssh-keygen -t rsa -C “your_email”
  2. 检查生成的钥匙
    ls -al ~/.ssh
  3. 添加SSH Key
    ssh-add -K ~/.ssh/id_rsa
  4. 在研究室输入密码登陆服务器(研究室内网已经在gateway上,不需要登录gateway)
    ssh user_name@server_name
  5. 从本地将公钥放入服务器的路径
    scp ~/.ssh/id_rsa.pub [email protected]:/root/path/in/server
  6. 在服务器上把公钥内容写入authorized_keys
    cat id_rsa.pub >> ~/.ssh/authorized_keys
  7. 在本地终端输入以下命令即可免密码登陆gateway
    ssh [email protected]

通过创建ssh中的config文件来绕过跳板机直接登录服务器

在进行了上面的秘钥生成和把公钥放到远程跳板机的操作之后,我们每次登录服务器仍然不得不先登录跳板机再登录远端服务器,实际上我们可以通过修改ssh中的config文件来绕过跳板机直接登录服务器,方法如下

  1. ~/.ssh/中通过vim创建config文件
    cd ~/.ssh/
    vim config
  2. 然后在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
  1. 之后在本地端即可直接连接远端服务器: ssh remote-name

远程连接服务器Jupyter:

  • 如果在研究室则:
    ssh -4 -N -L localhost:本地端口:localhost:服务器jupyter端口 username@fvcrcn01/02
  • 如果在家里则:
  1. 打开窗口1, 连接本地与gateway端口
    ssh -4 -N -L localhost:本地端口:localhost:gateway端口 [email protected]
  2. 打开窗口2, 先登陆gateway
    ssh [email protected]
    然后连接gateway与服务器jupyter端口
    ssh -4 -N -L localhost:gateway端口:localhost:服务器jupyter端口 username@fvcrcn01/02
  3. 第三个窗口登陆服务器运行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

之后再删除就顺利删除掉了。