ssh转发代理

原来这么简单啊= =目前只在Mac下试过,真的好简单!

首先本地添加自动代理地址:

系统偏好设置->网络->高级->代理->自动代理配置

在url栏中添加代理配置。然后打开终端

ssh -D 转发端口 -p 登陆端口 -g user@hostname

输入密码之后就可以了Orz。

另外ssh命令的几个参数:

-D 绑定本地端口
-p 远程服务器的端口
-q Quiet mode,ssh的诊断信息以及警告等信息被抑制
-T 禁用伪终端分配
-f 该选项是后台执行的ssh在规定时间(10秒)内进行连接,如果超过该时间ssh将退出。
-n 重定向标准输入到/dev/null中,为了防止从标准输入中读入。ssh进行后台执行时必须使用该参数。该选项对于要求输入密码不起作用
-N 不执行远程命令

Linux系统目录简单介绍

  • / - 根目录。
  • /root - 系统管理员(root user)的目录。 /home - 存放登陆用户的数据。
  • /boot - 包括内核和其它系统启动期间使用的文件。例如: kernel、initrd;时常是一个单独的分区。 /bin - 需要在单用户模式可用的必要命令(可执行文件);面向所有用户,例如: cat、 ls、 cp。目录 /usr/bin 也被用来贮存用户命令。 /sbin - 许多系统命令(例如 shutdown)的贮存位置。必要的系统二进制文件,例如: init、 ip、 mount。目录 /usr/sbin 中也包括了许多系统命令。 /dev - 存放与设备(包括外设)有关的文件。例如:, /dev/null. /etc - 存放了系统范围内的配置文件。
    • /etc/opt /opt/的配置文件
    • /etc/X11 X Window系统(版本11)的配置文件
    • /etc/sgml SGML的配置文件
    • /etc/xml XML的配置文件
  • /lib - /bin/ 和 /sbin/中二进制文件必要的库文件。/lib64 顾名思义是包含64位的库文件。
  • lost+found - 被 fsck 用来放置零散文件(没有名称的文件)。
  • /mnt — 该目录中通常包括系统引导后被挂载的文件系统的挂载点。
  • /media - 可移除媒体(如CD-ROM)的挂载点 (在FHS-2.3中出现)。 /opt - 主要存放那些可选的程序。主要被第三方开发者用来简易地安装和卸装他们的软件包。
  • proc — 一个虚拟的文件系统(不是实际贮存在磁盘上的),它包括被某些程序使用的系统信息。
  • /srv - 站点的具体数据,由系统提供。

    /tmp - 临时目录。有些linux系统会定期自动对这个目录进行清理。/tmp 给予所有系统用户读写权。 /usr - 你可以找到那些不适合放在/bin或/etc目录下的额外的工具。(unix system resource的缩写),包含绝大多数的(多)用户工具和应用程序。

    • /usr/bin 贮存非必要可执行文件 (在单用户模式中不需要) /usr/sbin 非必要的系统二进制文件,例如:大量网络服务的守护进程。 /usr/share 存放一些共享的数据,比如音乐文件或者图标等等; /usr/src/ 源代码,例如:内核源代码及其头文件。 /usr/lib 用于存放那些不能直接运行的,但却是许多程序运行所必需的一些函数库文件。 /usr/local 这里主要存放那些手动安装的软件,即不是通过apt-get安装的软件。它和/usr目录具有相类似的目录结构。用户自己写得程序放在这里会比较好。(便于管理) /usr/media 有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘(包括U盘)、CD/DVD驱动器等等。
  • /var — 用于贮存variable(或不断改变的)文件,例如日志,脱机文件和临时电子邮件文件。有时是一个单独的分区。
    • /var/cache 应用程序缓存数据。这些数据是在本地生成的一个耗时的I/O或计算结果。应用程序必须能够再生或恢复数据。缓存的文件可以被删除而不导致数据丢失。
    • /var/lib 状态信息。 由程序在运行时维护的持久性数据。 例如:数据库、包装的系统元数据等。
    • /var/lock 锁文件,一类跟踪当前使用中资源的文件。
    • /var/log 日志文件,包含大量日志文件。
    • /var/mail 用户的电子邮箱。
    • /var/run 自最后一次启动以来运行中的系统的信息,例如:当前登录的用户和运行中的守护进程。现已经被/run代替[13]。
    • /var/spool 等待处理的任务的脱机文件,例如:打印队列和未读的邮件。
    • /var/spool/mail 用户的邮箱(不鼓励的存储位置)
    • /var/tmp 在系统重启过程中可以保留的临时文件。
  • sys - 现在的Linux发行版包含一个/sys目录作为虚拟文件系统(sysfs,类似于 /proc,一个procfs),它存储且允许修改连接到系统的设备,然而许多传统UNIX和类Unix操作系统使用/sys作为内核代码树的符号链接。

Q:/lib/usr/lib/usr/local/lib的区别。
A: 简单说,/lib是内核级的,/usr/lib是系统级的,/usr/local/lib是用户级的.

参考链接:


支撑起整个互联网时代的 7 款开源软件

原文来自 oschina-开源中国社区

开源软件现在成为整个互联网时代的支撑技术,你可能已经无法离开由开源软件构建起来的网络世界了。下面我们就来看看一些最重要的开源技术。

为互联网而生的操作系统linux

Linux是一款免费的操作系统,诞生于1991年,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。

它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。

Linux可以说是已经无处不在,像Android手机就是以Linux为基础开发的,世界上大多的超级计算机也都采用的Linux系统,大多数的数据中心使用Linux作为其支撑操作系统。谷歌、百度、淘宝等都通过Linuxt提供了我们每天用的互联网服务。Linux在航空控制系统中也扮演着重要角色。

加密互联网的安全协议OpenSSL

OpenSSL是套开放源代码的软件库包,实现了SSL与TLS协议。OpenSSL可以说是一个基于密码学的安全开发包,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。

也可以说OpenSSL是网络通信提供安全及数据完整性的一种安全协议,SSL可以在Internet上提供秘密性传输,能使用户/服务器应用之间的通信不被攻击者窃听。OpenSSL被网银、在线支付、电商网站、门户网站、电子邮件等重要网站广泛使用。

去年OpenSSL爆出安全漏洞,因为其应用如此之广,该漏洞爆出让整个互联网都为之震颤。

互联网的记忆——MySQL

MySQL是一个开源的小型的数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被Sun公司收购。2009年,甲骨文公司(Oracle)收购Sun公司,MySQL成为Oracle旗下产品。

很多信息都是存在数据库里面的,很多工程师在开发一些的小型项目时都会采用这个MySQL数据库。MySQL为C、C++、JAVA、PHP等多重编程语言提供了API接口。而且支持windows、Mac、Linux等多种系统。这种广泛的支持使其得到更多开发者的青睐,MySQL是开发者需要掌握的数据库之一。

Mysql最初为小型应用而开发,但现在的Mysql已经不是一个小型数据库了。基本上所有的互联网公司都会使用这个数据库系统,一些金融交易也会采用Mysql作为数据库引擎。Mysql通过相应的调优既可以支撑大规模的访问,又可以保证数据安全性,已经成为威胁传统商业数据库系统的重要力量。

万能开发工具Eclipse

是一个开放源代码的、基于Java的可扩展开发平台。Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、Rational Software、Red Hat及Sybase等。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。很多Java编程软件都是在Eclipse平台开发的,还有包括Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。

Eclipse并不是一个直接服务于消费者的产品,它更像一个工匠手中万用工具,用Eclipse开发者可以打造出各种充满创造性的服务来满足最终用户的需求。

互联网的门卫Apache

Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,也是最流行的Web服务器端软件之一,市场占有率达60%左右。它快速、可靠并且可通过简单的API扩展,它可以和各种解释器配合使用,包括PHP/Perl/Python等。

Apache就像一个负责的门卫,管理着服务器数据的进出。每当你在你的地址栏里输入http://XXX.com的时候,在遥远的远端,很有可能正是一台跑着Apache的服务器,将你需要的信息传输给浏览器。

大数据的心脏Hadoop

是一个能够对大量数据进行分布式处理的软件框架,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。Hadoop 一直帮助解决各种问题,包括超大型数据集的排序和大文件的搜索。它还是各种搜索引擎的核心,比如 Amazon 的 A9 和用于查找酒信息的 Able Grape 垂直搜索引擎。阿里巴巴集团在商品推荐、用户行为分析、信用计算领域也都有hadoop的应用。

在“大数据”已经成为潮流的当下,Hadoop已经成为最主要的一项技术。可以毫不夸张的说,没有Hadoop,就没有大多数的大数据应用。可以说对一个不知道Hadoop的程序员而言,你已经out了。

互联网的“排版引擎”WebKit

说是浏览器内核,其实“排版引擎”更容易理解一些。通过服务器传输给浏览器的信息只是一串乱糟糟的文本。要看到我们平时看到精美的网友,需要浏览器内核对这些文本进行解析,将枯燥的描述“画”成美丽的浏览界面。

是一个开源的浏览器引擎,与之相应的引擎有Gecko(Mozilla Firefox 等使用的排版引擎)和Trident(也称为MSHTML,IE使用的排版引擎)。根据StatCounter的浏览器市场份额调查,于2012年11月,Webkit市占超过了40%,它已经成为拥有最大市场份额的排版引擎,超越了Internet Explorer所使用的Trident及Firefox所使用的Gecko引擎,并且WebKit份额正在逐年增加。

目前几乎所有网站和网银已经逐渐支持WebKit。WebKit内核在手机上的应用也十分广泛,例如苹果的Safari、谷歌的Chrome浏览器都是基于这个框架来开发的。

小结

很多人可能尚未意识到,我们使用的电脑中运行有开源软件,手机中运行有开源软件,家里的电视也运行有开源软件,甚至小小的数码产品中也运行有开源软件,尤其是互联网服务器端软件,几乎全部是开源软件。毫不夸张地说,开源软件已经渗透到了我们日常生活的方方面面。


Linux命令之du & df

du命令是示每个文件和目录的磁盘使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的.

命令格式: du [选项][文件]

命令参数:
	-a或-all  显示目录中个别文件的大小。   
	-b或-bytes  显示目录或文件大小时,以byte为单位。   
	-c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。 
	-k或--kilobytes  以KB(1024bytes)为单位输出。
	-m或--megabytes  以MB为单位输出。   
	-s或--summarize  仅显示总计,只列出最后加总的值。
	-h或--human-readable  以K,M,G为单位,提高信息的可读性。
	-x或--one-file-xystem  以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。 
	-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。   
	-S或--separate-dirs   显示个别目录的大小时,并不含其子目录的大小。 
	-X<文件>或--exclude-from=<文件>  在<文件>指定目录或文件。   
	--exclude=<目录或文件>         略过指定的目录或文件。    
	-D或--dereference-args   显示指定符号链接的源文件大小。   
	-H或--si  与-h参数相同,但是K,M,G是以1000为换算单位。   
	-l或--count-links   重复计算硬件链接的文件。

其实今天用到这个命令是因为需要查看文件夹里的文件大小。结合du命令最后得到的命令如下,获得占空间最大的十个文件或文件夹:

du --max-depth=1 -ah | sort -hr | head

​ linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况。默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示

命令格式:	df [选项] [文件]
命令参数:
必要参数:
	-a 全部文件系统列表
	-h 方便阅读方式显示
	-H 等于“-h”,但是计算式,1K=1000,而不是1K=1024
	-i 显示inode信息
	-k 区块为1024字节
	-l 只显示本地文件系统
	-m 区块为1048576字节
	--no-sync 忽略 sync 命令
	-P 输出格式为POSIX
	--sync 在取得磁盘信息前,先执行sync命令
	-T 文件系统类型

选择参数:
	--block-size=<区块大小> 指定区块大小
	-t<文件系统类型> 只显示选定文件系统的磁盘信息
	-x<文件系统类型> 不显示选定文件系统的磁盘信息
	--help 显示帮助信息
	--version 显示版本信息

linux命令之监控命令

简单记录一下Linux自带的一些系统状态监控的命令。关于ps和lsof的命令太过复杂,详细用法有空再记录。

1. 用户

  • w 不但可以显示有谁登录到系统,还可以显示出这些用户当前正在进行的工作,并且统计数据相对who命令来说更加详细和科学。

相似命令:who/whoami/last/logname/tty/

2. 内存

  • free 显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。

3. 磁盘吞吐

  • iostat 主要用于监控系统设备的IO负载情况。

4. 进程

  • top 显示,管理执行中的程序。并通过它所提供的互动式界面,用热键加以管理。
  • ps 报告程序状况。
  • pstree -a 以树状图显示进程间的关系

5. 网络

  • netstat 显示网络连接、路由表和网络接口信息。

    netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

6. 系统版本

  • lsb_release -a 获取系统的版本信息。

      No LSB modules are available.
      Distributor ID: Debian
      Description:    Debian GNU/Linux 7.8 (wheezy)
      Release:        7.8
      Codename:       wheezy
    

7. 统计

  • vmstat 展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。
  • swatch 系统监控程序。可用来监控系统记录文件,并在发现特定的事件时,执行指定的动作。
  • lsof 系统级的监控、诊断工具。

    linux 下 “一切皆文件”, 包括但不限于 pipes, sockets, directories, devices, 等等。因此,使用 lsof,你可以获取任何被打开文件的各种信息。

附录

语  法:w [-fhlsuV][用户名称]

参  数: 
  -f  开启或关闭显示用户从何处登入系统。 
  -h  不显示各栏位的标题信息列。 
  -l  使用详细格式列表,此为预设值。 
  -s  使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。 
  -u  忽略执行程序的名称,以及该程序耗费CPU时间的信息。 
  -V  显示版本信息。

语  法: free [-bkmotV][-s <间隔秒数>]

参  数: 
	-b  以Byte为单位显示内存使用情况。 
	-k  以KB为单位显示内存使用情况。 
	-m  以MB为单位显示内存使用情况。 
	-o  不显示缓冲区调节列。 
	-s&lt;间隔秒数&gt;  持续观察内存使用状况。 
	-t  显示内存总和列。 
	-V  显示版本信息。

语  法: iostat [-c|-d][-k|-m][-t][-V][-x][device[…]|ALL][-p[device|ALL]][interval[count]]

参  数:
	-c 仅显示CPU统计信息.与-d选项互斥.
	-d 仅显示磁盘统计信息.与-c选项互斥.
	-k 以K为单位显示每秒的磁盘请求数,默认单位块.
	-p device | ALL
	  与-x选项互斥,用于显示块设备及系统分区的统计信息.也可以在-p后指定一个设备名,如:
	  # iostat -p hda
	  或显示所有设备
	  # iostat -p ALL
	-t    在输出数据时,打印搜集数据的时间.
	-V    打印版本号和帮助信息.
	-x    输出扩展信息.

语  法:top [bciqsS][d <间隔秒数>][n <执行次数>]

参  数: 
	b  使用批处理模式。 
	c  列出程序时,显示每个程序的完整指令,包括指令名称,路径和参数等相关信息。 
	d<间隔秒数>  设置top监控程序执行状况的间隔时间,单位以秒计算。 
	i  执行top指令时,忽略闲置或是已成为Zombie的程序。 
	n<执行次数>  设置监控信息的更新次数。 
	q  持续监控程序执行的状况。 
	s  使用保密模式,消除互动模式下的潜在危机。 
	S  使用累计模式,其效果类似ps指令的-S参数。

语  法:netstat [-acCeFghilMnNoprstuvVwx] [-A<网络类型>][--ip]

参  数:
	-a (all)显示所有选项,默认不显示LISTEN相关
	-t (tcp)仅显示tcp相关选项
	-u (udp)仅显示udp相关选项
	-n 拒绝显示别名,能显示数字的全部转化成数字。
	-l 仅列出有在 Listen (监听) 的服務状态
	
	-p 显示建立相关链接的程序名
	-r 显示路由信息,路由表
	-e 显示扩展信息,例如uid等
	-s 按各个协议进行统计
	-c 每隔一个固定时间,执行该netstat命令。

提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到 <span id="_vmstat"></span>

语  法:vmstat [-V] [-n] [delay [count]]

参  数:
  -V表示打印出版本信息;
  -n表示在周期性循环输出时,输出的头部信息仅显示一次;
  delay是两次输出之间的延迟时间;
  count是指按照这个时间间隔统计的次数。

语  法:swatch [-A <分隔字符>][-c <设置文件>][-f <记录文件>][-I <分隔字符>][-P <分隔字符>][-r <时间>][-t <记录文件>]

补充说明:swatchswatch所监控的事件以及对应事件的动作都存放在 swatch的配置文件中。预设的配置文件为拥护根目录下的.swatchrc。然而在Red Hat Linux的预设用户根目录下并没有.swatchrc配置文件,您可将/usr/doc/swatch- 2.2/config_files/swatchrc.personal文件复制到用户根目录下的.swatchrc,然后修改.swatchrc所要监控的事件及执行的动作。

参  数: 
	-A<分隔字符>  预设配置文件中,动作的分隔字符,预设为逗号。 
	-c设置文件>  指定配置文件,而不使用预设的配置文件。 
	-f记录文件>  检查指定的记录文件,检查完毕后不会继续监控该记录文件。 
	-I分隔字符>  指定输入记录的分隔字符,预设为换行字符。 
	-P分隔字符>  指定配置文件中,事件的分隔字符,预设为逗号。 
	-r时间>  在指定的时间重新启动。 

vim的鼠标模式

好久之前就发现这个问题了——vim里没有办法右键复制!也不知道怎么想的,每次复制都是退出一遍,cat之后再复制。今天被基友提醒之后说是鼠标模式的原因!赶忙上网找了啥叫鼠标模式Orz~~~~vim的小技巧还真是多.

鼠标事件有两种处理方式,程序处理和 X 处理。如果 X 负责处理,则是左键选择,中间粘贴。在vim中设置鼠标模式后,要切换给X负责处理,有两个方法:

  1. 按住shift(alt)键,然后选择,此时由 X 处理该选择,copy 选项就 enable 了。如果放掉shift(alt)键,则由 vim处理该选择。
  2. 设置 set mouse= (就是说清空),在这次vim退出之前,永远不再干涉鼠标选择,永远把处理权交给X,这个时候鼠标就处于无模式编辑状态,当然也能用鼠标来切换vim里面的tab窗口了,vim中的编辑光标也不会跟随鼠标了。

我自己的解决的话,就是将之前设定的set mouse=a修改成set mouse=n,也就是只在普通模式下开启鼠标模式。如果需要复制文本的话,就要按v进入可视模式(反正可视模式基本上也是用来复制粘贴删除的= =)。

但是大概更加常用的还是用按下alt键的办法复制吧。

附 鼠标的模式:

n 普通模式
v 可视模式
i 插入模式
c 命令行模式
h 编辑帮助文件时,所有前面的模式
a 所有前面的模式
r |hit-enter| 和 |more-prompt| 提示时
A 可视模式的自动选择