September 5, 2011
scp 无密码在两台主机之间拷贝文件
"\u003cp\u003e用scp 在两台主机之间相互之间拷贝文件,还是方面!但是需要密码!怎么样才能无密码相互之间拷贝文件呢!\n以下就实现是方法!\n在A主机上运行\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e#ssh-keygen -t rsa\u003c/p\u003e\n\u003cp\u003e[root@localhost ~]# ssh-keygen -t rsa\u003c/p\u003e\n\u003cp\u003eGenerating public/private rsa key pair.\u003c/p\u003e\n\u003cp\u003eEnter file in which to save the key (/root/.ssh/id_rsa):\u003c/p\u003e\n\u003cp\u003eEnter passphrase (empty for no passphrase):\u003c/p\u003e\n\u003cp\u003eEnter same passphrase again:\u003c/p\u003e\n\u003cp\u003eYour identification has been saved in /root/.ssh/id_rsa.\u003c/p\u003e\n\u003cp\u003eYour public key has been saved in /root/.ssh/id_rsa.pub.\u003c/p\u003e\n\u003cp\u003eThe key fingerprint is:\u003c/p\u003e\n\u003cp\u003e61:34:37:bd:03:aa:c8:85:0d:e9:d0:b6:6e:c2:50:89 root@localhost\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e …\u003c/p\u003e"
September 5, 2011
超级详细Tcpdump的用法
"\u003cp\u003e第一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.\u003c/p\u003e\n\u003cp\u003e第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。\u003c/p\u003e\n\u003cp\u003e第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定 的网络协议,实际上它是”ether”的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和 分析。其他的几个关键字就是指明了监听的包的协议内容。 …\u003c/p\u003e"
September 4, 2011
常用MYSQL安全设置加固
"\u003cp\u003e1.修改root用户口令,删除空口令\n2.删除默认数据库和数据库用户\n3.改变默认mysql管理员帐号\n4.关于密码的管理\n5.使用独立用户运行msyql\n6.禁止远程连接数据库\n7.限制连接用户的数量\n8.用户目录权限限制\n9.命令历史记录保护\n10.禁止MySQL对本地文件存取\n11.MySQL服务器权限控制\n12.使用chroot方式来控制MySQL的运行目录\n13.关闭对无关的Web程序访问的支持\n14.数据库备份策略\n15. Mysqld安全相关启动选项\n16.information_schema 安全\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1.修改root用户口令,删除空口令\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e缺省安装的MySQL的root用户是空密码的,为了安全起见,必须修改为强密码,所谓的强密码,至少8位,由字母、数字和符号组成的不规律密码。使用MySQL自带的命令mysaladmin修改root密码,同时也可以登陆数据库,修改数据库mysql下的user表的字段内容,修改方法如下所示:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e# /usr/local/mysql/bin/mysqladmin -u root password “upassword” //使 …\u003c/p\u003e\u003c/blockquote\u003e"
September 4, 2011
常用PHP安全设置加固
"\u003cp\u003e1.隐藏php版本\n2.禁用危险的php函数\n3.命令注入攻击\n4.SQL注入攻击\n5.xss攻击\n6.会话劫持攻击\n7.关闭注册全局变量\n8.上传文件\n9.远程包含、本地包含\n10.Php.ini包含补丁文件,我们可以根据需要,通过它包含或者nginx的模块\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1.隐藏php版本\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eexpose_php=off\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e2.禁用危险的php函数\u003c/strong\u003e\npopen,pentl_exec,passthru,exec,system,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,show_source,escapeshellcmd,escapeshellarg,curl_exec,curl_multi_exec,parse_ini_file,assert\n至于eval函数,我们用suhosin把这些全部都加进eval的黑 …\u003c/p\u003e"
September 2, 2011
linux下ssh使用rsa认证教程[原创]
"\u003cp\u003e下面我们来对linux(centos)平台如何使用ssh的rsa认证功能来实现安全登录服务器的教程.为了安全我们一般不直接使用root这个用户,而使用其它用户来代替.如果需要root权限的时候,直接在服务器上进行su命令进行用户切换就可以了.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e一.配置/etc/ssh/ssh_config文件\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c/blockquote\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eServerKeyBits 1024 //# 注释取消,将768改为1024\n\nPermitRootLogin no //# 注释取消,将yes改为no 禁止root登录\n\u003c/code\u003e\u003c/pre\u003e\u003cblockquote\u003e\n\u003c/blockquote\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eRSAAuthentication yes //# 启用 RSA 认证\nPubkeyAuthentication yes //# 启用公钥认证\nAuthorizedKeysFile //# .ssh/authorized_keys # 验证公钥的存放路径\n\u003c/code\u003e\u003c/pre\u003e\u003cblockquote\u003e\n\u003c/blockquote\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ePermitEmptyPasswords no //# 取消注释,禁止空密码登录\nPasswordAuthentication no //# 取消注释,禁止使用密码方式登录,有密钥谁还用密码啊\n注意一下,在centos5.0之前SSH服务 …\u003c/code\u003e\u003c/pre\u003e"
September 2, 2011
Nginx中的gzip模块简介
"\u003ch2 id=\"gzip\"\u003egzip\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003e语法:\u003c/strong\u003e \u003cem\u003egzip on|off\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e默认值:\u003c/strong\u003e \u003cem\u003egzip off\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e作用域:\u003c/strong\u003e \u003cem\u003ehttp, server, location, if (x) location\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003e开启或者关闭gzip模块\u003c/p\u003e\n\u003ch2 id=\"gzip_buffers\"\u003egzip_buffers\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003e语法:\u003c/strong\u003e \u003cem\u003egzip_buffers number size\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e默认值:\u003c/strong\u003e \u003cem\u003egzip_buffers 4 4k/8k\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e作用域:\u003c/strong\u003e \u003cem\u003ehttp, server, location\u003c/em\u003e\n设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。例如 4 4k 代表以4k为单位,按照原始数据大小以4k为单位的4倍申请内存。 4 8k 代表以8k为单位,按照原始数据大小以8k为单位的4倍申请内存。\u003c/p\u003e\n\u003cp\u003e如果没有设置,默认值是申请跟原始数据相同大小的内存空间去存储gzip压缩结果。\u003c/p\u003e\n\u003ch2 id=\"gzip_comp_level\"\u003e\u003cstrong\u003egzip_comp_level\u003c/strong\u003e\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003e语法:\u003c/strong\u003e \u003cem\u003e\u003cstrong\u003egzip_comp_level\u003c/strong\u003e 1..9\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e默认值:\u003c/strong\u003e \u003cem\u003e\u003cstrong\u003egzip_comp_level\u003c/strong\u003e 1\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e作用域:\u003c/strong\u003e \u003cem\u003ehttp, server, location\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003egzip压缩比,1 压缩比最小处理速度最快,9 压缩比最大但处理最慢(传输快但比较消耗cpu)。\u003c/p\u003e\n\u003ch2 id=\"gzip_min_length\"\u003egzip_min_length\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003e语法: …\u003c/strong\u003e\u003c/p\u003e"
September 2, 2011
Facebook是怎么做MySQL备份的?
"\u003cp\u003eFacebook的用户每天创造大量的数据,为了确保数据可靠的存储,我们每天进行数据备份.我们通过将原来的逻辑备份改成定制化的物理备份,显著地提升了备份的速度(不增加体积的情况下).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e从mysqldump到Xtrabackup\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e我们使用mysqldump来进行每日的数据库备份,mysqldump对数据进行逻辑备份,就像应用访问数据库那样,mysqldump以SQL语句的方式从数据库中读取一张张表,将表结构和数据转保存到文本文件.mysqldump最大的问题是速度太慢(对于我们的一些大的数据库,通常要花24小时,甚至更久),并且以SQL语句的方式读取数据可能造成磁盘的随机读,这就会造成主机的load增大,影响性能.对于时间太长,我们可以跑多个实例来并发的做备份,这能缩短备份的时间,但是会造成更多的load,更影响主机的性能.\u003c/p\u003e\n\u003cp\u003e另外一个可行的备份方式是进行物理备份(我们称之为二进制备份,binary backup),通过操作系统层面,读取数据库磁盘文件,而非通过SQL语句.这样的话在备份的过程中,数据不能像SQL读取的时候保持事务上一致的.只有当备份的数据文件在数据库里复原了,他们才又一致 …\u003c/p\u003e"
September 1, 2011
Linux系统监控工具之vmstat详解
"\u003cp\u003evmstat是一个十分有用的Linux系统监控工具,使用vmstat命令可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e一、前言\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e很显然从名字中我们就可以知道vmstat是一个查看虚拟内存(Virtual Memory)使用状况的工具,但是怎样通过vmstat来发现系统中的瓶颈呢?在回答这个问题前,还是让我们回顾一下Linux中关于虚拟内存相关内容。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e二、虚拟内存运行原理\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存,内核会释放某些进程所占用但未使用的部分或所有物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的内存提供给有需要的进程使用。\u003c/p\u003e\n\u003cp\u003e在Linux内存管理中,主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。\u003c/p\u003e\n\u003cp\u003e分页(Page)写入磁盘的过程被称作Page-Out,分页(Page)从磁盘重新回到 …\u003c/p\u003e"
September 1, 2011
PHP-FPM高负载的解决办法
"\u003cp\u003e这里只是介绍了php-fpm的优化方法的,但一般情况下和nginx组合使用的时候,单独优化其中一项的话,作用不是特别的大,同时还需要对nginx进行优化.nginx的做法方法参考:.上面的优化前和优化后的图,看得出前后差距还是特别的大的.\u003c/p\u003e\n\u003cp\u003e导致nginx 502 bad gateway的PHP-CGI(FASTCGI)\u003c/p\u003e\n\u003cp\u003eNGINX频爆502 BAD GATEWAY的错误,看了网上的教程,仍没有彻底解决。\u003c/p\u003e\n\u003cp\u003e目前我总结的解决502 BAD GATEWAY的方式有:\u003c/p\u003e\n\u003cp\u003e1.视服务器的性能,在php-fmp.conf里增加max_children的值,我目前用的15.\u003c/p\u003e\n\u003cp\u003e2.用reload参数定时重载php-fpm。这个主要原因是php脚本执行时间过长造成的,重载php-fpm能杜绝这个问题。如何彻底解决php-cgi脚本占用大量内存从而导致502错误的产生还值得进一步探讨,目前该做法不失为一种好办法。\u003c/p\u003e\n\u003cp\u003e具体的做法是,用crontab让php-fpm平滑重启,从而不影响PHP脚本的运行。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e*/10 * * * * /usr/local/php/sbin/php-fpm reload …\u003c/p\u003e\u003c/blockquote\u003e"
September 1, 2011
Linux主分区,扩展分区,逻辑分区的联系和区别
"\u003cp\u003e言归正传,在安装 CentOS5.3 的过程中,会遇到磁盘分区的界面,下拉式菜单中有 4 个选项,这时你不要选择默认,打开下拉式菜单,选择最后一项(翻译成中文意思是:建立自定义的分割模式)。然后选择右下角的确认,在下一个对话界面里依序建立 / 、 /home 及 swap ,完成后如图。确认设置后的分割区。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/09/0512054353-0.jpg\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2011/09/0512054353-0.jpg\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e为强调重点,把图中重要内容,再写一遍。\u003c/p\u003e\n\u003cp\u003e/ 根目录 ext3 hda1\u003c/p\u003e\n\u003cp\u003e/home 用户目录 ext3 hda2\u003c/p\u003e\n\u003cp\u003eSwap 交换分区 swap hda3\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e对 hda1 的解释:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ehd : IDE 硬盘。如果是 SCSI 硬盘,则为 sd ,这个只能记住,没有更好的办法。\u003c/p\u003e\n\u003cp\u003ea: : 第一块硬盘。如果是第二块硬盘,则为 b ,依此类推 c,d……\u003c/p\u003e\n\u003cp\u003e1 : 主分区。其中 1 , 2 , 3 , 4 都是主分区,从第 5 开始为逻辑分区,最大到 16\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e磁盘容量与主分区、扩展分区、逻辑分区的关系:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e硬盘的容量=主分区的容量+扩展分区的容量扩展分区的容量=各个逻辑分区的 …\u003c/p\u003e"
September 1, 2011
Linux(nginx)下安装awstats日志分析软件
"\u003cp\u003e这里用的是centos的系统,linux上的安装方法基本上都一样的.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e一.下载awstats软件\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e从地址可以下载,这里使用的是最新的7.0的版本\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e#cd /usr/local\n#wget \u003ca href=\"http://cdnetworks-kr-1.dl.sourceforge.net/project/awstats/AWStats/7.0/awstats-7.0.zip\"\u003ehttp://cdnetworks-kr-1.dl.sourceforge.net/project/awstats/AWStats/7.0/awstats-7.0.zip\u003c/a\u003e#unzip awstats-7.0.zip awstats\n#chmod +x /usr/local/awstats/tools/awstats_configure.pl\n#chmod +x /usr/local/awstats/wwwroot/cgi-bin/awstats.pl\n#chmod +x /usr/local/awstats/tools/awstats_buildstaticpages.pl\n#用来存放swstats的数据文件\n#mkdir /var/lib/awstats\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e二.创建配置文件\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e#cd /usr/local/awstats/tools/\n#perl ./awstats_configure.pl\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e根据提 …\u003c/p\u003e"
September 1, 2011
Linux下如何查看 CPU 信息, 包括位数和多核信息
"\u003cp\u003e\u003cstrong\u003e查看当前操作系统内核信息\u003c/strong\u003e\n# uname -aLinux redcat 2.6.31-20-generic #58-Ubuntu SMP Fri Mar 12 05:23:09 UTC 2010 i686 GNU/Linux\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e查看当前操作系统发行版信息\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e#cat /etc/issue\u003c/p\u003e\n\u003cp\u003eUbuntu 9.10 n l\u003cstrong\u003e查看cpu型号\u003c/strong\u003e# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c\u003c/p\u003e\n\u003cp\u003e2 Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz\u003c/p\u003e\n\u003cp\u003e(看到有2个逻辑CPU, 也知道了CPU型号)\u003cstrong\u003e查看物理cpu颗数\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e# cat /proc/cpuinfo | grep physical | uniq -c2 physical id : 0\u003c/p\u003e\n\u003cp\u003e(说明实际上是1颗2核的CPU)\u003cstrong\u003e查看cpu运行模式\u003c/strong\u003e\u003c/p\u003e\n\u003ch1 id=\"getconf-long_bit32说明当前cpu运行在32bit模式下-但不代表cpu不支持64bit查看cpu是否支持64bitcat-proccpuinfo--grep-flags--grep--lm---wc-l2结果大于0-说明支持64bit计算-lm指long-mode-支持lm则是64bit查看cpu信息概要昨天看aix的时候刚发现的在ubuntu上竟然也有lscpuarchitecture-i686-架构686\"\u003egetconf LONG_BIT32(说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)\u003cstrong\u003e查看cpu是否支持64bit\u003c/strong\u003e# cat /proc/cpuinfo | grep flags | …\u003c/h1\u003e"
September 1, 2011
linux 下如何查看和踢除正在登陆的其它用户
"\u003cp\u003e如何在linux下查看当前登录的用户,并且踢掉你认为应该踢掉的用户?\n请使用who这个命令来查看当前正在登录的用户\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[root@localhost http]# who\nroot tty1 Apr 9 13:17\nhttp pts/0 Apr 16 15:13 (192.168.8.235)\nhttp pts/1 Apr 16 15:13 (192.168.8.235)\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e注意:可能有朋友马上要叫出来了:“什么?!有3个用户在登录!我被黑了!”,呵呵,开玩笑了~~上面的消息告诉我们:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003etty\u003c/strong\u003e是指在任何一个虚拟控制台登录则产生一个tty,比如你插上显示器登录主机,就会增加一个tty.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003epts\u003c/strong\u003e是每一个远程连接都会产生的,比如我现在使用ftp客户端连接到主机上,主机就会产生一个pts,事实上上面的192.168.8.235就是我,那两个http就我的连接。\ntty和pts详见:\u003c/p\u003e\n\u003cp\u003e要踢出某个用户以及该用户运行的程序(很野蛮),请采用如下方法:\n比如:想踢除http这个用户和他的所有开启的程序执行下面命令\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003epkill -u http\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e注意:这个命令实际上很危险,要相当小心的执行!!\n说他危险的 …\u003c/p\u003e"
September 1, 2011
LINUX下判断CPU和系统是32位还是64位
"\u003cp\u003e\u003cstrong\u003e判断操作系统是32位还是64位的方法:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e输入如下命令:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e$ uname -a\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e输出:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ex86_64 GNU/Linux 表示64位内核\u003c/p\u003e\n\u003cp\u003ei386/i486/i586/i686 表示32位内核\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e判断Linux kernel是32位还是64位的方法:\u003c/p\u003e\n\u003cp\u003e输入如下命令:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e$ cat /proc/cpuinfo |grep flags\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e输出:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003elm(long mode) 表示64位CPU\u003c/p\u003e\n\u003cp\u003eProtoected 表示32位CPU\u003c/p\u003e\n\u003cp\u003eReal 表示16位CPU\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e==================================================================\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e在LINUX下怎样决断你的CPU是32位还是64位?\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e打入下面的命令\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003egrep flags /proc/cpuinfo\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e输出\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eflags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi …\u003c/p\u003e\u003c/blockquote\u003e"
August 31, 2011
linux 系统tty、pty和pts 的概念及区别
"\u003cp\u003e\u003cstrong\u003e基本概念:\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003etty(终端设备的统称):\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003etty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。\u003c/p\u003e\n\u003cp\u003e终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003epty(虚拟终端):\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty)\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003epts/ptmx(pts/ptmx结合使用,进而实现pty):\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003epts(pseudo-terminal slave)是pty的实现方法,与ptmx(pseudo-terminal master)配合使用实现pty。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinux终端:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1、串行端口终端(/dev/ttySn)\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e串 行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常 …\u003c/p\u003e"