﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-It Smils-随笔分类-Linux</title><link>http://www.cppblog.com/ronliu/category/7353.html</link><description>思绪的自留地</description><language>zh-cn</language><lastBuildDate>Thu, 08 Jan 2009 01:13:32 GMT</lastBuildDate><pubDate>Thu, 08 Jan 2009 01:13:32 GMT</pubDate><ttl>60</ttl><item><title>socket编程之端口占用 及socket高级选项</title><link>http://www.cppblog.com/ronliu/archive/2009/01/06/71312.html</link><dc:creator>ronliu</dc:creator><author>ronliu</author><pubDate>Tue, 06 Jan 2009 03:52:00 GMT</pubDate><guid>http://www.cppblog.com/ronliu/archive/2009/01/06/71312.html</guid><wfw:comment>http://www.cppblog.com/ronliu/comments/71312.html</wfw:comment><comments>http://www.cppblog.com/ronliu/archive/2009/01/06/71312.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ronliu/comments/commentRss/71312.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ronliu/services/trackbacks/71312.html</trackback:ping><description><![CDATA[现象：服务器端意外退出后马上重启，提示端口绑定错误，端口正在使用中。稍等一会后再次重启，可以正常运行。<br>可以设置socket的选项为SO_REUSEADDR，使其允许完全重复的绑定。<br>&nbsp;&nbsp;&nbsp; int rc = 1;<br>&nbsp;&nbsp;&nbsp; setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&amp;rc, sizeof(rc));<br>&nbsp;&nbsp;&nbsp; bind(fd, (struct sockaddr *) &amp;addr, sizeof(addr));<br><br>setsockopt的函数原型为：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其中optval为选项的开关标志符，例如我使用rc＝1开启SO_REUSEADDR。<br>
<br>fcntl 文件控制，file control，譬如控制socket为非阻塞IO，信号驱动IO等。类似的有ioctl<br> <img src ="http://www.cppblog.com/ronliu/aggbug/71312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ronliu/" target="_blank">ronliu</a> 2009-01-06 11:52 <a href="http://www.cppblog.com/ronliu/archive/2009/01/06/71312.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux笔记</title><link>http://www.cppblog.com/ronliu/archive/2008/11/09/66414.html</link><dc:creator>ronliu</dc:creator><author>ronliu</author><pubDate>Sun, 09 Nov 2008 06:07:00 GMT</pubDate><guid>http://www.cppblog.com/ronliu/archive/2008/11/09/66414.html</guid><wfw:comment>http://www.cppblog.com/ronliu/comments/66414.html</wfw:comment><comments>http://www.cppblog.com/ronliu/archive/2008/11/09/66414.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ronliu/comments/commentRss/66414.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ronliu/services/trackbacks/66414.html</trackback:ping><description><![CDATA[<p>linux目录架构<br>/&nbsp;&nbsp; 根目录<br>/bin&nbsp;&nbsp;&nbsp; 常用的命令 binary file 的目錄<br>/boot&nbsp;&nbsp; 存放系统启动时必须读取的档案，包括核心 (kernel) 在内<br>&nbsp;&nbsp;&nbsp;&nbsp; /boot/grub/menu.lst&nbsp;&nbsp; GRUB设置<br>&nbsp;&nbsp;&nbsp;&nbsp; /boot/vmlinuz&nbsp;&nbsp; 内核<br>&nbsp;&nbsp;&nbsp;&nbsp; /boot/initrd&nbsp;&nbsp;&nbsp;&nbsp; 核心解壓縮所需 RAM Disk<br>/dev&nbsp;&nbsp;&nbsp; 系统周边设备<br>/etc&nbsp;&nbsp;&nbsp; 系统相关设定文件<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/DIR_COLORS&nbsp;&nbsp; 设定颜色<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/HOSTNAME&nbsp;&nbsp; 设定用户的节点名<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/NETWORKING&nbsp;&nbsp; 只有YES标明网络存在<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/host.conf 文件说明用户的系统如何查询节点名<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/hosts 设定用户自已的IP与名字的对应表<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/hosts.allow 设置允许使用inetd的机器使用<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/hosts.deny 设置不允许使用inetd的机器使用<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/hosts.equiv 设置远端机不用密码<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/inetd.conf 设定系统网络守护进程inetd的配置<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/gateways 设定路由器<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/protocols 设定系统支持的协议<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/named.boot 设定本机为名字服务器的配置文件<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/sysconfig/network-scripts/ifcfg-eth0&nbsp;&nbsp; 设置IP<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/resolv.conf&nbsp;&nbsp;&nbsp; 设置DNS&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/X11&nbsp; X Window的配置文件,xorg.conf 或 XF86Config 這兩個 X Server 的設定檔<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/fstab&nbsp;&nbsp;&nbsp; 记录开机要mount的文件系统<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/inittab 设定系统启动时init进程将把系统设置成什么样的runlevel<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/issue 记录用户登录前显示的信息<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/group 设定用户的组名与相关信息<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/passwd 帐号信息<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/shadow 密码信息<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/sudoers 可以sudo命令的配置文件<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/securetty 设定哪些终端可以让root登录<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/login.defs 所有用户登录时的缺省配置<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/exports 设定NFS系统用的<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/init.d/&nbsp;&nbsp; 所有服務的預設啟動 script 都是放在這裡的，例如要啟動或者關閉<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/xinetd.d/&nbsp; 這就是所謂的 super daemon 管理的各項服務的設定檔目錄<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/modprobe.conf&nbsp;&nbsp; 内核模块额外参数设定<br>&nbsp;&nbsp;&nbsp;&nbsp; /etc/syslog.conf&nbsp;&nbsp; 日志设置文件<br>/home&nbsp;&nbsp; 使用者家目录<br>/lib&nbsp;&nbsp;&nbsp; 系统会使用到的函数库<br>&nbsp;&nbsp;&nbsp;&nbsp; /lib/modules&nbsp;&nbsp; kernel 的相关模块<br>&nbsp;&nbsp;&nbsp;&nbsp; /var/lib/rpm&nbsp;&nbsp; rpm套件安装处<br>/lost+found&nbsp;&nbsp;&nbsp; 系統不正常產生錯誤時，會將一些遺失的片段放置於此目錄下<br>/mnt&nbsp;&nbsp;&nbsp;&nbsp; 外设的挂载点<br>/media&nbsp;&nbsp; 与/mnt类似<br>/opt&nbsp;&nbsp;&nbsp;&nbsp; 主机额外安装的软件<br>/proc&nbsp;&nbsp;&nbsp; 虚拟目录，是内存的映射<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /proc/version&nbsp;&nbsp; 内核版本<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /proc/sys/kernel&nbsp;&nbsp; 系统内核功能<br>/root&nbsp;&nbsp;&nbsp; 系统管理员的家目录<br>/sbin&nbsp;&nbsp;&nbsp; 系统管理员才能执行的指令<br>/srv&nbsp;&nbsp;&nbsp;&nbsp; 一些服務啟動之後，這些服務所需要取用的資料目錄<br>/tmp&nbsp;&nbsp;&nbsp;&nbsp; 一般使用者或者是正在執行的程序暫時放置檔案的地方<br>/usr&nbsp;&nbsp;&nbsp;&nbsp; 最大的目录，存许应用程序和文件<br>&nbsp;&nbsp;&nbsp; /usr/X11R6：&nbsp;&nbsp; X-Window目录<br>&nbsp;&nbsp;&nbsp; /usr/src：&nbsp;&nbsp;&nbsp; Linux源代码<br>&nbsp;&nbsp;&nbsp; /usr/include：系统头文件<br>&nbsp;&nbsp;&nbsp; /usr/openwin 存放SUN的OpenWin <br>&nbsp;&nbsp;&nbsp; /usr/man 在线使用手册<br>&nbsp;&nbsp;&nbsp; /usr/bin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用者可執行的 binary file 的目錄<br>&nbsp;&nbsp;&nbsp; /usr/local/bin&nbsp;&nbsp;&nbsp;&nbsp; 使用者可執行的 binary file 的目錄<br>&nbsp;&nbsp;&nbsp; /usr/lib&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 系统会使用到的函数库<br>&nbsp;&nbsp;&nbsp; /usr/local/lib&nbsp;&nbsp;&nbsp;&nbsp; 系统会使用到的函数库<br>&nbsp;&nbsp;&nbsp; /usr/sbin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 系统管理员才能执行的指令<br>&nbsp;&nbsp;&nbsp; /usr/local/sbin&nbsp;&nbsp;&nbsp; 系统管理员才能执行的指令<br>/var&nbsp;&nbsp; 日志文件<br>&nbsp;&nbsp;&nbsp; /var/log/secure&nbsp;&nbsp;&nbsp; 記錄登入系統存取資料的檔案，例如 pop3, ssh, telnet, ftp 等都會記錄在此檔案中<br>&nbsp;&nbsp;&nbsp; /var/log/wtmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 記錄登入者的訊息資料, last<br>&nbsp;&nbsp;&nbsp; /var/log/messages&nbsp; 幾乎系統發生的錯誤訊息<br>&nbsp;&nbsp;&nbsp; /var/log/boot.log&nbsp; 記錄開機或者是一些服務啟動的時候，所顯示的啟動或關閉訊息<br>&nbsp;&nbsp;&nbsp; /var/log/maillog&nbsp;&nbsp; 紀錄郵件存取或往來( sendmail 與 pop3 )的使用者記錄<br>&nbsp;&nbsp;&nbsp; /var/log/cron&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 記錄 crontab 這個例行性服務的內容<br>&nbsp;&nbsp;&nbsp; /var/log/httpd, /var/log/news, /var/log/mysqld.log, /var/log/samba, /var/log/procmail.log：<br>分別是幾個不同的網路服務的記錄檔 <p>一些常用的基本命令:<br>uname -a&nbsp;&nbsp;&nbsp; 查看内核版本<br>ls -al&nbsp;&nbsp;&nbsp; 显示所有文件的属性<br>pwd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示当前路径<br>cd -&nbsp;&nbsp;&nbsp; 返回上一次目录&nbsp;&nbsp;&nbsp;&nbsp; cd ~&nbsp;&nbsp;&nbsp; 返回主目录<br>date s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置时间、日期<br>cal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示日历&nbsp;&nbsp;&nbsp;&nbsp; cal 2006<br>bc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 计算器具<br>man&nbsp; &amp; info&nbsp;&nbsp;&nbsp;&nbsp; 帮助手册<br>locale&nbsp;&nbsp;&nbsp;&nbsp; 显示当前字体&nbsp;&nbsp;&nbsp;&nbsp; locale -a&nbsp;&nbsp;&nbsp; 所有可用字体&nbsp;&nbsp;&nbsp;&nbsp; /etc/sysconfig/i18n设置文件<br>LANG=en&nbsp;&nbsp;&nbsp; 使用英文字体<br>sync&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将数据同步写入硬盘<br>shutdonw -h now &amp; half &amp; poweroff&nbsp; 关机<br>reboot&nbsp;&nbsp;&nbsp;&nbsp; 重启<br>startx&nbsp; &amp;&nbsp; init 5&nbsp;&nbsp; 进入图形介面<br>/work&nbsp; &amp; ?work&nbsp;&nbsp;&nbsp; 向上、下查找文档内容<br>chgrp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 改变档案群组&nbsp; chgrp testing install.log&nbsp;&nbsp;&nbsp; <br>chown&nbsp;&nbsp;&nbsp;&nbsp; 改变所属人&nbsp;&nbsp; chown root:root install.log<br>chmod&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 改变属性&nbsp;&nbsp;&nbsp;&nbsp; chmod 777 install.log&nbsp;&nbsp;&nbsp;&nbsp; read=4&nbsp; write=2&nbsp; execute=1<br>cp&nbsp;&nbsp; 复制&nbsp;&nbsp; cp filename<br>rm&nbsp;&nbsp; 删除文件&nbsp; rm -rf filename&nbsp;&nbsp; 强制删除文件<br>rmdir&nbsp;&nbsp; 删除文件夹<br>mv&nbsp; 移动&nbsp;&nbsp;&nbsp; mv 123.txt 222.txt&nbsp; 重命名<br>mkdir&nbsp;&nbsp;&nbsp;&nbsp; 创建文件夹<br>touch&nbsp;&nbsp;&nbsp;&nbsp; 创建文件 更新当前时间<br>cat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由第一行开始显示&nbsp;&nbsp;&nbsp;&nbsp; cat |more&nbsp; 分页<br>nl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在内容前加行号<br>more&nbsp; &amp;&nbsp; less&nbsp;&nbsp; 一面一面翻动<br>head -n filename&nbsp;&nbsp; 显示第N行内容<br>tail -n filename&nbsp; 显示后N行内容<br>od&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示非纯文档<br>df -h 显示分区空间<br>du&nbsp; 显示目录或文件的大小<br>fdisk&nbsp;&nbsp; 分区设置&nbsp;&nbsp;&nbsp; fdisk -l /dev/hda&nbsp; 显示硬盘分区状态<br>mkfs&nbsp;&nbsp;&nbsp; 建立各种文件系统&nbsp; mkfs -t ext3&nbsp; /dev/ram15&nbsp;&nbsp; <br>fsck&nbsp;&nbsp;&nbsp; 检查和修复LINUX档案<br>ln&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 硬链接&nbsp;&nbsp; ln -s&nbsp; 软件链接<br>whereis&nbsp;&nbsp; 查找命令<br>locate&nbsp;&nbsp;&nbsp; 查找<br>find&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查找&nbsp;&nbsp; find / -name "***.***"<br>which&nbsp;&nbsp;&nbsp;&nbsp; 查看工具<br>whoami&nbsp;&nbsp;&nbsp; 显示当前用户<br>gcc -v&nbsp;&nbsp;&nbsp; 查看GCC版本<br>chattr +i filename&nbsp; 禁止删除&nbsp;&nbsp; chattr -i filename&nbsp; 取消禁止<br>lsattr&nbsp;&nbsp;&nbsp; 显示隐藏档属性<br>updatedb&nbsp; 更新资料库<br>mke2fs&nbsp;&nbsp;&nbsp; 格式化&nbsp;&nbsp; mkfs -t ext3 <br>dd if=/etc/passwd of=/tmp/passwd.bak&nbsp;&nbsp;&nbsp; 备份<br>mount&nbsp;&nbsp;&nbsp;&nbsp; 列出系统所有的分区<br>mount -t iso9660 /dev/cdrom /mnt/cdrom&nbsp;&nbsp; 挂载光盘<br>mount -t vfat /dev/fd0 /mnt/floppy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 挂载软盘<br>mount -t vfat -o iocharset=utf8,umask=000 /dev/hda2 /mnt/hda2&nbsp;&nbsp; 挂载fat32分区<br>mount -t ntfs -o nls=utf8,umask=000 /dev/hda3 /mnt/hda3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 挂载ntfs分区<br>Linux-NTFS Project: <a href="http://linux-ntfs.sourceforge.net/">http://linux-ntfs.sourceforge.net/</a><br>umount /mnt/hda3&nbsp; 缷载<br>ifconfig&nbsp;&nbsp; 显示或设置网络设备<br>service network restart&nbsp;&nbsp; 重启网卡<br>ifdown eth0&nbsp; 关闭网卡<br>ifup eth0&nbsp;&nbsp;&nbsp; 开启网卡<br>clear&nbsp;&nbsp;&nbsp; 清屏<br>history&nbsp;&nbsp;&nbsp; 历史记录&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !55&nbsp; 执行第55个指令<br>stty&nbsp;&nbsp; 设置终端&nbsp;&nbsp;&nbsp; stty -a<br>fdisk /mbr&nbsp;&nbsp; 删除GRUB<br>at&nbsp;&nbsp;&nbsp;&nbsp; 僅進行一次的工作排程<br>crontab&nbsp;&nbsp; 循環執行的例行性命令&nbsp;&nbsp;&nbsp; [e]编辑,[l]显示,[r]删除任务<br>&amp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 后台运行程序&nbsp;&nbsp;&nbsp; tar -zxvf 123.tar.gz &amp; ---------&gt;后台运行<br>jobs&nbsp;&nbsp;&nbsp; 观看后台暂停的程序&nbsp;&nbsp; jobs -l<br>fg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将后台程序调到前台&nbsp;&nbsp; fg n ------&gt;n是数字,可以指定进行那个程序<br>bg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 让工作在后台运行<br>kill&nbsp;&nbsp;&nbsp; 结束进程&nbsp;&nbsp;&nbsp; kill -9 PID&nbsp;&nbsp;&nbsp;&nbsp; [9]强制结束,[15]正常结束,[l]列出可用的kill信号<br>ps aux&nbsp; 查看后台程序<br>top&nbsp;&nbsp;&nbsp;&nbsp; 查看后台程序&nbsp;&nbsp; top -d 2&nbsp;&nbsp;&nbsp; 每两秒更新一次&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; top -d 2 -p10604&nbsp;&nbsp; 观看某个PID<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; top -b -n 2 &gt; /tmp/top.txt -----&gt;將 top 的資訊進行 2 次，然後將結果輸出到 /tmp/top.txt&nbsp;&nbsp;&nbsp; <br>pstree&nbsp;&nbsp; 以树状图显示程序&nbsp;&nbsp;&nbsp; [A]以 ASCII 來連接, [u]列出PID, [p]列出帐号<br>killall&nbsp;&nbsp; 要刪除某個服務&nbsp;&nbsp;&nbsp; killall -9 httpd<br>free&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示内存状态&nbsp;&nbsp;&nbsp;&nbsp; free -m&nbsp; --------&gt;以M为单位显示<br>uptime&nbsp;&nbsp;&nbsp; 显示目前系统开机时间<br>netstat&nbsp;&nbsp; 显示网络状态&nbsp;&nbsp;&nbsp; netstat -tulnp------&gt;找出目前系統上已在監聽的網路連線及其 PID<br>dmesg&nbsp;&nbsp;&nbsp;&nbsp; 显示开机信息&nbsp;&nbsp;&nbsp; demsg | more<br>nice&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置优先权&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nice -n -5 vi &amp; -----&gt;用 root 給一個 nice 植為 -5 ，用於執行 vi <br>renice&nbsp;&nbsp;&nbsp; 调整已存在优先权<br>runlevel&nbsp; 显示目前的runlevel<br>depmod&nbsp;&nbsp;&nbsp; 分析可载入模块的相依性<br>lsmod&nbsp;&nbsp;&nbsp;&nbsp; 显示已载入系统的模块<br>modinfo&nbsp;&nbsp; 显示kernel模块的信息<br>insmod&nbsp;&nbsp;&nbsp; 载入模块<br>modprobe&nbsp;&nbsp; 自动处理可载入模块<br>rmmod&nbsp;&nbsp;&nbsp;&nbsp; 删除模块<br>chkconfig&nbsp;&nbsp; 检查，设置系统的各种服务&nbsp;&nbsp;&nbsp;&nbsp; chkconfig --list -----&gt;列出各项服务状态<br>ntsysv&nbsp;&nbsp;&nbsp;&nbsp; 设置系统的各种服务<br>cpio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 备份文件 <p>压缩命令：<br> *.Z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; compress 程式壓縮的檔案；<br> *.bz2&nbsp;&nbsp;&nbsp; bzip2 程式壓縮的檔案；<br> *.gz&nbsp;&nbsp;&nbsp;&nbsp; gzip 程式壓縮的檔案；<br> *.tar&nbsp;&nbsp;&nbsp; tar 程式打包的資料，並沒有壓縮過；<br> *.tar.gz tar 程式打包的檔案，其中並且經過 gzip 的壓縮<br>compress filename&nbsp; 压缩文件 加[-d]解压&nbsp; uncompress<br>gzip filename&nbsp;&nbsp; 压缩 加[-d]解压&nbsp; zcat 123.gz 查看压缩文件内容<br>bzip2 -z filename&nbsp; 压缩 加[-d]解压&nbsp;&nbsp; bzcat filename.bz2&nbsp; 查看压缩文件内容<br>tar -cvf /home/123.tar /etc&nbsp; 打包，不压缩<br>tar -xvf 123.tar&nbsp;&nbsp; 解开包<br>tar -zxvf /home/123.tar.gz&nbsp; 以gzip解压<br>tar -jxvf /home/123.tar.bz2&nbsp; 以bzip2解压<br>tar -ztvf /tmp/etc.tar.gz&nbsp;&nbsp; 查看tar内容<br>cpio -covB&nbsp; &gt; [file|device]&nbsp;&nbsp; 份份<br>cpio -icduv &lt; [file|device]&nbsp;&nbsp; 还原 <p>vi一般用法<br>一般模式 编辑模式 指令模式<br>h 左&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a,i,r,o,A,I,R,O&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :w 保存<br>j 下 进入编辑模式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :w! 强制保存<br>k 上&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dd 删除光标当前行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :q! 不保存离开<br>l 右&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ndd 删除n行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :wq! 保存后离开<br>0 移动到行首&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yy 复制当前行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :e! 还原原始档<br>$ 移动到行尾&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nyy 复制n行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :w filename 另存为<br>H 屏幕最上&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p,P 粘贴&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :set nu 设置行号<br>M 屏幕中央&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; u&nbsp; 撤消&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :set nonu 取消行号<br>L 屏幕最下&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Ctrl]+r 重做上一个动作&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ZZ 保存离开<br>G 档案最后一行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ctrl]+z 暂停退出&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :set nohlsearch&nbsp;&nbsp; 永久地关闭高亮显示<br>/work 向下搜索&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :sp 同时打开两个文档<br>?work 向上搜索&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Ctrl]+w 两个文档设换<br>gg 移动到档案第一行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :nohlsearch&nbsp;&nbsp;&nbsp; 暂时关闭高亮显示 <p>认识SHELL<br>alias&nbsp;&nbsp;&nbsp; 显示当前所有的命令别名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alias lm="ls -al"&nbsp;&nbsp; 命令别名&nbsp;&nbsp;&nbsp; unalias lm 取消命令别名<br>type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 类似which<br>exprot&nbsp;&nbsp;&nbsp; 设置或显示环境变量<br>exprot PATH="$PATH":/sbin&nbsp; 添加/sbin入PATH路径<br>echo $PATH&nbsp;&nbsp;&nbsp; 显示PATH路径<br>bash&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 进入子程序<br>name=yang&nbsp;&nbsp;&nbsp;&nbsp; 设定变量<br>unset name&nbsp;&nbsp;&nbsp; 取消变量<br>echo $name&nbsp;&nbsp;&nbsp; 显示变量的内容<br>myname="$name its me"&nbsp;&nbsp; &amp;&nbsp;&nbsp; myname='$name its me'&nbsp;&nbsp;&nbsp;&nbsp; 单引号时$name失去变量内容<br>ciw=/etc/sysconfig/network-scripts/&nbsp;&nbsp;&nbsp;&nbsp; 设置路径<br>env&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 列出所有环境变量<br>echo $RANDOM&nbsp;&nbsp;&nbsp; 显示随意产生的数<br>set&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置SHELL<br>PS1='[\u@\h \w \A #\#]\$ '&nbsp;&nbsp;&nbsp;&nbsp; 提示字元的設定<br>&nbsp;&nbsp; [root@linux ~]# read [-pt] variable&nbsp;&nbsp;&nbsp;&nbsp; -----------读取键盘输入的变量<br>參數：<br>&nbsp;&nbsp; -p&nbsp; ：後面可以接提示字元！<br>&nbsp;&nbsp; -t&nbsp; ：後面可以接等待的『秒數！』<br>declare&nbsp;&nbsp;&nbsp; 声明 shell 变量<br>ulimit -a&nbsp;&nbsp; 显示所有限制资料<br> ls /tmp/yang &amp;&amp; echo "exist" || echo "not exist"<br>意思是說，當 ls /tmp/yang 執行後，若正確，就執行echo "exist" ,若有問題，就執行echo "not exist" <br> echo $PATH | cut -d ':' -f 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以:为分隔符,读取第5段内容<br> export | cut -c 10-20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 读取第10到20个字节的内容<br> last | grep 'root'&nbsp;&nbsp;&nbsp; 搜索有root的一行,加[-v]反向搜索<br> cat /etc/passwd | sort&nbsp;&nbsp;&nbsp; 排序显示<br> cat /etc/passwd | wc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示『行、字数、字节数』 <p>正规表示法<br>[root@test root]# grep [-acinv] '搜尋字串' filename<br>參數說明：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -a ：將 binary 檔案以 text 檔案的方式搜尋資料<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -c ：計算找到 '搜尋字串' 的次數<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -i ：忽略大小寫的不同，所以大小寫視為相同<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -n ：順便輸出行號<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -v ：反向選擇，亦即顯示出沒有 '搜尋字串' 內容的那一行！<br> grep -n 'the' 123.txt&nbsp;&nbsp;&nbsp;&nbsp; 搜索the字符 -----------搜尋特定字串<br> grep -n 't[ea]st' 123.txt&nbsp;&nbsp;&nbsp; 搜索test或taste两个字符---------利用 [] 來搜尋集合字元<br> grep -n '[^g]oo' 123.txt&nbsp;&nbsp;&nbsp;&nbsp; 搜索前面不为g的oo-----------向選擇 [^] <br> grep -n '[0-9]' 123.txt&nbsp; 搜索有0-9的数字<br> grep -n '^the' 123.txt 搜索以the为行首-----------行首搜索^<br> grep -n '^[^a-zA-Z]' 123.txt&nbsp; 搜索不以英文字母开头<br> grep -n '[a-z]$' 123.txt&nbsp;&nbsp;&nbsp; 搜索以a-z结尾的行---------- 行尾搜索$<br> grep -n 'g..d' 123.txt&nbsp;&nbsp;&nbsp;&nbsp; 搜索开头g结尾d字符----------任意一個字元 . <br> grep -n 'ooo*' 123.txt&nbsp;&nbsp;&nbsp;&nbsp; 搜索至少有两个oo的字符---------重複字元 *<br>sed&nbsp;&nbsp;&nbsp; 文本流编辑器 利用脚本命令来处理文本文件<br>awd&nbsp;&nbsp;&nbsp; 模式扫描和处理语言<br> nl 123.txt | sed '2,5d'&nbsp;&nbsp; 删除第二到第五行的内容<br>diff&nbsp;&nbsp;&nbsp;&nbsp; 比较文件的差异<br>cmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 比较两个文件是否有差异<br>patch&nbsp;&nbsp;&nbsp; 修补文件<br>pr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 要打印的文件格式化 <p>帐号管理<br>/etc/passwd&nbsp;&nbsp;&nbsp; 系统帐号信息<br>/etc/shadow&nbsp;&nbsp;&nbsp; 帐号密码信息 经MD5 32位加密<br>在密码栏前面加『 * 』『 ! 』禁止使用某帐号<br>/etc/group&nbsp;&nbsp;&nbsp;&nbsp; 系统群组信息<br>/etc/gshadow<br>newgrp&nbsp;&nbsp;&nbsp; 改变登陆组<br>useradd&nbsp; &amp;&nbsp; adduser&nbsp;&nbsp;&nbsp; 建立新用户&nbsp; ---------&gt; useradd -m test&nbsp; 自动建立用户的登入目录<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; useradd -m -g pgroup test ---------&gt;指定所属级<br>/etc/default/useradd&nbsp;&nbsp; 相关设定<br>/etc/login.defs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UID/GID 有關的設定<br>passwd&nbsp;&nbsp;&nbsp; 更改密码 -----------&gt; passwd test<br>usermod&nbsp;&nbsp; 修改用户帐号<br>userdel&nbsp;&nbsp; 删除帐号 -----------&gt;userdel -r test<br>chsh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 更换登陆系统时使用的SHELL&nbsp;&nbsp; [-l]显示可用的SHELL;[-s]修改自己的SHELL<br>chfn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 改变finger指令显示的信息<br>finger&nbsp;&nbsp;&nbsp; 查找并显示用户信息<br>id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示用户的ID -----------&gt;&nbsp; id test<br>groupadd&nbsp;&nbsp; 添加组<br>groupmod&nbsp;&nbsp; 与usermod类似<br>groupdel&nbsp;&nbsp; 删除组<br>su test&nbsp;&nbsp;&nbsp; 更改用户&nbsp;&nbsp; su -&nbsp;&nbsp;&nbsp; 进入root,且使用root的环境变量<br>sudo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以其他身份来执行指令<br>visudo&nbsp;&nbsp;&nbsp;&nbsp; 编辑/etc/sudoers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 加入一行『 test ALL=(ALL) ALL 』<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %wheel ALL = (ALL) ALL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 系统里所有wheel群组的用户都可用sudo<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %wheel ALL = (ALL) NOPASSWD: ALL&nbsp;&nbsp;&nbsp;&nbsp; wheel群组所有用户都不用密码NOPASSWD<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; User_Alias ADMPW = vbird, dmtsai, vbird1, vbird3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 加入ADMPW组<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADMPW ALL = NOPASSWD: !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, \<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !/usr/bin/passwd root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以更改使用者密码,但不能更改root密码 (在指令前面加入 ! 代表不可)<br>PAM (Pluggable Authentication Modules, 嵌入式模組)<br>who &amp; w&nbsp;&nbsp;&nbsp;&nbsp; 看谁在线<br>last&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最近登陆主机的信息<br>lastlog&nbsp;&nbsp;&nbsp;&nbsp; 最近登入的時間 读取 /var/log/lastlog <br>talk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 与其他用户交谈<br>write&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 发送信息&nbsp;&nbsp;&nbsp; write test&nbsp;&nbsp; [ctrl]+d 发送<br>mesg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置终端机的写入权限&nbsp;&nbsp;&nbsp; mesg n 禁止接收&nbsp;&nbsp;&nbsp;&nbsp; mesg y <br>wall&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 向所有用户发送信息&nbsp;&nbsp;&nbsp; wall this is q test<br>mail&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 写mail&nbsp;&nbsp; <br>/etc/default/useradd&nbsp;&nbsp;&nbsp; 家目录默认设置 <p>quota&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示磁盘已使用的空间与限制&nbsp;&nbsp;&nbsp;&nbsp; quota -guvs -----&gt;秀出目前 root 自己的 quota 限制值<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; quota -vu&nbsp;&nbsp; 查询<br>quotacheck&nbsp;&nbsp; 检查磁盘的使用空间与限制&nbsp;&nbsp;&nbsp;&nbsp; quotacheck -avug&nbsp; -----&gt;將所有的在 /etc/mtab 內，含有 quota 支援的 partition 進行掃瞄<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [-m] 强制扫描<br>&nbsp;&nbsp;&nbsp;&nbsp; quota一定要是独立的分区,要有quota.user和quota.group两件文件,在/etc/fstab添加一句:<br>&nbsp;&nbsp;&nbsp;&nbsp; /dev/hda3 /home ext3 defaults,usrquota,grpquota 1 2<br>&nbsp;&nbsp;&nbsp;&nbsp; chmod 600 quota*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置完成,重启生效<br>edquota&nbsp;&nbsp;&nbsp; 编辑用户或群组的quota&nbsp; [u]用户,[g]群组,[p]复制,[t]设置宽限期限<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edquota -a yang&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edquota -p yang -u young -----&gt;复制<br>quotaon&nbsp;&nbsp;&nbsp; 开启磁盘空间限制&nbsp;&nbsp;&nbsp;&nbsp; quotaon -auvg --------&gt;啟動所有的具有 quota 的 filesystem<br>quotaoff&nbsp;&nbsp; 关闭磁盘空间限制&nbsp;&nbsp;&nbsp;&nbsp; quotaoff -a&nbsp; --------&gt;關閉了 quota 的限制<br>repquota -av&nbsp;&nbsp;&nbsp;&nbsp; 查閱系統內所有的具有 quota 的 filesystem 的限值狀態 <p>Quota 從開始準備 filesystem 的支援到整個設定結束的主要的步驟大概是：<br>1、設定 partition 的 filesystem 支援 quota 參數：<br>由於 quota 必須要讓 partition 上面的 filesystem 支援才行，一般來說， 支援度最好的是 ext2/ext3 ，<br>其他的 filesystem 類型鳥哥我是沒有試過啦！ 啟動 filesystem 支援 quota 最簡單就是編輯 /etc/fstab ，<br>使得準備要開放的 quota 磁碟可以支援 quota 囉；<br>2、建立 quota 記錄檔：<br>剛剛前面講過，整個 quota 進行磁碟限制值記錄的檔案是 aquota.user/aquota.group，<br>要建立這兩個檔案就必須要先利用 quotacheck 掃瞄才行喔！<br>3、編輯 quota 限制值資料：<br>再來就是使用 edquota 來編輯每個使用者或群組的可使用空間囉；<br>4、重新掃瞄與啟動 quota ：<br>設定好 quota 之後，建議可以再進行一次 quotacheck ，然後再以 quotaon 來啟動吧！ <p>开机流程简介<br>1、載入 BIOS 的硬體資訊，並取得第一個開機裝置的代號；<br>2、讀取第一個開機裝置的 MBR 的 boot Loader (亦即是 lilo, grub, spfdisk 等等) 的開機資訊；<br>3、載入 Kernel 作業系統核心資訊， Kernel 開始解壓縮，並且嘗試驅動所有硬體裝置；<br>4、Kernel 執行 init 程式並取得 run-level 資訊；<br>5、init 執行 /etc/rc.d/rc.sysinit 檔案；<br>6、啟動核心的外掛模組 (/etc/modprobe.conf)；<br>7、init 執行 run-level 的各個批次檔( Scripts )；<br>8、init 執行 /etc/rc.d/rc.local 檔案；<br>9、執行 /bin/login 程式，並等待使用者登入；<br>10、登入之後開始以 Shell 控管主機。 <p>在/etc/rc.d/rc3.d內,以S开头的为开机启动,以K开头的为关闭,接着的数字代表执行顺序 <p>GRUB vga设定<br>彩度\解析度&nbsp; 640x480&nbsp; 800x600&nbsp; 1024x768&nbsp; 1280x1024&nbsp;&nbsp; bit <br>&nbsp;&nbsp;&nbsp; 256&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 769&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 771&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 773&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 775&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8 bit <br>&nbsp;&nbsp; 32768&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 784&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 787&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 790&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 793&nbsp;&nbsp;&nbsp;&nbsp; 15 bit <br>&nbsp;&nbsp; 65536&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 785&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 788&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 791&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 794&nbsp;&nbsp;&nbsp;&nbsp; 16 bit <br>&nbsp;&nbsp; 16.8M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 786&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 789&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 792&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 795&nbsp;&nbsp;&nbsp;&nbsp; 32 bit  <p>./configure&nbsp;&nbsp;&nbsp; 检查系统信息&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ./configure --help | more&nbsp; 帮助信息<br>make clean&nbsp;&nbsp;&nbsp;&nbsp; 清除之前留下的文件<br>make&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 编译<br>make install&nbsp;&nbsp; 安装 <p>rpm -q&nbsp; -----&gt;查询是否安装&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rpm -ql ------&gt;查询该套件所有的目录<br>rpm -qi -----&gt;查询套件的说明资料&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rpm -qc[d] -----&gt;设定档与说明档<br>rpm -ivh&nbsp; ----&gt;安装&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rpm -V&nbsp; --------&gt;查看套件有否更动过<br>rpm -e&nbsp; ------&gt;删除&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rpm -Uvh -------&gt;升级安装<br>--nodeps -----&gt;强行安装&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --test -----&gt;测试安装</p><img src ="http://www.cppblog.com/ronliu/aggbug/66414.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ronliu/" target="_blank">ronliu</a> 2008-11-09 14:07 <a href="http://www.cppblog.com/ronliu/archive/2008/11/09/66414.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通俗解释socket</title><link>http://www.cppblog.com/ronliu/archive/2008/10/26/65113.html</link><dc:creator>ronliu</dc:creator><author>ronliu</author><pubDate>Sun, 26 Oct 2008 09:09:00 GMT</pubDate><guid>http://www.cppblog.com/ronliu/archive/2008/10/26/65113.html</guid><wfw:comment>http://www.cppblog.com/ronliu/comments/65113.html</wfw:comment><comments>http://www.cppblog.com/ronliu/archive/2008/10/26/65113.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/ronliu/comments/commentRss/65113.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ronliu/services/trackbacks/65113.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; socket是网络编程的基础，本文用打电话来类比socket通信中建立TCP连接的过程。<br>&nbsp;&nbsp;&nbsp; socket函数，表示你买了或者借了一部手机。<br>&nbsp;&nbsp;&nbsp; bind函数，告诉别人你的手机号码，让他们给你打电话。<br>&nbsp;&nbsp;&nbsp; listen函数，打开手机的铃声，而不是静音，这样有电话时可以立马反应。listen函数的第二个参数，最大连接数，表示最多有几个人可以同时拨打你的号码。不过我们的手机，最多只能有一个人打进来，要不然就提示占线。<br>&nbsp;&nbsp;&nbsp; connect函数，你的朋友知道了你的号码，通过这个号码来联系你。在他等待你回应的时候，不能做其他事情，所以connect函数是阻塞的。<br>&nbsp;&nbsp;&nbsp; accept函数，你听到了电话铃声，接电话，accept it！然后&#8220;喂&#8221;一声，你的朋友听到你的回应，知道电话已经打进去了。至此，一个TCP连接建立了。<br>&nbsp;&nbsp;&nbsp; read/write函数，连接建立后，TCP的两端可以互相收发消息，这时候的连接是全双工的。对应打电话中的电话煲。<br>&nbsp;&nbsp;&nbsp; close函数，通话完毕，一方说&#8220;我挂了&#8221;，另一方回应"你挂吧"，然后将连接终止。实际的close(sockfd)有些不同，它不止是终止连接，还把手机也归还，不在占有这部手机，就当是公用电话吧。<br>&nbsp;&nbsp;&nbsp; 注意到，上述连接是阻塞的，你一次只能响应一个用户的连接请求，但在实际网络编程中，一个服务器服务于多个客户，上述方案也就行不通了，怎么办？想一想1860，移动的声讯服务台，也是只有一个号码，它怎么能同时服务那么多人呢？可以这样理解，在你打电话到1860时，总服务台会让一个接线员来为你服务，而它自己却继续监听有没有新的电话接入。在网络编程中，这个过程类似于fork一个子进程，建立实际的通信连接，而主进程继续监听。1860的接线员是有限的，所以当连接的人数达到上线时，它会放首歌给你听，忙等待，直到有新的空闲接线员为止。<br>&nbsp;&nbsp;&nbsp; 实际网络编程中，处理并发的方式还有select/poll/epoll等。<br><br>下面是一个实际的socket通信过程：<br><img alt="" src="http://www.cppblog.com/images/cppblog_com/ronliu/tcpsocket.png" width="554" height="327"><br><br> <img src ="http://www.cppblog.com/ronliu/aggbug/65113.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ronliu/" target="_blank">ronliu</a> 2008-10-26 17:09 <a href="http://www.cppblog.com/ronliu/archive/2008/10/26/65113.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>shell常用命令</title><link>http://www.cppblog.com/ronliu/archive/2008/10/17/64246.html</link><dc:creator>ronliu</dc:creator><author>ronliu</author><pubDate>Fri, 17 Oct 2008 08:48:00 GMT</pubDate><guid>http://www.cppblog.com/ronliu/archive/2008/10/17/64246.html</guid><wfw:comment>http://www.cppblog.com/ronliu/comments/64246.html</wfw:comment><comments>http://www.cppblog.com/ronliu/archive/2008/10/17/64246.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ronliu/comments/commentRss/64246.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ronliu/services/trackbacks/64246.html</trackback:ping><description><![CDATA[面试百度时，面试官问我，如何统计一个文本文件的行数，可以使用一种脚本语言。汗，我告诉他，用for循环，一行行地去读吧。然后听见面试官很小心的咕哝了一句，wc这种常用命令也不知道呀。:(<br>本文只是列出了各个命令的简要功能，欲知详情，man吧！<br><br>ls 显示目录中的文件名<br>ps 查看当前进程快照<br>kill 向进程发送一个信号，如杀死进程<br>more 显示文本文件，但一次只显示一屏<br>sort 按行对文本文件进行排序<br>chmod 改变文件的模式，如可执行+x<br>echo 输出变量的值<br>read 将用户的输入赋给变量<br>env 在一个被改变了的环境中运行程序<br>test 检测文件的类型，比较值。例如检测文件是否存在，字符串比较等<br>touch 检测文件是否存在，如果不存在就创建它<br>rm 删除一个文件或者目录<br>wc 显示文本文件的行数、字数信息<br>cp 复制文件或目录，常用参数-r, -u<br>mkdir 创建目录<br>ln 在文件之间创建链接<br><br>内部命令：<br>break 跳出当前循环<br>continue 跳出本次循环，继续下一次循环<br>：空命令，相当于true的别名<br>. 用来执行shell中的命令，类型与＃include<br>eval 允许你对参数求值，有点像一个而外的$，他给出一个变量值的值<br>exec 将当前的shell替换一个不同的程序，其之后的代码不会执行<br>exit n 退出码 n<br>export 将作为它参数的变量到处到子shell中，作为子进程的环境变量<br>expr 将参数当作表达式来求值，如简单的数学运算<br>`` 对反引号内的代码当作命令执行，求的结果赋给变量<br>return 是函数返回<br>set 为shell设置参数变量 set $(date)，将当前date作为参数<br>shift 所有参数变量左移1个位置$3变为$2<br>trap 用于接收到指定信号后将要采取的行动，如INT CTRL+C。即可以设定Ctrl+C后，程序如何响应。<br>unset 从环境中删除变量或函数<br>find 查找文件 find [path] [option] [test] [action]<br>&nbsp;&nbsp; &nbsp;option包括find深度,是否find mount的文件夹等，test包括name, mtime，action例如print，exec<br><br>编程相关命令：<br>strings 打印文件中的可打印字符，如查看一个可执行文件中的可打印字符。<br>nm 列出对象文件（object files）的符号列表，如查看用gcc编译出来的可执行文件的符号列表。<br>strip&nbsp; 删除对象文件中的符号列表。这样可以使得可执行文件有更小的体积。<br>strace 很强大的命令，显示所有由用户空间程序发出的系统调用。用于调试。<br>  <img src ="http://www.cppblog.com/ronliu/aggbug/64246.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ronliu/" target="_blank">ronliu</a> 2008-10-17 16:48 <a href="http://www.cppblog.com/ronliu/archive/2008/10/17/64246.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>“爱上”重装系统</title><link>http://www.cppblog.com/ronliu/archive/2008/06/15/53388.html</link><dc:creator>ronliu</dc:creator><author>ronliu</author><pubDate>Sun, 15 Jun 2008 15:08:00 GMT</pubDate><guid>http://www.cppblog.com/ronliu/archive/2008/06/15/53388.html</guid><wfw:comment>http://www.cppblog.com/ronliu/comments/53388.html</wfw:comment><comments>http://www.cppblog.com/ronliu/archive/2008/06/15/53388.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ronliu/comments/commentRss/53388.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ronliu/services/trackbacks/53388.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从星期五晚上开始，一直在装系统，甚至于昨天晚上还熬通宵摆弄这东西。只是到目前为止，手头上的这个Linux系统仍然问题重重，不堪使用。明天又是新的一天，工作日，重装系统的爱好就得先放放了。以下是这两天的&#8220;成果&#8221;。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ～修改Grub引导区失败一次，导致RedHat9无法引导，电脑无法启动，借光驱格盘。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ～Ubuntu8.04硬盘安装一次，失败，原因同上，Grub引导出错。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ～Ubuntu8.04 Wubi安装两次，体验了传说中的Ubuntu，但无法上网，基本等同于废物了，比较适合初学者。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ～RedHat9安装一次。字体配置文件丢失，Wine无法安装，无赖重装，但在我的电脑上仅存1天不到。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ～SuSe硬盘安装一次，用的比较舒服，Wine成功，Qt失败，声音解码器失败，gcc编译器向下兼容&#8230;&#8230;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ～U盘安装系统一次，失败，电脑无法从U盘引导，或许是引导盘没做好，但已经没兴趣了，借光驱ing<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ～光盘安装Windows2003一次，将无法引导的那个机器恢复，oye！<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ～比较FC，Ubuntu，Suse，RedHat，各个的优缺点。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其间出过U盘被分区无法识别的乌龙，也学会单用户登录，修改Grub入门，等等，但总的来说，这个周末收获不大。目前这台电脑上幸存三个系统，Suse10，WinXP，Ubuntu(Wubi)。整个周末都耗在这个上面了，很无语。无论如何，进一段时间再重装这台机器了，太无聊。生命中还有很多美好的事情可以体验，比如睡觉！<br><br> <img src ="http://www.cppblog.com/ronliu/aggbug/53388.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ronliu/" target="_blank">ronliu</a> 2008-06-15 23:08 <a href="http://www.cppblog.com/ronliu/archive/2008/06/15/53388.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Linux下挂载FAT盘的问题</title><link>http://www.cppblog.com/ronliu/archive/2008/06/11/52874.html</link><dc:creator>ronliu</dc:creator><author>ronliu</author><pubDate>Wed, 11 Jun 2008 07:03:00 GMT</pubDate><guid>http://www.cppblog.com/ronliu/archive/2008/06/11/52874.html</guid><wfw:comment>http://www.cppblog.com/ronliu/comments/52874.html</wfw:comment><comments>http://www.cppblog.com/ronliu/archive/2008/06/11/52874.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ronliu/comments/commentRss/52874.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ronliu/services/trackbacks/52874.html</trackback:ping><description><![CDATA[一 基础命令<br>&nbsp; &nbsp; 挂载: mount /dev/sda /mnt/usb<br>&nbsp;&nbsp;&nbsp; 卸载: umount /mnt/usb<br>参数:<br>&nbsp;&nbsp;&nbsp; -t vfat 指定挂载盘的类型<br>&nbsp;&nbsp;&nbsp; -o 为挂载指定可选项, 如charset等<br>&nbsp;&nbsp;&nbsp; -l 强制卸载磁盘<br><br>二 乱码<br>&nbsp;&nbsp;&nbsp; 在挂载时需要指定字符集. 对于U盘, mount /dev/sda /mnt/usb -o iocharset=cp936. 对于挂到Linux下的其他Winodw盘, 需要使用vim /etc/fstab命令修改配置文件, /dev/hdb7&nbsp; /mnt/f&nbsp; vfat&nbsp; iocharset=cp936,defaults&nbsp; 0 0.<br>&nbsp;&nbsp;&nbsp; 系统RedHat9.0, 其他系统或有不同, 需要找到对应中文字符集. 如cp950, gb2312<br><br>三 大小写<br>&nbsp;&nbsp;&nbsp; 有些短文件名, 如果全大写, 会显示为全小写. 影响使用. 在挂载时, 加上<span style="font-family: Courier New;">shortname=mixed的参数即可解决.<br><br>四 说明<br>&nbsp;&nbsp;&nbsp; 注意到, 将这些挂载磁盘的选项写入到/etc/fstab中, 可在系统启动时自动加载.<br></span><br>  <img src ="http://www.cppblog.com/ronliu/aggbug/52874.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ronliu/" target="_blank">ronliu</a> 2008-06-11 15:03 <a href="http://www.cppblog.com/ronliu/archive/2008/06/11/52874.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>