手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:Linux

阿里云内网,利用mysql-proxy访问腾讯云数据库

看到标题就知道怎么处理了。

1、在有公网IP的那台服务器上装上mysql-proxy (debian 自带的mysql-proxy好象有问题,还是自己配置比较好)
直接就用网上的配置即可,设置一个内网IP和端口,设置一个proxy-backend-addresses,设置成腾讯RDS服务器和端口
2、在内网那台机器上进行测试:
> php -a 
> $pdo = new PDO('mysql:host=内网IP;port:内网端口;dbname:远程数据库','远程的用户名','远程的密码');
不报错就过去了
 
就是这么简单!

Linux启动或禁止SSH用户及IP的登录

 众所周知,如果图方便,只要在/etc/password,将权限设置成/sbin/nologin就行了。但这样总还是有些不方便。比如执行命令的时候就只能类似【su git -s "/git/gogs/gogs web"】

于是就有个更新简单的办法,比如vim /etc/ssh/sshd_config,加入DenyUsers git。git就不能远程登录了

详细 参考 :http://blog.csdn.net/linghe301/article/details/8211305

sshd_config全文参考 :

XML/HTML代码
  1. SSHD_CONFIG(5)            OpenBSD Programmer's Manual           SSHD_CONFIG(5)  
  2.   
  3. 名称  
  4.      sshd_config - OpenSSH SSH 服务器守护进程配置文件  
  5.   
  6. 大纲  
  7.      /etc/ssh/sshd_config  
  8.   
  9. 描述  
  10.      sshd(8) 默认从 /etc/ssh/sshd_config 文件(或通过 -f 命令行选项指定的文件)读取配置信息。  
  11.      配置文件是由"指令 值"对组成的,每行一个。空行和以'#'开头的行都将被忽略。  
  12.      如果值中含有空白符或者其他特殊符号,那么可以通过在两边加上双引号(")进行界定。  
  13.      [注意]值是大小写敏感的,但指令是大小写无关的。  
  14.   
  15.      当前所有可以使用的配置指令如下:  
  16.   
  17.      AcceptEnv  
  18.              指定客户端发送的哪些环境变量将会被传递到会话环境中。[注意]只有SSH-2协议支持环境变量的传递。  
  19.              细节可以参考 ssh_config(5) 中的 SendEnv 配置指令。  
  20.              指令的值是空格分隔的变量名列表(其中可以使用'*'和'?'作为通配符)。也可以使用多个 AcceptEnv 达到同样的目的。  
  21.              需要注意的是,有些环境变量可能会被用于绕过禁止用户使用的环境变量。由于这个原因,该指令应当小心使用。  
  22.              默认是不传递任何环境变量。  
  23.   
  24.      AddressFamily  
  25.              指定 sshd(8) 应当使用哪种地址族。取值范围是:"any"(默认)、"inet"(仅IPv4)、"inet6"(仅IPv6)。  
  26.   
  27.      AllowGroups  
  28.              这个指令后面跟着一串用空格分隔的组名列表(其中可以使用"*"和"?"通配符)。默认允许所有组登录。  
  29.              如果使用了这个指令,那么将仅允许这些组中的成员登录,而拒绝其它所有组。  
  30.              这里的"组"是指"主组"(primary group),也就是/etc/passwd文件中指定的组。  
  31.              这里只允许使用组的名字而不允许使用GID。相关的 allow/deny 指令按照下列顺序处理:  
  32.              DenyUsers, AllowUsers, DenyGroups, AllowGroups  
  33.   
  34.      AllowTcpForwarding  
  35.              是否允许TCP转发,默认值为"yes"。  
  36.              禁止TCP转发并不能增强安全性,除非禁止了用户对shell的访问,因为用户可以安装他们自己的转发器。  
  37.   
  38.      AllowUsers  
  39.              这个指令后面跟着一串用空格分隔的用户名列表(其中可以使用"*"和"?"通配符)。默认允许所有用户登录。  
  40.              如果使用了这个指令,那么将仅允许这些用户登录,而拒绝其它所有用户。  
  41.              如果指定了 [email protected] 模式的用户,那么 USER 和 HOST 将同时被检查。  
  42.              这里只允许使用用户的名字而不允许使用UID。相关的 allow/deny 指令按照下列顺序处理:  
  43.              DenyUsers, AllowUsers, DenyGroups, AllowGroups  
  44.   
  45.      AuthorizedKeysFile  
  46.              存放该用户可以用来登录的 RSA/DSA 公钥。  
  47.              该指令中可以使用下列根据连接时的实际情况进行展开的符号:  
  48.              %% 表示'%'、%h 表示用户的主目录、%u 表示该用户的用户名。  
  49.              经过扩展之后的值必须要么是绝对路径,要么是相对于用户主目录的相对路径。  
  50.              默认值是".ssh/authorized_keys"。  
  51.   
  52.      Banner  
  53.              将这个指令指定的文件中的内容在用户进行认证前显示给远程用户。  
  54.              这个特性仅能用于SSH-2,默认什么内容也不显示。"none"表示禁用这个特性。  
  55.   
  56.      ChallengeResponseAuthentication  
  57.              是否允许质疑-应答(challenge-response)认证。默认值是"yes"。  
  58.              所有 login.conf(5) 中允许的认证方式都被支持。  
  59.   
  60.      Ciphers  
  61.              指定SSH-2允许使用的加密算法。多个算法之间使用逗号分隔。可以使用的算法如下:  
  62.              "aes128-cbc", "aes192-cbc", "aes256-cbc", "aes128-ctr", "aes192-ctr", "aes256-ctr",  
  63.              "3des-cbc", "arcfour128", "arcfour256", "arcfour", "blowfish-cbc", "cast128-cbc"  
  64.              默认值是可以使用上述所有算法。  
  65.   
  66.      ClientAliveCountMax  
  67.              sshd(8) 在未收到任何客户端回应前最多允许发送多少个"alive"消息。默认值是 3 。  
  68.              到达这个上限后,sshd(8) 将强制断开连接、关闭会话。  
  69.              需要注意的是,"alive"消息与 TCPKeepAlive 有很大差异。  
  70.              "alive"消息是通过加密连接发送的,因此不会被欺骗;而 TCPKeepAlive 却是可以被欺骗的。  
  71.              如果 ClientAliveInterval 被设为 15 并且将 ClientAliveCountMax 保持为默认值,  
  72.              那么无应答的客户端大约会在45秒后被强制断开。这个指令仅可以用于SSH-2协议。  
  73.   
  74.      ClientAliveInterval  
  75.              设置一个以秒记的时长,如果超过这么长时间没有收到客户端的任何数据,  
  76.              sshd(8) 将通过安全通道向客户端发送一个"alive"消息,并等候应答。  
  77.              默认值 0 表示不发送"alive"消息。这个选项仅对SSH-2有效。  
  78.   
  79.      Compression  
  80.              是否对通信数据进行加密,还是延迟到认证成功之后再对通信数据加密。  
  81.              可用值:"yes", "delayed"(默认), "no"。  
  82.   
  83.      DenyGroups  
  84.              这个指令后面跟着一串用空格分隔的组名列表(其中可以使用"*"和"?"通配符)。默认允许所有组登录。  
  85.              如果使用了这个指令,那么这些组中的成员将被拒绝登录。  
  86.              这里的"组"是指"主组"(primary group),也就是/etc/passwd文件中指定的组。  
  87.              这里只允许使用组的名字而不允许使用GID。相关的 allow/deny 指令按照下列顺序处理:  
  88.              DenyUsers, AllowUsers, DenyGroups, AllowGroups  
  89.   
  90.      DenyUsers  
  91.              这个指令后面跟着一串用空格分隔的用户名列表(其中可以使用"*"和"?"通配符)。默认允许所有用户登录。  
  92.              如果使用了这个指令,那么这些用户将被拒绝登录。  
  93.              如果指定了 [email protected] 模式的用户,那么 USER 和 HOST 将同时被检查。  
  94.              这里只允许使用用户的名字而不允许使用UID。相关的 allow/deny 指令按照下列顺序处理:  
  95.              DenyUsers, AllowUsers, DenyGroups, AllowGroups  
  96.   
  97.      ForceCommand  
  98.              强制执行这里指定的命令而忽略客户端提供的任何命令。这个命令将使用用户的登录shell执行(shell -c)。  
  99.              这可以应用于 shell 、命令、子系统的完成,通常用于 Match 块中。  
  100.              这个命令最初是在客户端通过 SSH_ORIGINAL_COMMAND 环境变量来支持的。  
  101.   
  102.      GatewayPorts  
  103.              是否允许远程主机连接本地的转发端口。默认值是"no"。  
  104.              sshd(8) 默认将远程端口转发绑定到loopback地址。这样将阻止其它远程主机连接到转发端口。  
  105.              GatewayPorts 指令可以让 sshd 将远程端口转发绑定到非loopback地址,这样就可以允许远程主机连接了。  
  106.              "no"表示仅允许本地连接,"yes"表示强制将远程端口转发绑定到统配地址(wildcard address),  
  107.              "clientspecified"表示允许客户端选择将远程端口转发绑定到哪个地址。  
  108.   
  109.      GSSAPIAuthentication  
  110.              是否允许使用基于 GSSAPI 的用户认证。默认值为"no"。仅用于SSH-2。  
  111.   
  112.      GSSAPICleanupCredentials  
  113.              是否在用户退出登录后自动销毁用户凭证缓存。默认值是"yes"。仅用于SSH-2。  
  114.   
  115.      HostbasedAuthentication  
  116.              这个指令与 RhostsRSAAuthentication 类似,但是仅可以用于SSH-2。推荐使用默认值"no"。  
  117.              推荐使用默认值"no"禁止这种不安全的认证方式。  
  118.   
  119.      HostbasedUsesNameFromPacketOnly  
  120.              在开启 HostbasedAuthentication 的情况下,  
  121.              指定服务器在使用 ~/.shosts ~/.rhosts /etc/hosts.equiv 进行远程主机名匹配时,是否进行反向域名查询。  
  122.              "yes"表示 sshd(8) 信任客户端提供的主机名而不进行反向查询。默认值是"no"。  
  123.   
  124.      HostKey  
  125.              主机私钥文件的位置。如果权限不对,sshd(8) 可能会拒绝启动。  
  126.              SSH-1默认是 /etc/ssh/ssh_host_key 。  
  127.              SSH-2默认是 /etc/ssh/ssh_host_rsa_key 和 /etc/ssh/ssh_host_dsa_key 。  
  128.              一台主机可以拥有多个不同的私钥。"rsa1"仅用于SSH-1,"dsa"和"rsa"仅用于SSH-2。  
  129.   
  130.      IgnoreRhosts  
  131.              是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程中忽略 .rhosts 和 .shosts 文件。  
  132.              不过 /etc/hosts.equiv 和 /etc/shosts.equiv 仍将被使用。推荐设为默认值"yes"。  
  133.   
  134.      IgnoreUserKnownHosts  
  135.              是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程中忽略用户的 ~/.ssh/known_hosts 文件。  
  136.              默认值是"no"。为了提高安全性,可以设为"yes"。  
  137.   
  138.      KerberosAuthentication  
  139.              是否要求用户为 PasswordAuthentication 提供的密码必须通过 Kerberos KDC 认证,也就是是否使用Kerberos认证。  
  140.              要使用Kerberos认证,服务器需要一个可以校验 KDC identity 的 Kerberos servtab 。默认值是"no"。  
  141.   
  142.      KerberosGetAFSToken  
  143.              如果使用了 AFS 并且该用户有一个 Kerberos 5 TGT,那么开启该指令后,  
  144.              将会在访问用户的家目录前尝试获取一个 AFS token 。默认为"no"。  
  145.   
  146.      KerberosOrLocalPasswd  
  147.              如果 Kerberos 密码认证失败,那么该密码还将要通过其它的认证机制(比如 /etc/passwd)。  
  148.              默认值为"yes"。  
  149.   
  150.      KerberosTicketCleanup  
  151.              是否在用户退出登录后自动销毁用户的 ticket 。默认值是"yes"。  
  152.   
  153.      KeyRegenerationInterval  
  154.              在SSH-1协议下,短命的服务器密钥将以此指令设置的时间为周期(秒),不断重新生成。  
  155.              这个机制可以尽量减小密钥丢失或者黑客攻击造成的损失。  
  156.              设为 0 表示永不重新生成,默认为 3600(秒)。  
  157.   
  158.      ListenAddress  
  159.              指定 sshd(8) 监听的网络地址,默认监听所有地址。可以使用下面的格式:  
  160.   
  161.                    ListenAddress host|IPv4_addr|IPv6_addr  
  162.                    ListenAddress host|IPv4_addr:port  
  163.                    ListenAddress [host|IPv6_addr]:port  
  164.   
  165.              如果未指定 port ,那么将使用 Port 指令的值。  
  166.              可以使用多个 ListenAddress 指令监听多个地址。  
  167.   
  168.      LoginGraceTime  
  169.              限制用户必须在指定的时限内认证成功,0 表示无限制。默认值是 120 秒。  
  170.   
  171.      LogLevel  
  172.              指定 sshd(8) 的日志等级(详细程度)。可用值如下:  
  173.              QUIET, FATAL, ERROR, INFO(默认), VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3  
  174.              DEBUG 与 DEBUG1 等价;DEBUG2 和 DEBUG3 则分别指定了更详细、更罗嗦的日志输出。  
  175.              比 DEBUG 更详细的日志可能会泄漏用户的敏感信息,因此反对使用。  
  176.   
  177.      MACs  
  178.              指定允许在SSH-2中使用哪些消息摘要算法来进行数据校验。  
  179.              可以使用逗号分隔的列表来指定允许使用多个算法。默认值(包含所有可以使用的算法)是:  
  180.              hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,hmac-sha1-96,hmac-md5-96  
  181.   
  182.      Match  
  183.              引入一个条件块。块的结尾标志是另一个 Match 指令或者文件结尾。  
  184.              如果 Match 行上指定的条件都满足,那么随后的指令将覆盖全局配置中的指令。  
  185.              Match 的值是一个或多个"条件-模式"对。可用的"条件"是:User, Group, Host, Address 。  
  186.              只有下列指令可以在 Match 块中使用:AllowTcpForwarding, Banner,  
  187.              ForceCommand, GatewayPorts, GSSApiAuthentication,  
  188.              KbdInteractiveAuthentication, KerberosAuthentication,  
  189.              PasswordAuthentication, PermitOpen, PermitRootLogin,  
  190.              RhostsRSAAuthentication, RSAAuthentication, X11DisplayOffset,  
  191.              X11Forwarding, X11UseLocalHost  
  192.   
  193.      MaxAuthTries  
  194.              指定每个连接最大允许的认证次数。默认值是 6 。  
  195.              如果失败认证的次数超过这个数值的一半,连接将被强制断开,且会生成额外的失败日志消息。  
  196.   
  197.      MaxStartups  
  198.              最大允许保持多少个未认证的连接。默认值是 10 。  
  199.              到达限制后,将不再接受新连接,除非先前的连接认证成功或超出 LoginGraceTime 的限制。  
  200.   
  201.      PasswordAuthentication  
  202.              是否允许使用基于密码的认证。默认为"yes"。  
  203.   
  204.      PermitEmptyPasswords  
  205.              是否允许密码为空的用户远程登录。默认为"no"。  
  206.   
  207.      PermitOpen  
  208.              指定TCP端口转发允许的目的地,可以使用空格分隔多个转发目标。默认允许所有转发请求。  
  209.              合法的指令格式如下:  
  210.                    PermitOpen host:port  
  211.                    PermitOpen IPv4_addr:port  
  212.                    PermitOpen [IPv6_addr]:port  
  213.              "any"可以用于移除所有限制并允许一切转发请求。  
  214.   
  215.      PermitRootLogin  
  216.              是否允许 root 登录。可用值如下:  
  217.              "yes"(默认) 表示允许。"no"表示禁止。  
  218.              "without-password"表示禁止使用密码认证登录。  
  219.              "forced-commands-only"表示只有在指定了 command 选项的情况下才允许使用公钥认证登录。  
  220.                                    同时其它认证方法全部被禁止。这个值常用于做远程备份之类的事情。  
  221.   
  222.      PermitTunnel  
  223.              是否允许 tun(4) 设备转发。可用值如下:  
  224.              "yes", "point-to-point"(layer 3), "ethernet"(layer 2), "no"(默认)。  
  225.              "yes"同时蕴含着"point-to-point"和"ethernet"。  
  226.   
  227.      PermitUserEnvironment  
  228.              指定是否允许 sshd(8) 处理 ~/.ssh/environment 以及 ~/.ssh/authorized_keys 中的 environment= 选项。  
  229.              默认值是"no"。如果设为"yes"可能会导致用户有机会使用某些机制(比如 LD_PRELOAD)绕过访问控制,造成安全漏洞。  
  230.   
  231.      PidFile  
  232.              指定在哪个文件中存放SSH守护进程的进程号,默认为 /var/run/sshd.pid 文件。  
  233.   
  234.      Port  
  235.              指定 sshd(8) 守护进程监听的端口号,默认为 22 。可以使用多条指令监听多个端口。  
  236.              默认将在本机的所有网络接口上监听,但是可以通过 ListenAddress 指定只在某个特定的接口上监听。  
  237.   
  238.      PrintLastLog  
  239.              指定 sshd(8) 是否在每一次交互式登录时打印最后一位用户的登录时间。默认值是"yes"。  
  240.   
  241.      PrintMotd  
  242.              指定 sshd(8) 是否在每一次交互式登录时打印 /etc/motd 文件的内容。默认值是"yes"。  
  243.   
  244.      Protocol  
  245.              指定 sshd(8) 支持的SSH协议的版本号。  
  246.              '1'和'2'表示仅仅支持SSH-1和SSH-2协议。"2,1"表示同时支持SSH-1和SSH-2协议。  
  247.   
  248.      PubkeyAuthentication  
  249.              是否允许公钥认证。仅可以用于SSH-2。默认值为"yes"。  
  250.   
  251.      RhostsRSAAuthentication  
  252.              是否使用强可信主机认证(通过检查远程主机名和关联的用户名进行认证)。仅用于SSH-1。  
  253.              这是通过在RSA认证成功后再检查 ~/.rhosts 或 /etc/hosts.equiv 进行认证的。  
  254.              出于安全考虑,建议使用默认值"no"。  
  255.   
  256.      RSAAuthentication  
  257.              是否允许使用纯 RSA 公钥认证。仅用于SSH-1。默认值是"yes"。  
  258.   
  259.      ServerKeyBits  
  260.              指定临时服务器密钥的长度。仅用于SSH-1。默认值是 768(位)。最小值是 512 。  
  261.   
  262.      StrictModes  
  263.              指定是否要求 sshd(8) 在接受连接请求前对用户主目录和相关的配置文件进行宿主和权限检查。  
  264.              强烈建议使用默认值"yes"来预防可能出现的低级错误。  
  265.   
  266.      Subsystem  
  267.              配置一个外部子系统(例如,一个文件传输守护进程)。仅用于SSH-2协议。  
  268.              值是一个子系统的名字和对应的命令行(含选项和参数)。比如"sft /bin/sftp-server"。  
  269.   
  270.      SyslogFacility  
  271.              指定 sshd(8) 将日志消息通过哪个日志子系统(facility)发送。有效值是:  
  272.              DAEMON, USER, AUTH(默认), LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7  
  273.   
  274.      TCPKeepAlive  
  275.              指定系统是否向客户端发送 TCP keepalive 消息。默认值是"yes"。  
  276.              这种消息可以检测到死连接、连接不当关闭、客户端崩溃等异常。  
  277.              可以设为"no"关闭这个特性。  
  278.   
  279.      UseDNS  
  280.              指定 sshd(8) 是否应该对远程主机名进行反向解析,以检查此主机名是否与其IP地址真实对应。默认值为"yes"。  
  281.   
  282.      UseLogin  
  283.              是否在交互式会话的登录过程中使用 login(1) 。默认值是"no"。  
  284.              如果开启此指令,那么 X11Forwarding 将会被禁止,因为 login(1) 不知道如何处理 xauth(1) cookies 。  
  285.              需要注意的是,login(1) 是禁止用于远程执行命令的。  
  286.              如果指定了 UsePrivilegeSeparation ,那么它将在认证完成后被禁用。  
  287.   
  288.      UsePrivilegeSeparation  
  289.              是否让 sshd(8) 通过创建非特权子进程处理接入请求的方法来进行权限分离。默认值是"yes"。  
  290.              认证成功后,将以该认证用户的身份创建另一个子进程。  
  291.              这样做的目的是为了防止通过有缺陷的子进程提升权限,从而使系统更加安全。  
  292.   
  293.      X11DisplayOffset  
  294.              指定 sshd(8) X11 转发的第一个可用的显示区(display)数字。默认值是 10 。  
  295.              这个可以用于防止 sshd 占用了真实的 X11 服务器显示区,从而发生混淆。  
  296.   
  297.      X11Forwarding  
  298.              是否允许进行 X11 转发。默认值是"no",设为"yes"表示允许。  
  299.              如果允许X11转发并且sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。  
  300.              那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为"no"。  
  301.              需要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。  
  302.              如果启用了 UseLogin ,那么X11转发将被自动禁止。  
  303.   
  304.      X11UseLocalhost  
  305.              sshd(8) 是否应当将X11转发服务器绑定到本地loopback地址。默认值是"yes"。  
  306.              sshd 默认将转发服务器绑定到本地loopback地址并将 DISPLAY 环境变量的主机名部分设为"localhost"。  
  307.              这可以防止远程主机连接到 proxy display 。不过某些老旧的X11客户端不能在此配置下正常工作。  
  308.              为了兼容这些老旧的X11客户端,你可以设为"no"。  
  309.   
  310.      XAuthLocation  
  311.              指定 xauth(1) 程序的绝对路径。默认值是 /usr/X11R6/bin/xauth  

 

买了台阿里云的内网(二)

 接上一篇:买了台阿里云的内网 的内容

上一篇中,我采用了nginx来转发http代理 的请求,但这里有个问题就是,如果你要请求的是https的数据,上面的配置就不方便了
 
于是祭出了ssh -D 大法,在内网里使用ssh -D xxxx 公网IP 。然后使用polipo来设置成http_proxy和https_proxy代理 
 
polipo安装很简单:apt-get install polipo
修改/etc/polipo/config,加入两行
 
socksParentProxy = localhost:上面的xxx
socksProxyType = socks5
 
再将~/.bashrc中的http_proxy改为 http_proxy=127.0.0.1:8123 (8123是polipo的默认端口),再加一条https_proxy,数据一样
 
只是ssh -D ,会连接上远程服务器,有点麻烦。总不能不关窗口吧?再祭出screen。于是都解决了
screen -S sshd
然后ctrl+a d 退出来就OK了
 
再试着请求wget https://getcomposer.org/installer,顺利下载并安装好
 
----EOF---
后记:如果你不请求https数据,那么用nginx就够了。
 

买了台阿里云的内网

几个小笔记,自己处理一下

10.171.x.x 是外网机器 的内网IP
10.29.x.x 是内网机器 的IP
 
#在外网机器上加入这些iptables
iptables -t nat --flush
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 10.29.x.x:22
iptables -t nat -A POSTROUTING -d 10.29.x.x -p tcp --dport 22 -j SNAT --to 10.171.x.x
iptables-save > /etc/iptables.up.rules
echo "pre-up iptables-restore < /etc/iptables.up.rules" > /etc/network/interface
--------上面这段是支持直接用2222端口连接入内网
 
在外网机器 的nginx加入以下配置,设置HTTP代理 
server {
    listen       9999 ;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
   location / {
       resolver 114.114.114.114;
       proxy_pass http://$http_host$request_uri;
    }
}
 
----------
在内网机器里加入:
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export http_proxy=http://10.171.212.249:9999
 
 
 
修改:/etc/apt/source.list 为 ustc.edut.cn的源
 
deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian stable main contrib non-free
deb http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free
 
# deb http://mirrors.ustc.edu.cn/debian stable-proposed-updates main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian stable-proposed-updates main contrib non-free
deb http://mirrors.ustc.edu.cn/dotdeb jessie all
deb-src http://mirrors.ustc.edu.cn/dotdeb jessie all
 
------------
添加了dotdeb的源后,需要处理一下(官网是https,其实也支持http)
wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | apt-key add -
 
--------
至此,全部完成。由于有http_proxy,现在curl/wget,默认都可以用代理 了。只是https的不行。先这样了
 
 

Tags: http_proxy

Linux查看CPU和内存使用情况

本文纯转载,别计较太多,有些命令都是常用的。象ps 之类的。真正想用的时候就ps --help之类的运行一下即可。

---start---原文来自:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html

在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要。在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况。运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次)。

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器

  可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令:
$ top -u oracle

内容解释:

  PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称

  操作实例:

  在命令行中输入 “top”

  即可启动 top

  top 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。

  第一部分 -- 最上部的 系统信息栏 :

  第一行(top):

    “00:11:04”为系统当前时刻;

    “3:35”为系统启动后到现在的运作时间;

    “2 users”为当前登录到系统的用户,更确切的说是登录到用户的终端数 -- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目;

    “load average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程;

  第二行(Tasks):

    “59 total”为当前系统进程总数;

    “1 running”为当前运行中的进程数;

    “58 sleeping”为当前处于等待状态中的进程数;

    “0 stoped”为被停止的系统进程数;

    “0 zombie”为被复原的进程数;

  第三行(Cpus):

    分别表示了 CPU 当前的使用率;

  第四行(Mem):

    分别表示了内存总量、当前使用量、空闲内存量、以及缓冲使用中的内存量;

  第五行(Swap):

    表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。

  第二部分 -- 中间部分的内部命令提示栏:

  top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下表:

  s

  - 改变画面更新频率

  l - 关闭或开启第一部分第一行 top 信息的表示

  t - 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示

  m - 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示

  N - 以 PID 的大小的顺序排列表示进程列表(第三部分后述)

  P - 以 CPU 占用率大小的顺序排列进程列表 (第三部分后述)

  M - 以内存占用率大小的顺序排列进程列表 (第三部分后述)

  h - 显示帮助

  n - 设置在进程列表所显示进程的数量

  q - 退出 top

  s -

  改变画面更新周期

  第三部分 -- 最下部分的进程列表栏:

  以 PID 区分的进程列表将根据所设定的画面更新时间定期的更新。通过 top 内部命令可以控制此处的显示方式

pmap

可以根据进程查看进程相关信息占用的内存情况,(进程号可以通过ps查看)如下所示:
$ pmap -d 5647

 

ps

  如下例所示:
$ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid'  其中rsz是是实际内存
$ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep oracle |  sort -nrk

  其中rsz为实际内存,上例实现按内存排序,由大到小

在Linux下查看内存我们一般用free命令:
[[email protected] tmp]# free
             total       used       free     shared    buffers     cached
Mem:       3266180    3250004      16176          0     110652    2668236
-/+ buffers/cache:     471116    2795064
Swap:      2048276      80160    1968116

下面是对这些数值的解释:
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
第四行就不多解释了。
区别:第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是16176KB,已用内存是3250004KB,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.
第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。
如上例:
2795064=16176+110652+2668236

接下来解释什么时候内存会被交换,以及按什么方交换。 当可用内存少于额定值的时候,就会开会进行交换。
如何看额定值:
cat /proc/meminfo

[[email protected] tmp]# cat /proc/meminfo
MemTotal:      3266180 kB
MemFree:         17456 kB
Buffers:        111328 kB
Cached:        2664024 kB
SwapCached:          0 kB
Active:         467236 kB
Inactive:      2644928 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:      3266180 kB
LowFree:         17456 kB
SwapTotal:     2048276 kB
SwapFree:      1968116 kB
Dirty:               8 kB
Writeback:           0 kB
Mapped:         345360 kB
Slab:           112344 kB
Committed_AS:   535292 kB
PageTables:       2340 kB
VmallocTotal: 536870911 kB
VmallocUsed:    272696 kB
VmallocChunk: 536598175 kB
HugePages_Total:     0
HugePages_Free:      0
Hugepagesize:     2048 kB

用free -m查看的结果:
[[email protected] tmp]# free -m 
             total       used       free     shared    buffers     cached
Mem:          3189       3173         16          0        107       2605
-/+ buffers/cache:        460       2729
Swap:         2000         78       1921


查看/proc/kcore文件的大小(内存镜像):
[[email protected] tmp]# ll -h /proc/kcore 
-r-------- 1 root root 4.1G Jun 12 12:04 /proc/kcore

备注:

占用内存的测量

测量一个进程占用了多少内存,linux为我们提供了一个很方便的方法,/proc目录为我们提供了所有的信息,实际上top等工具也通过这里来获取相应的信息。

/proc/meminfo 机器的内存使用信息

/proc/pid/maps pid为进程号,显示当前进程所占用的虚拟地址。

/proc/pid/statm 进程所占用的内存

[[email protected] ~]# cat /proc/self/statm

654 57 44 0 0 334 0

输出解释

CPU 以及CPU0。。。的每行的每个参数意思(以第一行为例)为:

参数 解释 /proc//status

Size (pages) 任务虚拟地址空间的大小 VmSize/4

Resident(pages) 应用程序正在使用的物理内存的大小 VmRSS/4

Shared(pages) 共享页数 0

Trs(pages) 程序所拥有的可执行虚拟内存的大小 VmExe/4

Lrs(pages) 被映像到任务的虚拟内存空间的库的大小 VmLib/4

Drs(pages) 程序数据段和用户态的栈的大小 (VmData+ VmStk )4

dt(pages) 04

查看机器可用内存

/proc/28248/>free

total used free shared buffers cached

Mem: 1023788 926400 97388 0 134668 503688

-/+ buffers/cache: 288044 735744

Swap: 1959920 89608 1870312

我们通过free命令查看机器空闲内存时,会发现free的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。

所以 空闲内存=free+buffers+cached=total-used

top命令 是Linux下常用的性能 分析工具 ,能够实时显示系统 中各个进程的资源占用状况,类似于Windows的任务管理 器。下面详细介绍它的使用方法。

top - 02:53:32 up 16 days,  6:34, 17 users,  load average: 0.24, 0.21, 0.24
Tasks: 481 total,   3 running, 474 sleeping,   0 stopped,   4 zombie
Cpu(s): 10.3%us,  1.8%sy,  0.0%ni, 86.6%id,  0.5%wa,  0.2%hi,  0.6%si,  0.0%st
Mem:   4042764k total,  4001096k used,    41668k free,   383536k buffers
Swap:  2104472k total,     7900k used,  2096572k free,  1557040k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
32497 jacky     20   0  669m 222m  31m R   10  5.6       29:27.62 firefox
 4788 yiuwing   20   0  257m  18m  13m S    5  0.5          5:42.44 konsole
 5657 Liuxiaof  20   0  585m 159m  30m S    4  4.0          5:25.06 firefox
 4455 xiefc      20   0  542m  124m  30m R    4  3.1         7:23.03 firefox
 6188 Liuxiaof  20   0  191m   17m  13m S    4  0.5          0:01.16 konsole
 


统计信息区前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime  命令的执行结果。其内容如下:

01:06:48  当前时间  
up 1:22  系统运行 时间,格式为时:分  
1 user  当前登录用户 数  
load average: 0.06, 0.60, 0.48  系统负载 ,即任务队列的平均长度。
            三个数值分别为  1分钟、5分钟、15分钟前到现在的平均值。 


第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

Tasks: 29 total  进程总数  
1 running  正在运行的进程数  
28 sleeping  睡眠的进程数  
0 stopped  停止的进程数  
0 zombie  僵尸进程数  
Cpu(s): 0.3% us  用户空间占用CPU百分比  
1.0% sy  内核 空间占用CPU百分比  
0.0% ni  用户进程空间内改变过优先级的进程占用CPU百分比  
98.7% id  空闲CPU百分比  
0.0% wa  等待输入输出的CPU时间百分比  
0.0% hi     
0.0% si    


最后两行为内存 信息。内容如下:

Mem: 191272k total  物理内存总量  
173656k used  使用的物理内存总量  
17616k free  空闲内存总量  
22052k buffers  用作内核缓存 的内存量  
Swap: 192772k total  交换区总量  
0k used  使用的交换区总量  
192772k free  空闲交换区总量  
123988k cached  缓冲的交换区总量。
            内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
            该数值即为这些内容已存在于内存中 的交换区的大小。
            相应的内存再次被换出时可不必再对交换区写入。 


进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

序号  列名  含义  
a  PID  进程id  
b  PPID  父进程id  
c  RUSER  Real user name  
d  UID  进程所有者的用户id  
e  USER  进程所有者的用户名  
f  GROUP  进程所有者的组名  
g  TTY  启动进程的终端名。不是从终端启动的进程则显示为 ?  
h  PR  优先级  
i  NI  nice值。负值表示高优先级,正值表示低优先级  
j  P  最后使用的CPU,仅在多CPU环境 下有意义  
k  %CPU  上次更新到现在的CPU时间占用百分比  
l  TIME  进程使用的CPU时间总计,单位秒  
m  TIME+  进程使用的CPU时间总计,单位1/100秒  
n  %MEM  进程使用的物理内存 百分比  
o  VIRT  进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES  
p  SWAP  进程使用的虚拟内存中,被换出的大小,单位kb。  
q  RES  进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA  
r  CODE  可执行代码占用的物理 内存大小,单位kb  
s  DATA  可执行代码以外的部分(数据 段+栈)占用的物理 内存大小,单位kb  
t  SHR  共享内存大小,单位kb  
u  nFLT  页面错误次数  
v  nDRT  最后一次写入到现在,被修改过的页面数。  
w  S  进程状态。
            D =不可中断的睡眠状态
            R =运行
            S =睡眠
            T =跟踪/停止
            Z =僵尸进程  
x  COMMAND  命令名/命令行  
y  WCHAN  若该进程在睡眠,则显示睡眠中的系统函数名  
z  Flags  任务标志,参考 sched.h 


默认情况下仅显示比较重要的  PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND  列。可以通过下面的快捷键来更改显示内容。
更改显示内容通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z  即可显示或隐藏对应的列,最后按回车键确定。
按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z  可以将相应的列向左移动。最后按回车键确定。
按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的  R 键可以将当前的排序倒转。

 

==============================

top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。
<空格>:立刻刷新。
P:根据CPU使用大小进行排序。
T:根据时间、累计时间排序。
q:退出top命令。
m:切换显示内存信息。
t:切换显示进程和CPU状态信息。
c:切换显示命令名称和完整命令行。
M:根据使用内存大小进行排序。
W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

可以看到,top命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要。但是,它的缺点是会消耗很多系统资源。

 应用实例 
使用top命令可以监视指定用户,缺省情况是监视所有用户的进程。如果想查看指定用户的情况,在终端中按“U”键,然后输入用户名,系统就会切换为指定用户的进程运行界面。
a.作用
free命令用来显示内存的使用情况,使用权限是所有用户。
b.格式
free [-b -k -m] [-o] [-s delay] [-t] [-V]
c.主要参数
-b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。
-s delay:显示每隔多少秒数来显示一次内存使用情况。
-t:显示内存总和列。
-o:不显示缓冲区调节列。
d.应用实例
free命令是用来查看内存使用情况的主要命令。和top命令相比,它的优点是使用简单,并且只占用很少的系统资源。通过-S参数可以使用free命令不间断地监视有多少内存在使用,这样可以把它当作一个方便实时监控器。
#free -b -s5
使用这个命令后终端会连续不断地报告内存使用情况(以字节为单位),每5秒更新一次。

 

参考 http://www.cnblogs.com/gaojun/p/3406096.html