【程序员基础篇】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文件呢?递归删除!
介绍两种方法

  • 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 连接,消耗用户和主机的资源。

OpenSSH 提供一个叫做 ControlMaster 的功能,可以有效缓解这一问题。在使用 ControlMaster 后,ssh 与服务器建立一个 Master 连接,之后的所有连接都可以重用这一通道,也就是说不管有多少访问请求,都只需要维护一个 TCP/IP 连接。

如何开启 ControlMaster

配置

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

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

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

创建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。

使用 Control Master 的好处

  • 减少系统资源消耗:
    可以有效地减少 ssh 所产生的 TCP/IP 的数量,从多个减少到一个,达到节省系统资源的目的。
  • 加快访问速度:
    普通非 control master 的访问方式,客户端都需要进行秘钥交换、用户授权等操作,而 Control Master 访问方式,重用之前的连接,不需要进行进行秘钥交换、用户授权等操作,减少了对内存和 CPU 资源的使用。
  • slave 无需再手动输入密码:由于 master 已经做了用户授权的操作,所有的 salve 不需要在进行密码的输入或公钥的验证。
    原文作者:luckyyulin
    原文地址: https://segmentfault.com/a/1190000013501878
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞