Year: 2017

  • docker–镜像的删除 Untagged 和 Deleted 的区别

    # docker rmi ubuntu:14.04 Untagged: ubuntu:14.04 Untagged: ubuntu@sha256:b2a55128abd84a99436157c2fc759cf0a525c273722460e6f8f9630747dfe7e8 Deleted: sha256:2ff3b426bbaafba63cae165e8f6a4955a24a53cdf6d25cce00353e97cda3df71 Deleted: sha256:674ac1ba904977cbee239556b7e9ec92addb590d0ed9689bcf9c4a8afd967927 Deleted: sha256:b4fb204519c474988eb7f16b97f9ce6e2fb0f6deb273d64a01b9eec8f3096921 Deleted: sha256:d264f10c88539212472e700e8abbd78ec2c73b02c59587bc76c22963b4214628 Deleted: sha256:e6b73004f2f4cc27ec61a3593512c3d1e0dad911e509ceef8526764f4f6aac62 Deleted: sha256:a8e78858b03ba02c3df71d555f90057f890495aabc86e7a39396c68c87ed5ff2 Untagged 和 Deleted 如果观察上面这几个命令的运行输出信息的话,你会注意到删除行为分为两类,一类是 Untagged,另一类是 Deleted。我们之前介绍过,镜像的唯一标识是其 ID 和摘要,而一个镜像可以有多个标签。 因此当我们使用上面命令删除镜像的时候,实际上是在要求删除某个标签的镜像。所以首先需要做的是将满足我们要求的所有镜像标签都取消,这就是我们看到的 Untagged 的信息。因为一个镜像可以对应多个标签,因此当我们删除了所指定的标签后,可能还有别的标签指向了这个镜像,如果是这种情况,那么 Delete 行为就不会发生。所以并非所有的 docker rmi 都会产生删除镜像的行为,有可能仅仅是取消了某个标签而已。 当该镜像所有的标签都被取消了,该镜像很可能会失去了存在的意义,因此会触发删除行为。镜像是多层存储结构,因此在删除的时候也是从上层向基础层方向依次进行判断删除。镜像的多层结构让镜像复用变动非常容易,因此很有可能某个其它镜像正依赖于当前镜像的某一层。这种情况,依旧不会触发删除该层的行为。直到没有任何层依赖当前层时,才会真实的删除当前层。这就是为什么,有时候会奇怪,为什么明明没有别的标签指向这个镜像,但是它还是存在的原因,也是为什么有时候会发现所删除的层数和自己 docker pull 看到的层数不一样的源。 除了镜像依赖以外,还需要注意的是容器对镜像的依赖。如果有用这个镜像启动的容器存在(即使容器没有运行),那么同样不可以删除这个镜像。之前讲过,容器是以镜像为基础,再加一层容器存储层,组成这样的多层存储结构去运行的。因此该镜像如果被这个容器所依赖的,那么删除必然会导致故障。如果这些容器是不需要的,应该先将它们删除,然后再来删除镜像。 用 docker images 命令来配合 像其它可以承接多个实体的命令一样,可以使用 docker images -q 来配合使用 docker rmi,这样可以成批的删除希望删除的镜像。比如之前我们介绍过的,删除虚悬镜像的指令是: $ docker rmi…

  • docker–建议下载bashrc_docker 脚本,利用docker-pid和docker-enter命令进入容器

    建议下载 .bashrc_docker,并将内容放到 .bashrc 中。 这个文件中定义了很多方便使用 Docker 的命令,例如 docker-pid 可以获取某个容器的 PID;而 docker-enter 可以进入容器或直接在容器内执行命令。 # wget -P ~ https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker; –2017-05-19 16:04:09– https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker Resolving github.com (github.com)… 192.30.255.113, 192.30.255.112 Connecting to github.com (github.com)|192.30.255.113|:443… connected. HTTP request sent, awaiting response… 302 Found Location: https://raw.githubusercontent.com/yeasy/docker_practice/master/_local/.bashrc_docker [following] –2017-05-19 16:04:11– https://raw.githubusercontent.com/yeasy/docker_practice/master/_local/.bashrc_docker Resolving raw.githubusercontent.com (raw.githubusercontent.com)… 151.101.88.133 Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.88.133|:443… connected. HTTP request sent,…

  • docker--通过attach命令进入容器

    docker–通过attach命令进入容器

    docker–通过attach命令进入容器

  • Docker–使用 Dockerfile 定制nginx镜像

    # docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx v2 3e3413f5d526 3 hours ago 109MB ubuntu 14.04 2ff3b426bbaa 3 days ago 188MB nginx latest 3448f27c273f 8 days ago 109MB # cat Dockerfile FROM nginx RUN echo ‘<h1>Hello, Docker!1111111111</h1>’ > /usr/share/nginx/html/index.html # docker build -t nginx:v3 . Sending build context to Docker daemon 2.048kB Step…

  • docker–容器的终止、启动、删除

    列出正在运行的容器container # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 50f00085b48f nginx:v2 “nginx -g ‘daemon …” 7 minutes ago Up 6 seconds 0.0.0.0:81->80/tcp webserver2 e033ce3a2d90 nginx “nginx -g ‘daemon …” About an hour ago Up 11 seconds 0.0.0.0:80->80/tcp webserver1 停止容器: # docker stop webserver1 webserver1 # docker stop webserver2 webserver2 启动容器: #…

  • docker-- 启动一个nginx 容器并修改内容后利用commit生成新的镜像

    docker– 启动一个nginx 容器并修改内容后利用commit生成新的镜像

    docker– 启动一个nginx 容器并修改内容后利用commit生成新的镜像

  • Curl 命令用法

    获取页面内容 当我们不加任何选项使用 curl 时,默认会发送 GET 请求来获取链接内容到标准输出。 curl http://www.moneyslow.com 显示 HTTP 头 如果我们只想要显示 HTTP 头,而不显示文件内容,可以使用 -I 选项: curl -I http://www.moneyslow.com 输出为: HTTP/1.1 200 OK Server: nginx/1.10.3 Date: Thu, 11 May 2017 08:24:45 GMT Content-Type: text/html; charset=utf-8 Content-Length: 24206 Connection: keep-alive X-Powered-By: Express Cache-Control: public, max-age=0 ETag: W/”5e8e-Yw5ZdnVVly9/aEnMX7fVXQ” Vary: Accept-Encoding 也可以同时显示 HTTP 头和文件内容,使用 -i 选项: curl -i http://www.moneyslow.com 输出为: HTTP/1.1 200…

  • Ansible 工作机制和简单命令

    Ansible工作机制Ansible 在管理节点将 Ansible 模块通过 SSH 协议推送到被管理端执行,执行完之后自动删除,可以使用 SVN 等来管理自定义模块及编排. 由上面的图可以看到 Ansible 的组成由 5 个部分组成:Ansible: 核心Modules: 包括 Ansible 自带的核心模块及自定义模块Plugins: 完成模块功能的补充,包括连接插件、邮件插件等Playbooks: 编排,定义 Ansible 多任务配置文件,有 Ansible 自动执行Inventory: 定义 Ansible 管理主机的清单Ansible安装除了源码编译安装还有两种比较简单的安装方式。3.1 yum安装rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmyum install python-devel ansible -y3.2 pip安装pip install ansibleAnsible的简单使用Ansible 通过读取默认的主机清单配置/etc/ansible/hosts,可以同时连接到多个远程主机上执行任务。默认路径可以通过修改 ansible.cfg 的 hostfile 参数指定路径。cat /etc/ansible/hosts[web]192.168.1.100192.168.1.101注:为了避免Ansible下发指令时输入目标主机密码,需要提前配置免密钥登陆#@@ping测试,所有主机ansible all -m ping#@@运行shell命令,web组服务器ansible web -m shell -a “ps aux | grep java”#@@文件传输(copy)  将ansible本地的/etc/hosts…

  • Docker安装—centos7 下安装docker-ce 最新版

    官方文档:https://docs.docker.com/engine/installation/linux/docker-ce/centos/ 1 删除旧版本docker  yum remove docker docker-common  container-selinux  docker-selinux  docker-engine  2 安装yum-utils 我们需要 yum-config-manager 工具 yum install -y yum-utils  3 利用yum增加 docker-ce 的repo yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo  4 默认edge repository 是disable 的,我们来enable 它 yum-config-manager –enable docker-ce-edge  5 更新软件包信息: yum makecache fast  6 安装最新版本的docker:  yum –y install docker-ce  # rpm -qa|grep docker docker-ce-selinux-17.05.0.ce-1.el7.centos.noarch docker-ce-17.05.0.ce-1.el7.centos.x86_64  7 有时候需要安装特定版本的docker,首先list出可用版本: #yum…

  • Docker 的平台支持和版本说明

    平台支持: 目前docker的CE和EE所支持的平台情况如下所示,大家所钟情的Ubuntu和CentOS作为Linux发行版所支持的CE和EE均支持的。 版本说明: 2017年的3月1号开始,版本的格式变为如下 项目 说明 版本格式 YY.MM stable版本 (gives you reliable updates every quarter) 每个季度发行 edge版本 (gives you new features every month) 每个月发行 当前CE版本 17.05.0-ce

  • docker--如何自定义网桥

    docker–如何自定义网桥

    docker自定义网桥名称

  • 使用Nginx反向代理网站

    使用Nginx反向代理网站

    server { listen 80; root /home/wwwroot/default; location / { proxy_pass http://downloads.moneyslow.com/; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /f/ { proxy_pass http://www.sourceforge.net/; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } access_log /home/wwwlogs/access.log; }

  • mysql change master 语句备忘

    change master to master_host=’10.10.xx.xx’, master_port=3306, master_user=’repl’, master_password=’asdfasdfa’, master_log_file=’mysql-bin.004281′, master_log_pos=3234234;

  • WordPress 正在执行例行维护,请一分钟后回来 解决办法

    WordPress在升级程序、主题、插件时,都会先切换到维护模式,也就是显示 “正在执行例行维护,请一分钟后回来(Briefly unavailable for scheduled maintenance. Check back in a minute)”,如果升级顺利,也就几秒左右就恢复正常;但是如果由于网速不佳等原因导致升级中断,WordPress就会一直停留在维护模式,不论前台还是后台,都一直显示“正在执行例行维护,请一分钟后回来“。 解决办法: 删除WordPress根目录下的 .maintenance ,刷新网页即可。

  • 最佳WordPress自定义永久链接形式

    这个最好: /%postname%.html 有利于seo

  • Linux 下使用 rinetd 来实现端口转发

    Linux 下使用 rinetd 来实现端口转发

    端口转发很好用的技巧。

  • 如何查看 sqlserver2008和sqlserver2012 端口号

    通过存储过程查看 安装了sqlserver2008和sqlserver2012两个版本的数据库。我们首先打开sqlserver management studio(简称SSMS)连接sqlserver2008的数据库实例,然后执行如下存储过程: –查询端口号 exec sys.sp_readerrorlog 0, 1, ‘listening’ 查询出来的结果如下图所示: 从上图我们可以看出sqlserver2008的端口号是5419。 接下来关闭SSMS,再从重新打开,接着连接sqlserver2012。继续执行上述的存储过程,查询结果如下图所示: 上图说明sqlserver2012的端口号是5413。 通过Sql Server配置管理器(SSCM) 首先打开SSCM,如下图所示: 然后再sqlserver网络配置中开启TCP/IP协议,如下图所示: 在这里我们要将SQLEXPRESS和SQL2012两个协议中的TCP/IP协议都开启。 然后查看TCP/IP协议的属性,如下所示: 如上图所示,我们在IPALL中看到了”TCP动态端口”的值为5419,这就是我们sqlserver2008的端口号。我们打开sql2012的协议查看,发现IPALL属性如下: sql2012的端口号是5413,这个跟我们用存储过程查出来的端口号一模一样。 通过sp_readerrorlog来查看sql server监听的协议以及端口(补充:2012-9-10) 在SSMS中输入sp_readerrorlog命令来查看sql server信息,回到到如下类似的监听信息: –tcp协议 Server is listening on [ ‘any’ <ipv6> 1500]. Server is listening on [ ‘any’ <ipv4> 1500]. Server is listening on [ ‘any’ <ipv6> 1433]. Server is listening on…

  • Linux升级时不升级内核的方法

    RedHat/CentOS使用 yum update 更新时,默认会升级内核。但有些服务器硬件在升级内核后,新的内核可能会认不出某些硬件,要重新安装驱动,很麻烦。所以在生产环境中不要轻易的升级内核,除非您确定升级内核后不会出现麻烦的问题。 如果使用yum update更新时不升级内核,有两种方法: 方法一 直接在yum的命令后面加参数,这个命令只生效一次: # yum update –exclude=kernel* 方法二 修改yum命令的配置文件,永久生效。 这里以 CentOS 6.6 为例来进行说明: 1、首先检查内核版本以及系统版本。 [root@localhost ~]# uname -r 2.6.32-504.el6.x86_64 [root@localhost ~]# cat /etc/issue CentOS release 6.6 (Final) Kernel \r on an \m 2、将配置文件保存备份。 [root@localhost ~]# cp /etc/yum.conf /etc/yum.conf.bak 3、编辑/etc/yum.conf文件。 [root@localhost ~]# vi /etc/yum.conf 4、在[main]的后面加入如下内容: exclude=kernel* 5、按下Esc,输入下面命令进行保存:wq。 6、使用 yum update更新。 [root@localhost yum.repos.d]# yum…

  • 是与否,google voice 能为我们带来什么商业价值

    尽管google voice 能给我们带来一些商业价值,但是在某些商用场景仍然不能对google voice 期望太高。 目前我们已经知道的google voice 的商业价值包括: 1、通过Google环聊(Google Hangouts)进行视频会议 2、只能在美国进行“电话会议” 3、通话历史记录显示 4、呼叫转接 5、转录或者记录语音信箱 6、发送和接收文本和短信 7、从应用和手机拨打和接听电话 8、为现有手机号码的转发系统提供补充功能 不适用于google voice的场景: 1、没有一个现有的美国手机号码是不能使用google voice的。 2、不能拨打紧急电话 3、如果想要享受到“精彩的短信或彩信服务”,只能迁移到Google环聊(Google Hangouts)。 4、不能在世界任何地方发送消息,尽管您可以从任何国家接收消息。 5、不能链接到任何硬件 – 您可能需要选择一个特定的新的IP桌面电话。 6、不能提供长时间转接呼叫 – 25秒内未应答的电话直接进入语音信箱 7、没有在线支持。如果您在使用Google语音服务时遇到问题,没有google voice 的客服电话号码或电子邮件地址可以提供。相反,您需要完全依赖在线资源,例如Google语音帮助中心查看常见问题解答和可用资源。 google voice 淘宝购买: https://a8z8.world.taobao.com/

  • Google Voice 功能:现在可以过滤掉不需要的电话

    1月份Google语音服务的功能更新大部分反馈良好,原因来源于设计标准的不断更新。许多忠实于长途电话转接服务的人也都很高兴,因为这部分人得到了google voice的关注,虽然这个事情几乎被忽视了好几年。幸运的是,Google正在为用户改进垃圾邮件过滤功能。 去年夏天,Google主动向Nexus,Pixel和Android One手机添加了反垃圾邮件功能,允许设备发出类似这样的警告:“您是否收到来自“可疑的垃圾邮件呼叫者”的响铃”。现在,Google Voice正在接收相同的功能。 据Google说,这些措施造成垃圾邮件发送者的成本提高两倍,来自客户的垃圾邮件报告显示垃圾邮件减少了20%,呼叫正确率为40%。在google Voice中启用垃圾邮件过滤的步骤已经在官网首页的支持网站上进行了设置。 以前,google Voice的许多功能都已经添加到环聊中。环聊开始是为普通用户设计的基于消息和互联网的呼叫应用,但最近几个月,Google决定重新为企业客户使用。因此,该应用已经缩短了长时间的功能,如短信支持。 所有让google voice 在七年前推出的突破性功能的所有功能仍然在研发进程当中,例如能够从任何设备(包括您的计算机)输入相同数字的文字;语音邮件转录和通话记录。特别是最后一个功能:在智能手机上的股票功能仍然令人震惊,Google的应用程序仍然是唯一可行的方法之一。 淘宝 google voice 售卖: https://item.taobao.com/item.htm?id=544565995047

  • Google voice 最新版功能:语音更新包括对话删除功能,Web桌面呼叫功能

    Google voice 最新版给桌面和Android用户带来了一些新的功能。 在用户的日志记录方面,桌面和手机上的用户可以删除整个对话,而Android用户可以专门针对应用启用“免打扰功能”,禁用短信的”应用通知“,并通过添加快捷功能快速存档对话。 Google在其产品论坛上详细介绍了更改,具体包括: 删除历史对话 在网页可以打电话 新加”请勿打扰“ 功能 停用短信的”应用通知“(仅限Android) 对话存档快捷方式(仅限Android) Gif图片搜索(仅限Gboard用户) google voice 淘宝购买: https://item.taobao.com/item.htm?id=544565995047

  • google voice注册教程 “正规”的方法注册谷歌电话

    本教程是正规的google教程注册方法,也就是说相当于你已经在美国了,所以想在国内注册google voice的朋友就不用看下去了。 目前网上的教程都是用v pn的,过程可谓是到处是坑,而且有的步骤不同的人遇到的问题不一样,甚至有的步骤需要多长尝试才能成功。 本身注册教程是简单的,以国人目前使用互联网的经验,分分钟搞定。 Google voice是一种方便的免费服务网络电话,可让你通过互联网拨打电话和发送语音邮件。适用于iOS,Android,当然通过网络浏览器在网络上也可以进行相同的操作。 它还允许你选择接收者将看到的电话号码,而不是真实的电话号码。 这很方便,因为这意味着你可以向他人发送您的Google语音电话号码,而无需显示您的实际电话号码。也就是说,我可以给你我的联系方式,但不是真实的联系方式,它只是个中转站。 中国目前的个人信息毫无隐私可言,你买了房,买了车,马上就会有中介或者保险给你打电话,但是在物业或者4s店,你不得不留真实的电话。 收快递也是一样,你家或者单位公司的住址电话信息也被到处转卖,因为你得收货。 有了google voice就不一样,你可以选择告诉他你的google voice 电话,其他的信息他们一无所知。当然如果你是在美国。 以下是步骤: 1、从App Store下载google voice。 2、打开Goog​​le voice,然后登录或选择您的Google帐户。 3、点击搜索以选择要使用的电话号码。选择您希望联系人在拨打电话时看到的号码。您可以按城市搜索,并选择您想要的数字。 4、点击下一步确认您选择的电话号码。 5、将你的设备关联到Google voice,点击下一步。 6、您将被要求输入您的美国的电话号码(必须要有真实的美国电话,当然可以是虚拟的,你懂的)。 7、输入您收到的验证码。 怎么样简单吧!? 话说目前国内做外贸的人大量需要google voice来注册ebay,pp或者接收验证码。如果不是自己用,就不用费劲注册了,万能的淘宝可以有,推荐a8z8网络便利店 https://a8z8.taobao.com/ 口碑不错

  • DNS的TXT记录 http://www.openspf.org/

    在dns记录里面,除了最常见的a记录,cn记录,mx记录,还有不常见的txt记录。 txt记录用来保存域名的附加文本信息,txt记录的内容按照一定的格式编写,最常用的是spf格式,spf用于登记某个域名拥有的用来外发邮件的 所有ip地址。mx记录的作用是给寄信者指明某个域名的邮件服务器有哪些,spf格式的txt记录的作用跟mx记录相反,它向收信者表明,哪些邮件服务器 是经过某个域名认可会发送邮件的。spf的作用主要是反垃圾邮件,主要针对那些发信人伪造域名的垃圾邮件。 按照spf格式在dns中增加一条txt类型的记录,将提高该域名的信誉度,同时可以防止垃圾邮件伪造该域的发件人发送垃圾邮件。 spf格式比较复杂,一个最典型的spf格式的txt记录例子为“v=spf1 a mx ~all ”,表示只有这个域名的a记录和mx记录中的ip地址有权限使用这个域名发送邮件。其中v=spf1表示这条txt记录使用的是spf格式版本1;a和 mx表示a记录或者mx记录;~all表示除了前面所指定的其他ip地址统统不认可。 openspf.org提供了一个spf向导用来生成spf。 txt记录除了保存spf之外,还有什么用途?Jonney在这里提供一个例 子:假如你开发了一个有几百万用户的应用软件,这个软件每隔几个星期就会升级一次版本,这个软件每次启动的时候都要到你的服务器查询是否有新的版本,这样 你必须维护一个或多个版本查询服务器。聪明且懒惰的同学就可以在这里偷懒了,在你的dns里面新增一条txt记录,用来保存软件的版本信息,比如在 version.example.com增加一条txt记录version=1.2.5,生存周期为一天,软件启动的时候查询这个txt记录里面的版本信 息,这样就省了维护版本查询服务器的成本。 做企业邮箱的朋友都会用到TXT记录,用来防止邮件服务器被当作垃圾邮件,这是TXT最重要的一个作用,不过还有其他的作用。 TXT 记录,一般指为某个主机名或域名设置的说明,如: admin IN TXT “管理员, 电话: 13901234567″ mail IN TXT “邮件主机, 存放在xxx , 管理人:AAA” Jim IN TXT “contact: abc@mailserver.com” 也就是您可以设置 TXT ,以便使别人联系到您 。当然,要用英文填写。

  • apache cassandra 3.9 大内存调优

    采用G1 方式。 http://docs.datastax.com/en/archived/cassandra/3.x/cassandra/operations/opsTuneJVM.html

  • wordpress 迁移域名后的图片url地址变更

    wordpress 迁移域名后的图片url地址变更

    手动改数据库即可: UPDATE wp_posts SET post_content=(REPLACE (post_content, ‘moneyslow.com’,’test.moneyslow.com’));

  • nfs showmount clnt_create:RPC:Unknown host

    # /etc/init.d/nfs start 正常 # showmount -e localhost 报错: clnt_create:RPC:Unknown host 解决: # /etc/init.d/rpcsvrgssd status rpc.svrgssd is stopped # /etc/init.d/rpcsvrgssd start # /etc/init.d/nfs restart

  • linux dns dig 命令详解

    linux dns dig 命令详解

    Dig简介: Dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具。 Dig的源码是ISC BIND大包的一部分,但是大多编译和安装Bind的文档都不把它包括在内,但是在linux系统下,它通常是某个包的一部分,在Gentoo下是 bind-tools,在Redhat/Fedora下是 bind-utils,或者在Debian下是 dnsutils。  看懂默认输出:   最简单最常见的查询是查询一台主机,但是默认情况下,Dig的输出信息很详细。你可能不需要所有的输出, 但是它确实值得知道。下面是一个带有注释的查询:  $ dig www.isc.org 上面是我调用dig 的命令行。 ; <<>> DiG 9.2.3 <<>> www.isc.org ;; global options:  printcmd Dig的部分输出告诉我们一些有关于它的版本信息(version 9.2.3)和全局的设置选项,如果+nocmd在命令行下 是第一个参数的话,那么这部分输出可以通过加+nocmd的方式查询出来。 ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43071 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3 在这里,Dig告诉我们一些从DNS返回的技术信息,这段信息可以用选项 +[no]comments来控制显示,但是小心,禁止掉comments也可能关闭一些其它的选项。…

  • http和socket之长连接和短连接区别

    TCP/IP TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传输层中有TCP协议与UDP协议。 在应用层有:TCP包括FTP、HTTP、TELNET、SMTP等协议                  UDP包括DNS、TFTP等协议 短连接 连接->传输数据->关闭连接 HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。 也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。   长连接 连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接。 长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。   http的长连接 HTTP也可以建立长连接的,使用Connection:keep-alive,HTTP 1.1默认进行持久连接。HTTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持(貌似最新的 http1.0 可以显示的指定 keep-alive),但还是无状态的,或者说是不可以信任的。   什么时候用长连接,短连接?  长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。   而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。   总之,长连接和短连接的选择要视情况而定。 发送接收方式 1、异步 报文发送和接收是分开的,相互独立的,互不影响。这种方式又分两种情况: (1)异步双工:接收和发送在同一个程序中,由两个不同的子进程分别负责发送和接收 (2)异步单工:接收和发送是用两个不同的程序来完成。 2、同步 报文发送和接收是同步进行,既报文发送后等待接收返回报文。 同步方式一般需要考虑超时问题,即报文发出去后不能无限等待,需要设定超时时间,超过该时间发送方不再等待读返回报文,直接通知超时返回。   在长连接中一般是没有条件能够判断读写什么时候结束,所以必须要加长度报文头。读函数先是读取报文头的长度,再根据这个长度去读相应长度的报文。  Socket是什么  Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。 通信过程: 主机 A 的应用程序要能和主机 B 的应用程序通信,必须通过 Socket 建立连接,而建立 Socket 连接必须需要底层 TCP/IP 协议来建立 TCP 连接。建立 TCP 连接需要底层 IP 协议来寻址网络中的主机。我们知道网络层使用的 IP 协议可以帮助我们根据 IP 地址来找到目标主机,但是一台主机上可能运行着多个应用程序,如何才能与指定的应用程序通信就要通过 TCP 或 UPD 的地址也就是端口号来指定。这样就可以通过一个 Socket 实例唯一代表一个主机上的一个应用程序的通信链路了。 建立通信链路当客户端要与服务端通信,客户端首先要创建一个 Socket 实例,操作系统将为这个 Socket 实例分配一个没有被使用的本地端口号,并创建一个包含本地和远程地址和端口号的套接字数据结构,这个数据结构将一直保存在系统中直到这个连接关闭。在创建…

  • 利用Dante架设linux的socks5代理服务器

    dante-server 是一个国外开源的socks5代理服务器软件,官网地址http://www.inet.no/dante/安装:apt-get install dante-server完成后主… dante-server 是一个国外开源的socks5代理服务器软件,官网地址 http://www.inet.no/dante/ 安装:apt-get install dante-server完成后主要编辑/etc/danted.conf 这个文件: # the server will log both via syslog, to stdout and to /var/log/lotsoflogs #logoutput: syslog stdout /var/log/lotsoflogs logoutput: syslog   # The server will bind to the address 10.1.1.1, port 1080 and will only # accept connections going to that address. internal: eth0 port =…

  • Linux下的双网卡绑定bond0 em1 em2

    一、什么是bonding Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余  二、bonding应用方向1、网络负载均衡 对于bonding的网络负载均衡是我们在文件服务器中常用到的,比如把三块网卡,当做一块来用,解决一个IP地址,流量过大,服务器网络压力过大的问题。对于文件服务器来说,比如NFS或SAMBA文件服务器,没有任何一个管理员会把内部网的文件服务器的IP地址弄很多个来解决网络负载的问题。如果在内网中,文件服务器为了管理和应用上的方便,大多是用同一个IP地址。对于一个百M的本地网络来说,文件服务器在多 个用户同时使用的情况下,网络压力是极大的,特别是SAMABA和NFS服务器。为了解决同一个IP地址,突破流量的限制,毕竟网线和网卡对数据的吞吐量是有限制的。如果在有限的资源的情况下,实现网络负载均衡,最好的办法就是 bonding 2、网络冗余 对于服务器来说,网络设备的稳定也是比较重要的,特别是网卡。在生产型的系统中,网卡的可靠性就更为重要了。在生产型的系统中,大多通过硬件设备的冗余来提供服务器的可靠性和安全性,比如电源。bonding 也能为网卡提供冗余的支持。把多块网卡绑定到一个IP地址,当一块网卡发生物理性损坏的情况下,另一块网卡自动启用,并提供正常的服务,即:默认情况下只有一块网卡工作,其它网卡做备份  三、bonding实验环境及配置 1、实验环境 系统为:CentOS,使用2块网卡(em1、em2  ==>  bond0)来实现bonding技术 2、bonding配置 第一步:先查看一下内核是否已经支持bonding  1)如果内核已经把bonding编译进内核,那么要做的就是加载该模块到当前内核;其次查看ifenslave该工具是否也已经编译modprobe  -l   bond*  或者 modinfo   bonding modprobe   bonding lsmod | grep ‘bonding’ echo  ‘modprobe bonding &> /dev/null’  >>  /etc/rc.local(开机自动加载bonding模块到内核)which  ifenslave注意:默认内核安装完后就已经支持bonding模块了,无需要自己手动编译 2)如果bonding还没有编译进内核,那么要做的就是编译该模块到内核(1)编译bonding tar -jxvf  kernel-XXX.tar.gz cd  kernel-XXX make  menuconfig选择 ” Network device support ”  ->  ” Bonding driver support ” make bzImage make modules  &&  make modules_install make install (2)编译ifenslave工具gcc -Wall -O -I   kernel-XXX/include…

  • linux下查看uuid的3种方法

    1 命令查看:blkid2 文件查看:ls -l /dev/disk/by-uuid3 命令查看:vol_id /dev/sda1 UUID的作用及意义  原因1:它是真正的唯一标志符 UUID为系统中的存储设备提供唯一的标识字符串,不管这个设备是什么类型的。如果你在系统中添加了新的存储设备如硬盘,很可能会造成一些麻烦,比如说启动的时候因为找不到设备而失败,而使用UUID则不会有这样的问题。 原因2:设备名并非总是不变的 自动分配的设备名称并非总是一致的,它们依赖于启动时内核加载模块的顺序。如果你在插入了USB盘时启动了系统,而下次启动时又把它拔掉了,就有可能导致设备名分配不一致。 使用UUID对于挂载移动设备也非常有好处──例如我有一个24合一的读卡器,它支持各种各样的卡,而使用UUID总可以使同一块卡挂载在同一个地方。 原因3:Ubuntu中的许多关键功能现在开始依赖于UUID 例如grub──系统引导程序,现在可以识别UUID,打开你的/boot/grub/menu.lst,你可以看到类似如下的语句:title Ubuntu hardy (development branch), kernel 2.6.24-16-genericroot (hd2,0)kernel /boot/vmlinuz-2.6.24-16-generic root=UUID=c73a37c8-ef7f-40e4-b9de-8b2f81038441 ro quiet splashinitrd /boot/initrd.img-2.6.24-16-genericquiet

  • 改变网卡的速度和双工

    没有比购买一个完全的Linux兼容网卡更好的Linux投资了。大部分的Linux厂商在他们网站上都有一份兼容的硬件列表:在开始连接你的机器到网络之前请仔细阅读它。如果你没有找到任何在本地的计算机商店可以买到的型号,那么同系列也是可以的。大多数网卡都能正常工作,但只有完全兼容的可为您提供无差错的,持续的吞吐量。 Linux缺省会在网卡连接到路由器上时自动协商判断网卡的速度和双工。配置一个路由器端口自动协商速度和双工往往是不足够的,因为不同的协议标准执行上常会有分歧。 实际上,网卡即使协商失败也会工作,但这通常会导致在网卡上使用ifconfig -a命令时看到许多冲突类型的错误和极低的性能。在故障排除时不要只把这类错误局限于协商失败;问题也可能是坏的网卡,路由器端口,或者网线导致的。 使用mii-tool mii-tool是一个原始的设置网卡速度和双工的Linux工具。它以注定会被抛弃,而由新的ethtool命令取而代之,但是很多老的网卡只支持mii-toll,所以你还需要知道它。不带任何参数的执行命令会产生一个简要的状态报告,如下面样例所示,对于不支持的网卡将提示Operation not supported信息。mii-tool不兼容的网卡往往仍然可以工作,但是你需要根据制造商的指南来设定速度和双工,而不能自动协商。 [root@bigboy tmp]# mii-tool SIOCGMIIPHY on ‘eth0’ failed: Operation not supported eth1: 100 Mbit, half duplex, link ok [root@bigboy tmp]# 通过-v参数使用verbose模式,你可以获得更多更详细的信息。在这个例子中,协商正常,网卡选择100Mbps,全双工模式(FD)。 [root@bigboy tmp]# mii-tool -v eth1: negotiated 100baseTx-FD, link ok product info: vendor 00:10:18, model 33 rev 2 basic mode: autonegotiation enabled basic status: autonegotiation complete, link ok…

  • hydra 配合 libssh 扫描弱口令

    [ERROR] Compiled without LIBSSH v0.4.x support, module is not available!     如何装libssh呢?方法如下:     方法一、支持apt-get的话     apt-get purge hydra apt-get install cmake libssl-dev     方法二、编译安装     2.1 libssh wget http://www.libssh.org/files/0.4/libssh-0.4.8.tar.gz tar zxf libssh-0.4.8.tar.gz cd libssh-0.4.8 mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug -DWITH_SSH1=ON .. make make install     2.2 hydra…

  • 如何在windows7下安装dig工具

    如何在windows7下安装dig工具

    1 下载bind地址:http://www.isc.org/downloads/选择下面的downloadss按钮,把右面的加号打开,如图:咱就选当前稳定版,点download:根据本机的类型选择,这里我的电脑是32位的,选择下载。下载zip包文件,解压安装,双击文件BINDInstall.exe,如图:只选择tools即可,安装目录自己定义:这样就安装完成。最好,把c:\dig 目录放到你的环境变量里面去:我的电脑,右键属性,高级系统设置,高级标签,环境变量,加到path属性里。

  • 如何获取电信运营商ip地址分配的详细信息

    whois 工具获取 APNIC是管理亚太地区IP地址分配的机构,它有着丰富准确的IP地址分配库,同时这些信息也是对外公开的!下面就让我们看看如何在Linux下获得一些电信运营商的IP地址分配情况:shell> wget http://ftp.apnic.net/apnic/dbase/tools/ripe-dbase-client-v3.tar.gzshell> tar xzvf ripe-dbase-client-v3.tar.gzshell> cd whois-3.1shell> ./configureshell> make完成上述编译安装工作后,我们开始获取IP地址段;中国网通:shell> ./whois3 -h whois.apnic.net -l -i mb MAINT-CNCGROUP > /var/cnc中国电信:shell> ./whois3 -h whois.apnic.net -l -i mb MAINT-CHINANET > /var/chinanet中国铁通:shell> ./whois3 -h whois.apnic.net -l -i mb MAINT-CN-CRTC > /var/crtc打开获取后的文件可以看到里面的信息非常详细,甚至可以看到各个分公司的负责人、电话、电子邮件等等信息。如果想得到一份整齐干净的IP地址段文件,只要用grep和awk简单过滤就可以了:)一个转自CU的自动获取脚本 :复制代码 代码如下:#!/bin/sh#auto get the IP Table#get the newest delegated-apnic-latestrm delegated-apnic-latestif type wgetthen wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latestelse fetch http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latestfigrep…

  • 安装两个mysql 端口不同

    ./configure –prefix=/usr/local/mysql3307 –sysconfdir=/usr/local/mysql3307/etc –with-tcp-port=3307 –localstatedir=/ssdc/mysqldata –with-mysqld-user=mysql –enable-assembler –datadir=/ssdc/mysqldata –with-mysqld-ldflags=-all-static –with-client-ldflags=-all-static –with-unix-socket-path=/usr/local/mysql3307/mysql.sock –with-charset=utf8 –with-collation=utf8_general_ci –with-extra-charsets=all     /usr/local/mysql3307/bin/mysql_install_db –user=mysql –datadir=/ssdc/mysqldata

  • linux下查找占用磁盘io的进程

    问题描述: 一个文件正在被进程写 我想查看哪个进程在写这个文件。     解决思路: Linux 下每个文件都会在某个块设备上存放,当然也都有相应的 inode ,那么透过 vfs.write 我们就可以知道谁在不停的写入特定的设备上的 inode。 那用什么工具呢? 这个神器就是systemtap ,具体的命令就是stap。  参考:http://cccgw.info/2012/07/systemtap%E5%85%A5%E9%97%A8/ 安装很简单:yum -y install systemtap 但是这个安装完毕,还需要内核的支持,不然会报错。具体的说就是需要安装kernel-debuginfo包。 安装过程: 1 查看内核版本    uname -r    2.6.32-279.el6.x86_64 2 下载相应的包:    wget http://debuginfo.centos.org/6/x86_64/kernel-debuginfo-2.6.32-279.el6.x86_64.rpm    wget http://debuginfo.centos.org/6/x86_64/kernel-debuginfo-common-2.6.32-279.el6.x86_64.rpm 3 安装rpm包:   rpm -ivh kernel-debuginfo-2.6.32-279.el6.x86_64.rpm kernel-debuginfo-common-2.6.32-279.el6.x86_64.rpm 4 确保安装包正常:   rpm -qa|grep kernel-debug   kernel-debuginfo-common-x86_64-2.6.32-279.el6.x86_64   kernel-debuginfo-2.6.32-279.el6.x86_64…

  • 牛逼大了的ssh

    1、复制SSH密钥到目标主机,开启无密码SSH登录 ssh-copy-id user@host 如果还没有密钥,请使用ssh-keygen命令生成。 2、从某主机的80端口开启到本地主机2001端口的隧道 ssh -N -L2001:localhost:80 somemachine 现在你可以直接在浏览器中输入http://localhost:2001访问这个网站。 3、将你的麦克风输出到远程计算机的扬声器 dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp 这样来自你麦克风端口的声音将在SSH目标计算机的扬声器端口输出,但遗憾的是,声音质量很差,你会听到很多嘶嘶声。 4、比较远程和本地文件 ssh user@host cat /path/to/remotefile | diff /path/to/localfile – 在比较本地文件和远程文件是否有差异时这个命令很管用。 5、通过SSH挂载目录/文件系统 sshfs name@server:/path/to/folder /path/to/mount/point 从http://fuse.sourceforge.net/sshfs.html下载sshfs,它允许你跨网络安全挂载一个目录。 6、通过中间主机建立SSH连接 ssh -t reachable_host ssh unreachable_host Unreachable_host表示从本地网络无法直接访问的主机,但可以从reachable_host所在网络访问,这个命令通过到reachable_host的”隐藏”连接,创建起到unreachable_host的连接。 7、将你的SSH公钥复制到远程主机,开启无密码登录 – 简单的方法 ssh-copy-id username@hostname 8、直接连接到只能通过主机B连接的主机A ssh -t hostA ssh hostB…

  • nginx 目录禁止ip 重定向域名不发生变化

    nginx 目录禁止ip location /zgadmin { allow 220.220.22.92; deny all; } nginx 实现A域名重写到B域名而不引起浏览器中url的变化? rewrite与proxy_pass搭配使用: location ~ ^/frompath/ { rewrite ^/frompath/(.*)$ /topath/$1 break; proxy_pass http://www.domainB.com; } 既可以实现http://www.a.com/frompath/page.php 被重写到 http://www.b.com/topath/page.php 而不引起浏览器地址栏中url的变化。