【程序员基础篇】linux使用

linux

terminal

# 查看Ip
$ ifconfig en0
# 查找目录
$ find (查找范围) -name '查找关键字' -type d
# 获取http response
$ curl url –o file  读取文件内容到文件中
# 复制目录
$ cp -r
# 创建软链接
$ ln -s 源目标 目的目标
# 查看目录下的全部软连接
$ ls -l 目录
# 查看日志
$ tail -f access_log
# 解压缩: z(具备gzip属性);j(具备bzip2属性);c(压缩);x(解压)
$ tar -z/j c/xvf 文件
# -C dir参数的做用在于改变工做目录,其有效期为该命令中下一次-C dir参数以前。
$ tar -xzf XXX.tar.gz -C 
# 查看端口号
$ netstat -an | grep 8080
$ ps -ef | grep <进程名>
$ lsof -i 4tcp:<port>
$ kill -9 <pid>
# 在当前目录搜索带'energywise'行的文件
$ grep 'energywise' *           
# 查询命令
$ where expect
# 建立tmp目录和其子目录svntemp
$ mkdir -p /tmp/svntemp
# 使用ssh-keygen生成私钥和公钥: 参数 -t rsa 表示使用rsa算法进行加密
$ ssh-keygen -t rsa
# 输出执行命令结果到文件中
$ [command(svn diff)] [file's filename] > [file's filename].diff
# 放入到剪贴板
$ cat file | pbcopy 
# 建立目录并进入
$ mkdir [folder's name] && cd $_
# 不须要交互式命令
$ npm init -y

svn使用

在linux下完svn的都碰到过一个这样的问题,怎么一次性删除该目录以及子目录下下全部.svn文件呢?递归删除!
介绍两种方法linux

  • find和exec结合
    find . -name "*.svn" -print -exec rm -rf {} ;
    作一个简单说明
    -exec以后的rm -rf是命令以及参数,{}就是find的命令找到的结果集,;是必须输入的
  • find和xargs结合
    find . -name "*.svn" | xargs rm -rf

bash

  • 每次修改.bashrc后,使用source ~/.bashrc能够马上加载修改后的设置,使之生效

切换shell的命令

$ chsh -s /bin/zsh
# 通常使用oh_my_zsh
$ git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
$ cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

ssh无密码登陆

# 在Client机上生成公钥
$ ssh-keygen -t rsa
# 到Server机user用户的~目录下
# 进入.ssh目录下,检查是否有authorized_keys文件,若是没有,则建立一个名为authorized_keys的文件
# 在authorized_keys文件中,加入Client的机生成的公钥(即将Client机生成的id_rsa.pub文件的内容追加到authorized_keys文件中,注意:要单独占一行)

经过 ControlMaster 对 OpenSSH 进行加速,减小系统资源消耗

执行这个命令,成功登录服务器后,客户端与服务器创建了一个安全的 TCP/IP 链接。用户每执行一次命令,就会有一个新的链接创建,并一直维持链接直到用户退出。若是用户有大量的链接请求,就须要创建并维持大量的 TCP/IP 链接,消耗用户和主机的资源。git

OpenSSH 提供一个叫作 ControlMaster 的功能,能够有效缓解这一问题。在使用 ControlMaster 后,ssh 与服务器创建一个 Master 链接,以后的全部链接均可以重用这一通道,也就是说无论有多少访问请求,都只须要维护一个 TCP/IP 链接。github

如何开启 ControlMaster

配置

ControlMaster 默认是关闭的,修改~/.ssh/config文件:算法

Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p

其中,%r 是用户名,%h 是远程主机IP,%p 是端口,打开ControlMaster以后,一个ssh链接在后台运行,建立一个本地套接字( controlpath 就是这个套接字的名字),之后本地再有 ssh 须要链接到远端一样的主机的时候,直接使用这个已经建立好的 socket 文件进行链接,不用再建立链接了,同理,也不须要再进行用户身份验证。shell

建立Master

运行 ssh -M -N -f user@1.2.3.4 以后,就会在 ~/.ssh 目录下生成本地套接字文件:
srw------- 1 SYSADM Friends 0 Nov 3 01:23 master-user@1.2.3.4:22
其中 user 是个人用户名,1.2.3.4 是服务器的 IP
这个第一个运行的 ssh 即为 master ,其中 -f 表示在后台运行,这个 ssh 自己的做用就是在后台的一个守护进程,对链接上来的其它 slaver 的消息进行转发,转发给 sshd。npm

使用 Control Master 的好处

  • 减小系统资源消耗:
    能够有效地减小 ssh 所产生的 TCP/IP 的数量,从多个减小到一个,达到节省系统资源的目的。
  • 加快访问速度:
    普通非 control master 的访问方式,客户端都须要进行秘钥交换、用户受权等操做,而 Control Master 访问方式,重用以前的链接,不须要进行进行秘钥交换、用户受权等操做,减小了对内存和 CPU 资源的使用。
  • slave 无需再手动输入密码:因为 master 已经作了用户受权的操做,全部的 salve 不须要在进行密码的输入或公钥的验证。
相关文章
相关标签/搜索