<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[阿Tim日志]]></title> 
<link>https://atim.cn/index.php</link> 
<description><![CDATA[专业的php开发者.开发团队的带队人]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[阿Tim日志]]></copyright>
<item>
<link>https://atim.cn/post/1159/</link>
<title><![CDATA[nmap 快速扫描端口]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Wed, 20 Mar 2024 01:07:40 +0000</pubDate> 
<guid>https://atim.cn/post/1159/</guid> 
<description>
<![CDATA[ 
	<div class="code">nmap -sS -Pn -n --open --min-hostgroup 4 --min-parallelism 1024 --min-rtt-timeout 2&nbsp;&nbsp;-T4 -p- -v ip</div>
]]>
</description>
</item><item>
<link>https://atim.cn/post/1158/</link>
<title><![CDATA[Linux系统添加Lets Encrypt证书]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Tue, 19 Mar 2024 13:51:54 +0000</pubDate> 
<guid>https://atim.cn/post/1158/</guid> 
<description>
<![CDATA[ 
	Let's Encrypt在浏览器里能正常访问.<br/>但在linux下出现<br/><div class="code">unable to get local issuer certificate</div><br/>或<br/><div class="code">x509: certificate signed by unknown authority</div><br/>解决方法:<br/>1.https://letsencrypt.org/zh-cn/certificates/ 下载域名证书签名的版本.(我目前的证书用的是R3).下载pem版本.<br/>2.上传根证书(Root CA)到 /usr/local/share/ca-certificates/ (需要修改为.crt扩展名)<br/>3. 更新 CA certificates<br/><div class="code">update-ca-certificates</div>
]]>
</description>
</item><item>
<link>https://atim.cn/post/1151/</link>
<title><![CDATA[升级linux内核后,Vbox共享文件夹失败解决方法]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Tue, 30 Aug 2022 03:42:09 +0000</pubDate> 
<guid>https://atim.cn/post/1151/</guid> 
<description>
<![CDATA[ 
	使用vbox虚拟一个linux系统,作为日常运行环境.<br/>其中用到了vbox的共享文件功能,使用母机和linux系统之前进行文件共享.<br/><br/>但linux系统内核升级后,共享文件功能就会失效.需要重新进行安装.<br/>第一步 选择vbox插件的镜像,一般路径如下:<br/>X:&#92;Program Files&#92;Oracle&#92;VirtualBox&#92;VBoxGuestAdditions.iso<br/><br/>第二步 在linux系统下加载光驱到目录(有的系统会自动加载)<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">mount /dev/sr0 /media/cdrom/</div></div><br/><br/>第三步 在linux系统中,安装编译环境<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">apt install gcc make　dkms<br/>apt install build-essential linux-headers-`uname -r`</div></div><br/><br/>第四步 在linux系统中,运行编辑命令<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">cd /media/cdrom<br/>./VBoxLinuxAdditions.run</div></div><br/><br/>第五步 vbox->虚拟系统->设置->共享文件夹添加共享目录<br/><a href="https://atim.cn/attachment.php?fid=82" target="_blank"><img src="https://atim.cn/attachment.php?fid=82" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>
]]>
</description>
</item><item>
<link>https://atim.cn/post/1125/</link>
<title><![CDATA[centos的logrotate切换日志文件]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Mon, 06 Jan 2020 21:47:18 +0000</pubDate> 
<guid>https://atim.cn/post/1125/</guid> 
<description>
<![CDATA[ 
	利用系统自带的logrotate切割nginx日志<br/>摘要： 这个东东可以切割任何日志，不仅仅是NGINX的log,很好用哦。<br/>logrotate简介<br/>&nbsp;&nbsp;&nbsp;&nbsp; logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除，并创建新的日志文件，我们把它叫做“转储”。我们可以根据日志文件的大小，也可以根据其天数来转 储，这个过 程一般通过 cron 程序来执行。logrotate 程序还可以用于压缩日志文件，以及发送日志到指定的E-mail 。系统自带的日志切割的配置文件在/etc/logrotate.conf 和 /etc/logrotate.d/syslog 里面，观察一下。<br/>作用:<br/>如果日志文件比较大，MV是需要时间的，这段时间内的日志有可能丢失。logrotate可以在切割日志的同时，不丢失数据。<br/>vi /etc/logrotate.d/nginx <br/>/usr/local/nginx/logs/*.log &#123;<br/>daily<br/>rotate 7 <br/>missingok<br/>notifempty<br/>minsize 10M <br/>dateext<br/>sharedscripts<br/>postrotate<br/>&nbsp;&nbsp;&nbsp;&nbsp;if [ -f /usr/local/nginx/logs/nginx.pid ]; then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`<br/>&nbsp;&nbsp;&nbsp;&nbsp;fi<br/>endscript<br/>&#125;<br/>脚本解释：<br/>/usr/local/nginx/logs/*.log &#123;&nbsp;&nbsp;&nbsp;&nbsp;nginx的日志路径<br/>/usr/local/nginx/logs/www.qq.com.log error.log &#123;&nbsp;&nbsp; 可以指定日志，用空格分开<br/>daily&nbsp;&nbsp;每天轮询<br/>rotate 7&nbsp;&nbsp;保留7天<br/>missingok&nbsp;&nbsp;如果日志丢失，不报错继续滚动下一个日志<br/>notifempty&nbsp;&nbsp;当日志为空时不进行滚动<br/>dateext&nbsp;&nbsp; 在文件末尾添加当前日期<br/>sharedscripts&nbsp;&nbsp; 运行postrotate脚本<br/>postrotate&nbsp;&nbsp;&nbsp;&nbsp;脚本内容，给NGINX发信号要求重新生成日志，如果nginx没开起来就不操作<br/>&nbsp;&nbsp;&nbsp;&nbsp;if [ -f /usr/local/nginx/logs/nginx.pid ]; then&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`<br/>&nbsp;&nbsp;&nbsp;&nbsp;fi<br/>endscript<br/>&#125;<br/>测试，有生成就代表配置成功<br/>/usr/sbin/logrotate -f /etc/logrotate.d/nginx<br/> <br/>加入每天凌晨自动运行crontab<br/>00 00 * * *&nbsp;&nbsp;/usr/sbin/logrotate -f /etc/logrotate.d/nginx<br/>也可以放入/etc/cron.daily/<br/>一定要注意：1、在测试切割是否成功，一定要先备份一下！如果想保留全部日志，设置一个很大的值比如3650，如果你注释rotate或者不加，那么不会切割成功。<br/> <br/> <br/> 参数说明：<br/>logrotate 的配置文件是 /etc/logrotate.conf。主要参数如下表：<br/>compress&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 通过gzip 压缩转储以后的日志<br/>nocompress&nbsp;&nbsp;不需要压缩时，用这个参数<br/>copytruncate 用于还在打开中的日志文件，把当前日志备份并截断<br/>nocopytruncate 备份日志文件但是不截断<br/>create mode owner group 转储文件，使用指定的文件模式创建新的日志文件<br/>nocreate 不建立新的日志文件<br/>delaycompress 和 compress 一起使用时，转储的日志文件到下一次转储时才压缩<br/>nodelaycompress 覆盖 delaycompress 选项，转储同时压缩。<br/>errors address 专储时的错误信息发送到指定的Email 地址<br/>ifempty 即使是空文件也转储，这个是 logrotate 的缺省选项。<br/>notifempty 如果是空文件的话，不转储<br/>mail address 把转储的日志文件发送到指定的E-mail 地址<br/>nomail 转储时不发送日志文件<br/>olddir directory 转储后的日志文件放入指定的目录，必须和当前日志文件在同一个文件系统<br/>noolddir 转储后的日志文件和当前日志文件放在同一个目录下<br/>prerotate/endscript 在转储以前需要执行的命令可以放入这个对，这两个关键字必须单独成行<br/>postrotate/endscript 在转储以后需要执行的命令可以放入这个对，这两个关键字必须单独成行<br/>daily 指定转储周期为每天<br/>weekly 指定转储周期为每周<br/>monthly 指定转储周期为每月<br/>rotate count 指定日志文件删除之前转储的次数，0 指没有备份，5 指保留5 个备份<br/>tabootext [+] list 让logrotate 不转储指定扩展名的文件，缺省的扩展名是：.rpm-orig, .rpmsave, v, 和 ~<br/>size size 当日志文件到达指定的大小时才转储，Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).
]]>
</description>
</item><item>
<link>https://atim.cn/post/1071/</link>
<title><![CDATA[nohup命令用法]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Mon, 06 Jan 2014 06:44:18 +0000</pubDate> 
<guid>https://atim.cn/post/1071/</guid> 
<description>
<![CDATA[ 
	在应用Unix/Linux时，我们一般想让某个程序在后台运行，于是我们将常会用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台： /usr/local/mysql/bin/mysqld_safe –user=mysql &。可是有很多程序并不想mysqld一样，这样我们就需要nohup命令，怎样使用nohup命令呢？这里讲解nohup命令的一些用法。<br/><br/>nohup /root/start.sh &<br/><br/>在shell中回车后提示：<br/><br/>[~]$ appending output to nohup.out<br/><br/>原程序的的标准输出被自动改向到当前目录下的nohup.out文件，起到了log的作用。<br/><br/>但是有时候在这一步会有问题，当把终端关闭后，进程会自动被关闭，察看nohup.out可以看到在关闭终端瞬间服务自动关闭。<br/><br/>咨询红旗Linux工程师后，他也不得其解，在我的终端上执行后，他启动的进程竟然在关闭终端后依然运行。<br/><br/>在第二遍给我演示时，我才发现我和他操作终端时的一个细节不同：他是在当shell中提示了nohup成功后还需要按终端上键盘任意键退回到shell输入命令窗口，然后通过在shell中输入exit来退出终端；而我是每次在nohup执行成功后直接点关闭程序按钮关闭终端.。所以这时候会断掉该命令所对应的session，导致nohup对应的进程被通知需要一起shutdown。<br/><br/>这个细节有人和我一样没注意到，所以在这儿记录一下了。<br/><br/>附：nohup命令参考<br/><br/>nohup 命令<br/><br/>用途：不挂断地运行命令。<br/><br/>语法：nohup Command [ Arg … ] [　& ]<br/><br/>描述：nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令，忽略所有挂断（SIGHUP）信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令，添加 & （ 表示”and”的符号）到命令的尾部。<br/><br/>无论是否将 nohup 命令的输出重定向到终端，输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写，输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加，那么 Command 参数指定的命令不可调用。如果标准错误是一个终端，那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。<br/><br/>退出状态：该命令返回下列出口值：<br/><br/>126 可以查找但不能调用 Command 参数指定的命令。<br/><br/>127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。<br/><br/>否则，nohup 命令的退出状态是 Command 参数指定命令的退出状态。<br/><br/>nohup命令及其输出文件<br/><br/>nohup命令：如果你正在运行一个进程，而且你觉得在退出帐户时该进程还不会结束，那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。<br/><br/>该命令的一般形式为：nohup command &<br/><br/>使用nohup命令提交作业<br/><br/>如果使用nohup命令提交作业，那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中，除非另外指定了输出文件：<br/><br/>nohup command > myout.file 2>&1 &<br/><br/>在上面的例子中，输出被重定向到myout.file文件中。<br/><br/>使用 jobs 查看任务。<br/><br/>使用 fg %n　关闭。
]]>
</description>
</item><item>
<link>https://atim.cn/post/1067/</link>
<title><![CDATA[useradd]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Thu, 05 Sep 2013 02:01:37 +0000</pubDate> 
<guid>https://atim.cn/post/1067/</guid> 
<description>
<![CDATA[ 
	（1）最简单的方法:<br/><div class="code">useradd -m username</div><br/>再在/home 目录下建立一个用户username；<br/>（2）useradd -d 是在指定的目录下进行建立如：<br/><div class="code">useradd -d /home/user -s /bin/sh username</div><br/>,然后用语句：<br/><div class="code">passwd username</div><br/> 就可以为新建的用户设置密码 两种方法都可以新增用户username。<br/><strong>命令用法</strong><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>useradd - 帐 号 建 立 或 更 新 新 使 用 者 的 资 讯<br/>语 法<br/>useradd [-c comment] [-d home_dir]<br/>[-e expire_date] [-f inactive_time]<br/>[-g initial_group] [-G group[,...]]<br/>[-m [-k skeleton_dir] &#124; -M] [-s shell]<br/>[-u uid [ -o]] [-n] [-r] login<br/>useradd -D [-g default_group] [-b default_home]<br/>[-f default_inactive] [-e default_expire_date]<br/>[-s default_shell]<br/></div></div><br/><strong>用法解析</strong><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>-e expire_date　帐号终止日期。日期的指定格式为MM/DD/YY。<br/>-f inactive_days　帐号过期几日后永久停权。当值为0时帐号则立刻被停权。而当值为-1时则关闭此功能，预设值为-1<br/>-g initial_group　group名称或以数字来做为使用者登入起始群组(group)。群组名须为现有存在的名称。群组数字也须为现有存在的群组。预设的群组数字为1。<br/>-G group,[...]　定义此使用者为此一堆groups的成员。每个群组使用","区格开来，不可以夹杂空白字元。群组名同-g选项的限制。定义值为使用者的起始群组。<br/>-m　使用者目录如不存在则自动建立。如使用-k选项skeleton_dir内的档案将复制至使用者目录下。然而在/etc/skel目录下的档案也会复制过去取代。任何在skeleton_diror/etc/skel的目录也相同会在使用者目录下一一建立。The-k同-m不建立目录以及不复制任何档案为预设值。<br/>-M　不建立使用者目录，即使/etc/login.defs系统档设定要建立使用者目录。<br/>-n　预设值使用者群组与使用者名称会相同。此选项将取消此预设值。<br/>-r　此参数是用来建立系统帐号。系统帐号的UID会比定义在系统档上/etc/login.defs.的UID_MIN来的小。注意useradd此用法所建立的帐号不会建立使用者目录，也不会在乎纪录在/etc/login.defs.的定义值。如果你想要有使用者目录须额外指定-m参数来建立系统帐号。这是REDHAT额外增设的选项。<br/>-u uid　使用者的ID值。必须为唯一的ID值，除非用-o选项。数字不可为负值。预设为最小不得小于999而逐次增加。0~999传统上是保留给系统帐号使用。改变预设值当-D选项出现时，useradd秀出现在的预设值，或是藉由命令列的方式更新预设值。可用选项为∶<br/>-b default_home　定义使用者所属目录的前一个目录。使用者名称会附加在default_home后面用来建立新使用者的目录。当然使用-d后则此选项无效。<br/>-e default_expire_date　使用者帐号停止日期。<br/>-f default_inactive　帐号过期几日后停权。<br/>-g default_group　新帐号起始群组名或ID。群组名须为现有存在的名称。群组ID也须为现有存在的群组。<br/>-s default_shell　使用者登入后使用的shell名称。往后新加入的帐号都将使用此shell.如不指定任何参数，useradd显示目前预设的值。注记系统管理者有义务在/etc/skel目录下放置使用者定义档。<br/></div></div>
]]>
</description>
</item><item>
<link>https://atim.cn/post/1065/</link>
<title><![CDATA[查看 SELinux状态及关闭SELinux ]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Thu, 27 Jun 2013 08:24:03 +0000</pubDate> 
<guid>https://atim.cn/post/1065/</guid> 
<description>
<![CDATA[ 
	<strong>查看SELinux状态：</strong><br/><br/>1、/usr/sbin/sestatus -v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;##如果SELinux status参数为enabled即为开启状态<br/><div class="code"><br/>SELinux status:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enabled<br/></div><br/>2、getenforce&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ##也可以用这个命令检查<br/><br/><strong>关闭SELinux：</strong><br/><br/>1、临时关闭（不用重启机器）：<br/><div class="code"><br/>setenforce 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;##设置SELinux 成为permissive模式<br/>&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; ##setenforce 1 设置SELinux 成为enforcing模式<br/></div><br/><br/>2、修改配置文件需要重启机器：<br/><br/>修改/etc/selinux/config 文件<br/><br/>将SELINUX=enforcing改为SELINUX=disabled<br/><br/>重启机器即可
]]>
</description>
</item><item>
<link>https://atim.cn/post/1051/</link>
<title><![CDATA[路由跟踪命令.查看DNS、IP、Mac等]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Sun, 16 Sep 2012 02:20:21 +0000</pubDate> 
<guid>https://atim.cn/post/1051/</guid> 
<description>
<![CDATA[ 
	1.最基本，最常用的，测试物理网络的<br/>ping 192.168.0.8 －t ，参数－t是等待用户去中断测试<br/><br/>2.查看DNS、IP、Mac等<br/>A.Win98：winipcfg<br/>B.Win2000以上：Ipconfig/all<br/><br/>C.NSLOOKUP：如查看河北的DNS<br/>C:&#92;>nslookup<br/>Default Server: ns.hesjptt.net.cn<br/>Address: 202.99.160.68<br/>>server 202.99.41.2 则将DNS改为了41.2<br/>> pop.pcpop.com<br/>Server: ns.hesjptt.net.cn<br/>Address: 202.99.160.68<br/><br/>Non-authoritative answer:<br/>Name: pop.pcpop.com<br/>Address: 202.99.160.212<br/><br/>3.网络信使 （经常有人问的~）<br/>Net send 计算机名/IP&#124;* (广播) 传送内容，注意不能跨网段<br/>net stop messenger 停止信使服务，也可以在面板－服务修改<br/>net start messenger 开始信使服务<br/><br/>4.探测对方对方计算机名，所在的组、域及当前用户名 （追捕的工作原理）<br/>ping －a IP －t ，只显示NetBios名<br/>nbtstat -a 192.168.10.146 比较全的<br/><br/>5.netstat -a 显示出你的计算机当前所开放的所有端口<br/>netstat -s -e 比较详细的显示你的网络资料，包括TCP、UDP、ICMP 和 IP的统计等<br/><br/>6.探测arp绑定（动态和静态）列表，显示所有连接了我的计算机，显示对方IP和MAC地址<br/>arp -a<br/><br/>7.在代理服务器端<br/>捆绑IP和MAC地址，解决局域网内盗用IP！：<br/>ARP －s 192.168.10.59 00 －50－ff－6c－08－75<br/>解除网卡的IP与MAC地址的绑定：<br/>arp -d 网卡IP<br/><br/>8.在网络邻居上隐藏你的计算机 （让人家看不见你！）<br/>net config server /hidden:yes<br/>net config server /hidden:no 则为开启<br/>9.几个net命令<br/>A.显示当前工作组服务器列表 net view，当不带选项使用本命令时，它就会显示当前域或网络上的计算机上的列表。<br/>比如：查看这个IP上的共享资源，就可以<br/>C:&#92;>net view 192.168.10.8<br/>在 192.168.10.8 的共享资源<br/>资源共享名 类型 用途 注释<br/>--------------------------------------<br/>网站服务 Disk<br/>命令成功完成。<br/><br/>B.查看计算机上的用户帐号列表 net user<br/>C.查看网络链接 net use<br/>例如：net use z: &#92;&#92;192.168.10.8&#92;movie 将这个IP的movie共享目录映射为本地的Z盘<br/><br/>D.记录链接 net session<br/>例如：<br/>C:&#92;>net session<br/>计算机 用户名 客户类型 打开空闲时间<br/>-------------------------------------------------------------------------------<br/>&#92;&#92;192.168.10.110 ROME Windows 2000 2195 0 00:03:12<br/><br/>&#92;&#92;192.168.10.51 ROME Windows 2000 2195 0 00:00:39<br/>命令成功完成。<br/><br/>10.路由跟踪命令<br/>A.tracert pop.pcpop.com<br/>B.pathping pop.pcpop.com 除了显示路由外，还提供325S的分析，计算丢失包的％<br/><br/>11.关于共享安全的几个命令<br/>A.查看你机器的共享资源 net share<br/>B.手工删除共享（可以编个bat文件，开机自运行，把共享都删了！）<br/>net share c$ /d<br/>net share d$ /d<br/>net share ipc$ /d<br/>net share admin$ /d<br/>注意$后有空格。<br/>C.增加一个共享：<br/>c:&#92;net share mymovie=e:&#92;downloads&#92;movie /users:1<br/>mymovie 共享成功。<br/>同时限制链接用户数为1人。<br/><br/>12.在DOS行下设置静态IP<br/>A.设置静态IP<br/>CMD<br/>netsh<br/>netsh>int<br/>interface>ip<br/>interface ip>set add "本地链接" static IP地址 mask gateway<br/>B.查看IP设置<br/>interface ip>show address 
]]>
</description>
</item><item>
<link>https://atim.cn/post/1049/</link>
<title><![CDATA[linux uniq 命令]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Sun, 20 May 2012 05:22:47 +0000</pubDate> 
<guid>https://atim.cn/post/1049/</guid> 
<description>
<![CDATA[ 
	用途<br/><br/>报告或删除文件中重复的行。<br/><br/>语法<br/><div class="code">uniq &#91;&nbsp;&nbsp;-c &#124; -d &#124; -u &#93; &#91;&nbsp;&nbsp;-f Fields &#93; &#91;&nbsp;&nbsp;-s Characters &#93; &#91;&nbsp;&nbsp;-Fields &#93; &#91; +Characters &#93; &#91; InFile &#91; OutFile &#93; &#93;</div><br/>描述<br/><br/>uniq 命令删除文件中的重复行。 uniq 命令读取由 InFile 参数指定的标准输入或文件。该命令首先比较相邻的行，然后除去第二行和该行的后续副本。重复的行一定相邻。（在发出 uniq 命令之前，请使用 sort 命令使所有重复行相邻。）最后，uniq 命令将最终单独的行写入标准输出或由 OutFile 参数指定的文件。InFile 和 OutFile 参数必须指定不同的文件。<br/><br/>输入文件必须是文本文件。文本文件是包含组织在一行或多行中的字符的文件。这些行的长度不能超出 2048 个字节（包含所有换行字符），并且其中不能包含空字符。<br/><br/>缺省情况下，uniq 命令比较所有行。如果指定了-f Fields 或 -Fields 标志, uniq 命令忽略由 Fields 变量指定的字段数目。 field 是一个字符串，用一个或多个 <空格 > 字符将它与其它字符串分隔开。如果指定了 -s Characters 或 -Characters 标志, uniq 命令忽略由 Characters 变量指定的字段数目。 为 Fields 和 Characters 变量指定的值必须是正的十进制整数。<br/><br/>当前本地语言环境决定了 -f 标志使用的 <空白> 字符以及 -s 标志如何将字节解释成字符。<br/><br/>如果执行成功，uniq 命令退出，返回值 0。否则，命令退出返回值大于 0。<br/><br/>标志<br/><br/>-c&nbsp;&nbsp; 在输出行前面加上每行在输入文件中出现的次数。<br/>-d&nbsp;&nbsp; 仅显示重复行。<br/>-f Fields&nbsp;&nbsp; 忽略由 Fields 变量指定的字段数目。 如果 Fields 变量的值 超过输入行中的字段数目, uniq 命令用空字符串进行比较。 这个标志和 -Fields 标志是等价的。<br/>-u&nbsp;&nbsp; 仅显示不重复的行。<br/>-s Characters&nbsp;&nbsp; 忽略由 Characters 变量指定的字符的数目。 如果 Characters 变量的值超过输入行中的字符的数目, uniq 用空字符串进行比较。 如果同时指定 -f 和 -s 标志, uniq 命令忽略由 -s Characters 标志指定的字符的数目，而从由 -f Fields 标志指定的字段后开始。 这个标志和 +Characters 标志是等价的。<br/>-Fields&nbsp;&nbsp; 忽略由 Fields 变量指定的字段数目。 这个标志和 -f Fields 标志是等价的。<br/>+Characters&nbsp;&nbsp; 忽略由 Characters 变量指定的字符的数目。 如果同时指定 - Fields 和 +Characters 标志, uniq 命令忽略由 +Characters 标志指定的字符数目，并从由 -Fields 标志指定的字段后开始。 这个标志和 -s Characters 标志是等价的。<br/>退出状态<br/><br/>该命令返回以下退出值：<br/><br/>0&nbsp;&nbsp; 命令运行成功。<br/>>0&nbsp;&nbsp; 发生错误。<br/>示例<br/><br/>要删除名为 fruit 文件中的重复行并将其保存到一个名为 newfruit 的文件中， 输入：<br/><div class="code"> uniq fruit newfruit</div><br/>如果 fruit 文件包含下列行:<br/><br/><div class="code">apples<br/>apples<br/>peaches<br/>pears<br/>bananas<br/>cherries<br/>cherries</div><br/>则在您运行uniq 命令后 newfruit 文件将包含下列行:<br/><br/><div class="code">apples<br/>peaches<br/>pears<br/>bananas<br/>cherries</div><br/>Tags - <a href="https://atim.cn/tags/linux/" rel="tag">linux</a> , <a href="https://atim.cn/tags/%25E5%2591%25BD%25E4%25BB%25A4/" rel="tag">命令</a>
]]>
</description>
</item><item>
<link>https://atim.cn/post/1048/</link>
<title><![CDATA[linux cut 命令]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Sun, 20 May 2012 05:10:56 +0000</pubDate> 
<guid>https://atim.cn/post/1048/</guid> 
<description>
<![CDATA[ 
	用途<br/><br/>从文件的每个行中写出选定的字节、字符或字段。<br/><br/>语法<br/><div class="code">cut &#123;&nbsp;&nbsp;-b List &#91;&nbsp;&nbsp;-n &#93; &#124;&nbsp;&nbsp;-c List &#124;&nbsp;&nbsp;-f List &#91;&nbsp;&nbsp;-s &#93; &#91;&nbsp;&nbsp;-d Character &#93; &#125; &#91; File ... &#93;</div><br/><br/>描述<br/><br/>cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。如果不指定 File 参数，cut 命令将读取标准输入。<br/><br/>必须指定 -b、-c 或 -f 标志之一。List 参数为一个以逗号分隔、以空格分隔或连字符分隔的整数的列表（顺序递增）。连字符分隔符表示范围。以下条目是 List 参数的一些示例，它可以用来指代字节、字符或字段：<br/><div class="code"> 1,4,7<br/>1-3,8<br/>-5,10<br/>3-</div><br/>其中 -5 为从第一个到第五个的简写形式，3- 为从第三个到最后一个的简写形式。<br/><br/>如果将 cut 命令用于字段，则由 List 参数指定的字段的长度可以从字段到字段，从行到行发生变化。字段定界符字符（比如制表符）的位置，确定字段长度。<br/><br/>您还可以使用 grep 命令来对一个文件进行水平剪切，和使用 paste 命令来将文件复原。要更改文件中列的次序，使用 cut 和 paste 命令。<br/><br/>标志<br/><br/>-b List&nbsp;&nbsp; 指定字节位置。这些字节位置将忽略多字节字符边界，除非也指定了 -n 标志。<br/>-c List&nbsp;&nbsp; 指定字符位置。例如，如果您指定 -c 1-72，cut 命令将写出文件每一行的头 72 个字符。<br/>-d Character&nbsp;&nbsp; 使用 Character 变量指定的字符作为指定 -f 标志时的字段定界符。您必须在对 shell 有特殊意义的字符（比如空格字符）上加上引号。<br/>-f List&nbsp;&nbsp; 指定文件中设想被定界符（缺省情况下为制表符）隔开的字段的列表。例如，如果您指定 -f 1,7，cut 命令将仅写出每个行的第一和第七个字段。如果行中不包含字段定界符，cut 命令将通过它们而不对其进行任何操作（对表格的副标题有用），除非指定了 -s 标志。<br/>-n&nbsp;&nbsp; 取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内，该字符将被写出；否则，该字符将被排除。<br/>-s&nbsp;&nbsp; 取消不包含定界符的行。仅和 -f 标志一起使用。<br/>退出状态<br/><br/>该命令返回以下退出值：<br/><br/>0&nbsp;&nbsp; 所有输入文件被成功输出。<br/>>0&nbsp;&nbsp; 发生一个错误。<br/>示例<br/><br/>要显示文件的每个行的几个字段，输入：<br/>cut&nbsp;&nbsp;-f 1,5 -d : /etc/passwd<br/>这将显示系统密码文件的登录名称和完整用户名称字段。这是第一和第五个字段（-f 1,5），由冒号（-d :）隔开。<br/>例如，如果 /etc/passwd 文件像这样：<br/><br/><div class="code">su:*:0:0:User with special privileges:/:/usr/bin/sh<br/>daemon:*:1:1::/etc:<br/>bin:*:2:2::/usr/bin:<br/>sys:*:3:3::/usr/src:<br/>adm:*:4:4:System Administrator:/var/adm:/usr/bin/sh<br/>pierre:*:200:200:Pierre Harper:/home/pierre:/usr/bin/sh<br/>joan:*:202:200:Joan Brown:/home/joan:/usr/bin/sh</div><br/>cut 命令将产生如下结果：<br/><br/><div class="code">su:User with special privileges<br/>daemon:<br/>bin:<br/>sys:<br/>adm:System Administrator<br/>pierre:Pierre Harper<br/>joan:Joan Brown</div><br/>要使用用空格隔开的列表来显示字段，输入：<br/><div class="code">cut -f &quot;1 2 3&quot; -d : /etc/passwd</div><br/>cut 命令将产生如下结果：<br/><br/><div class="code">su:*:0<br/>daemon:*:1<br/>bin:*:2<br/>sys:*:3<br/>adm:*:4<br/>pierre:*:200<br/>joan:*:202</div>
]]>
</description>
</item><item>
<link>https://atim.cn/post/1024/</link>
<title><![CDATA[wget 命令详细用法及实际用例]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Fri, 26 Aug 2011 13:23:32 +0000</pubDate> 
<guid>https://atim.cn/post/1024/</guid> 
<description>
<![CDATA[ 
	wget是一个强力方便的命令行方式下的下载工具。本文介绍了wget的基本用法。<br/>网络用户有时候会遇到需要下载一批文件的情况，有时甚至需要把整个网站下载下来或者制作网站的镜像。在Windows下的用户都比较熟悉 Teleport，webzip等等网站下载工具，实际上Linux中也完全可以做到这样的功能，那就是利用wget工具。wget是一个命令行工具，用来下载网络文件或者整个网站，它具有自动重试、断点续传、支持代理服务器等等强大的功能。它可以完全替代ftp客户端。wget是在Linux下开发的开放源代码的软件，作者是Hrvoje Niksic，后来被移植到包括Windows在内的各个平台上。<br/>wget虽然功能强大，但是使用起来还是比较简单的，基本的语法是：<br/>wget [参数列表] URL<br/>下面就结合具体的例子来说明一下wget的用法。<br/><strong>1、下载整个http或者ftp站点。</strong><br/>wget http://place.your.url/here<br/>这个命令可以将http://place.your.url/here 首页下载下来。使用-x会强制建立服务器上一模一样的目录，如果使用-nd参数，那么服务器上下载的所有内容都会加到本地当前目录。<br/>wget -r http://place.your.url/here<br/>这个命令会按照递归的方法，下载服务器上所有的目录和文件，实质就是下载整个网站。这个命令一定要小心使用，因为在下载的时候，被下载网站指向的所有地址同样会被下载，因此，如果这个网站引用了其他网站，那么被引用的网站也会被下载下来！基于这个原因，这个参数不常用。可以用-l number参数来指定下载的层次。例如只下载两层，那么使用-l 2。 要是您想制作镜像站点，那么可以使用－m参数，例如：<br/>wget -m http://place.your.url/here<br/>这时wget会自动判断合适的参数来制作镜像站点。此时，wget会登录到服务器上，读入robots.txt并按robots.txt的规定来执行。<br/><strong>2、断点续传。</strong><br/>当文件特别大或者网络特别慢的时候，往往一个文件还没有下载完，连接就已经被切断，此时就需要断点续传。wget的断点续传是自动的，只需要使用-c参数，例如：<br/>wget -c http://the.url.of/incomplete/file<br/>使用断点续传要求服务器支持断点续传。-t参数表示重试次数，例如需要重试100次，那么就写-t 100，如果设成-t 0，那么表示无穷次重试，直到连接成功。-T参数表示超时等待时间，例如-T 120，表示等待120秒连接不上就算超时。<br/><strong>3、批量下载。</strong><br/>如果有多个文件需要下载，那么可以生成一个文件，把每个文件的URL写一行，例如生成文件download.txt，<br/>然后用命令：<br/>wget -i download.txt<br/>这样就会把download.txt里面列出的每个URL都下载下来。（如果列的是文件就下载文件，如果列的是网站，那么下载首页）<br/><strong>4、选择性的下载。</strong><br/>可以指定让wget只下载一类文件，或者不下载什么文件。例如：<br/>wget -m –reject=gif http://target.web.site/subdirectory<br/>表示下载http://target.web.site/subdirectory，但是忽略 gif 文件。–accept=LIST 可以接受的文件类型， –reject=LIST 拒绝接受的文件类型。<br/><strong>5、密码和认证。</strong><br/>wget只能处理利用用户名/密码方式限制访问的网站，可以利用两个参数：<br/>--http-user=USER 设置HTTP用户–http-passwd=PASS 设置HTTP密码<br/>对于需要证书做认证的网站，就只能利用其他下载工具了，例如curl。<br/><strong>6、利用代理服务器进行下载。</strong><br/>如果用户的网络需要经过代理服务器，那么可以让wget通过代理服务器进行文件的下载。此时需要在当前用户的目录下创建一个 .wgetrc 文件。文件中可以设置代理服务器：<br/>http-proxy = 111.111.111.111:8080ftp-proxy = 111.111.111.111:8080<br/>分别表示http的代理服务器和ftp的代理服务器。如果代理服务器需要密码则使用：<br/>–proxy-user=USER 设置代理用户–proxy-passwd=PASS 设置代理密码<br/>这两个参数。<br/>使用参数–proxy=on/off 使用或者关闭代理。<br/><strong>7、设定下载时间</strong><br/>如果你需要在你的办公电脑上通过和其他同事共享的一个连接来下载一些很大的文件，而且你希望你的同事不会因为网络速度的减慢而收到影响，那你就应该尽量避开高峰时段。当然,不需要在办公室里等到所以人都走掉，也不需要在家里用完晚饭后还惦记着要上网下载一次。<br/>用at来就可以很好的定制工作时间：<br/><div class="code"><br/>$ at 2300<br/>warning: commands will be executed using /bin/sh<br/>at&gt; wget http://place.your.url/here<br/>at&gt; press Ctrl-D<br/></div><br/>这样，我们设定了下载工作在晚上11点进行。为了使这个安排能够正常进行，请确认atd这个后台程序正在运行。<br/>8、定时下载<br/>当你需要下载大量的数据，而且你又没有享有足够的带宽,这个时候你会经常发现在你安排的下载任务还没有完成，一天的工作却又要开始了。<br/>作为一个好同事，你只能停掉了这些任务，而开始另外的工作。然后你又需要反复地重复使用”wget -c”来完成你的下载。这样肯定太繁琐了，所以最好是用crontab来自动执行。创建一个纯文本文件，叫做”crontab.txt”,包含下面的内容：<br/>0 23 * * 1-5 wget -c -N http://place.your.url/here<br/>0 6 * * 1-5 killall wget<br/>这个crontab文件指定某些任务定期地执行。前五列声明是什么时候执行这个命令，而每行的剩余部分则告诉crontab执行什么内容。<br/>前两列指定了每天一到晚上11点就开始用wget下载，一到早上6点就停止一切wget下载。第三四列的*表示每个月的每一天都执行这个任务。第五列则指定了一个星期的哪几天来执行这个程序。 –”1-5″表示从星期一到星期五。<br/>这样在每个工作日的晚上11点，下载工作开始，到了上午的6点，任何的wget任务就被停掉了。你可以用下面的命令来执行crontab：<br/>$ crontab crontab.txt<br/>wget的这个“-N”参数将会检查目标文件的时间戳，如果匹配了，下载程序就会停止，因为它说明整个文件已经下载完全了。<br/>用“crontab -r”可以删除这个计划安排。我已经多次采用这种方法，通过共享的电话拨号来下载过很多的ISO镜像文件,还是比较实用的。<br/><strong>9、下载动态变化的网页</strong><br/>有些网页每天都要根据要求变化好几次。所以从技术上讲,目标不再是一个文件，它没有文件长度，因此”-c”这个参数也就失去了意义。<br/>例如:一个PHP写的并且经常变动的linux周末新闻网页:<br/>$ wget http://lwn.net/bigpage.php3<br/>我办公室里的网络条件经常很差，给我的下载带了很大的麻烦，所以我写了个简单的脚本来检测动态页面是否已经完全更新了。<br/>#!/bin/bash<br/>#create it if absent<br/>touch bigpage.php3<br/> <br/>#check if we got the whole thing<br/>while ! grep -qi bigpage.php3<br/>do<br/>rm -f bigpage.php3<br/> <br/>#download LWN in one big page<br/>wget http://lwn.net/bigpage.php3<br/> <br/>done<br/>这个脚本能够保证持续的下载该网页,直到网页里面出现了””,这就表示该文件已经完全更新了.<br/><strong>10、对于ssl和Cookies怎么办？</strong><br/>如果你要通过ssl来上网，那么网站地址应该是以 https: 来开头的，在这样的情况下你就需要另外一种下载工具，叫做curl，它能够很容易获得.有些网站迫使网友在浏览的时候必须使用cookie。所以你必须从在网站上得到的那个Cookie里面得到“Cookie:”这个参数.这样才能保证下载的参数正确。对于lynx和Mozilla的Cookie的文件格式，用下面的：<br/>$ cookie=$( grep nytimes ~/.lynx_cookies &#124;awk &#123;printf(”%s=%s;”,$6,$7)&#125; )<br/>就可以构造一个请求Cookie来下载 http://www.nytimes.com 上的内容。当然，你要已经用这个浏览器在该网站上完成注册。<br/>w3m使用了一种不同的,更小巧的Cookie文件格式:<br/>$ cookie=$( grep nytimes ~/.w3m/cookie &#124;awk &#123;printf(”%s=%s;”,$2,$3)&#125; )<br/>现在就可以用这种方法来下载了:<br/>$ wget –header="Cookie: $cookie" http://www.nytimes.com/reuters/technology/tech-tech-supercomput.html<br/>或者用curl工具:<br/>$ curl -v -b $cookie -o supercomp.html http://www.nytimes.com/reuters/technology/tech-tech-supercomput.htm<br/><strong>11、如何建立地址列表？</strong><br/>到现在为止我们下载的都是单个文件或者是整个网站.有的时候我们需要下载某个网页上链接的大量文件,但没有必要把它整个网站都镜像下来.比如说我们想从一个依次排列的100首歌里面下载前20首.注意,这里”–accept”和”–reject”参数是不会起作用的,因为他们只对文件操作起作用.所以一定要用”lynx -dump”参数来代替。<br/>$ lynx -dump ftp://ftp.xxx.com/pub/lg/ &#124;grep gz$ &#124;tail -10 &#124;awk &#123;print $2&#125; > urllist.txt<br/>lynx的输出结果可以被各种GNU文本处理工具过虑.在上面的例子里,我们的链接地址是以”gz”结尾的,并且把最后10个文件地址放到 urllist.txt文件里.然后我们可以写一个简单的bash脚本来自动下载这个文件里的目标文件:<br/>$ for x in $(cat urllist.txt)<br/>> do<br/>> wget $x<br/>> done<br/>这样我们就能够成功下载Linux Gazette网站(ftp://ftp.xxx.com/pub/lg/)上的最新10个论题。<br/><strong>12、扩大使用的带宽</strong><br/>如果你选择下载一个受带宽限制的文件,那你的下载会因为服务器端的限制而变得很慢.下面这个技巧会大大缩短下载的过程.但这个技巧 需要你使用curl并且远程服务器有多个镜像可以供你下载.例如,假设你想从下面的三个地址下载Mandrake 10.0:<br/>url1=http://ftp.eecs.umich.edu/pub/linux/mandrake/iso/Mandrake10.0-inst.iso<br/>url2=http://ftp.rpmfind.net/linux/Mandrake/iso/Mandrake10.0-inst.iso<br/>url3=http://ftp.wayne.edu/linux/mandrake/iso/Mandrake10.0-inst.iso<br/>这个文件的长度是677281792个字节,所以用curl程序加”–range”参数来建立三个同时进行的下载:<br/>$ curl -r 0-199999999 -o mdk-iso.part1 $url1 &<br/>$ curl -r 200000000-399999999 -o mdk-iso.part2 $url2 &<br/>$ curl -r 400000000- -o mdk-iso.part3 $url3 &<br/>这样就创建了三个后台进程.每个进程从不同的服务器传输这个ISO文件的不同部分.这个”-r”参数指定目标文件的字节范围.当这三个 进程结束后,用一个简单的cat命令来把这三个文件衔接起来– cat mdk-iso.part? > mdk-80.iso.(强烈建议在刻盘之前先检查md5) 你也可以用”–verbose”参数来使每个curl进程都有自己的窗口来显示传输的过程。<br/>wget还有很多有用的功能，需要您来挖掘。<br/><span style="font-size: 10px;">二、wget常用参数：</span><br/><strong>1、启动类参数</strong><br/>这一类参数主要提供软件的一些基本信息；<br/>-V,–version 显示软件版本号然后退出；<br/>-h,–help 显示软件帮助信息；<br/>-e,–execute=COMMAND 执行一个 “.wgetrc”命令<br/>-b, –background 启动后转入后台执行，记录文件写在当前目录下”wget-log”文件中。<br/>以上每一个功能有长短两个参数，长短功能一样，都可以使用。需要注意的是，这里的-e参数是执行一个.wgettrc的命令，.wgettrc命令其实是一个参数列表，直接将软件需要的参数写在一起就可以了。<br/><strong>2、文件处理参数</strong><br/>这类参数定义软件log文件的输出方式等；<br/>-o,–output-file=FILE 　将软件输出信息保存到文件；<br/>-a,–append-output=FILE 将软件输出信息追加到文件；<br/>-d,–debug 显示输出信息；<br/>-q,–quiet 　不显示输出信息；<br/>-i,–input-file=FILE 　从文件中取得URL；<br/><strong>3、下载参数</strong><br/>下载参数定义下载重复次数、保存文件名等；<br/>-t,–tries=NUMBER 　是否下载次数（0表示无穷次）<br/>-O –output-document=FILE 下载文件保存为别的文件名<br/>-nc, –no-clobber 　不要覆盖已经存在的文件<br/>-c, –continue 启用断点传输，接着下载没下载完的文件<br/>-N,–timestamping 只下载比本地新的文件<br/>-T,–timeout=SECONDS 设置超时时间<br/>-w, –wait=SECONDS 两次尝试之间间隔SECONDS秒<br/>–waitretry=SECONDS 在重新链接之间等待1…SECONDS秒<br/>–random-wait 在下载之间等待0…2*WAIT秒<br/>-Q, –quota=NUMBER 设置下载的容量限制<br/>-E, –html-extension将所有text/html文档以.html扩展名保存<br/>-m, –mirror 等价于 -r -N -l inf -nr<br/>-p, –page-requisites 下载显示HTML文件的所有图片递归下载中的包含和不包含(accept/reject)<br/>-Y,–proxy=on/off 关闭代理<br/><strong>4、目录参数</strong><br/>目录参数主要设置下载文件保存目录与原来文件（服务器文件）的目录对应关系；<br/>-nd –no-directories 　不建立目录<br/>-x,–force-directories 　强制建立目录<br/>-nH, –no-host-directories 不创建主机目录<br/>-P, –directory-prefix=PREFIX 将文件保存到目录 PREFIX/…<br/>--cut-dirs=NUMBER 忽略指定数目的目录<br/><strong>5、HTTP参数</strong><br/>HTTP参数设置一些与HTTP下载有关的属性；<br/>–http-user=USER 设置HTTP用户<br/>–http-passwd=PASS 设置HTTP密码<br/>–proxy-user=USER 设置代理用户<br/>–proxy-passwd=PASS 设置代理密码<br/><strong>6、递归参数设置</strong><br/>在下载一个网站或者网站的一个目录的时候，我们需要知道的下载的层次，这些参数就可以设置；<br/>-r,–recursive 下载整个网站、目录（小心使用）<br/>-k, –convert-links 转换非相对链接为相对链接（下载网页时很有用）<br/>-K, –backup-converted 在转换文件X之前，将之备份为 X.orig<br/>-l,–level=NUMBER 下载层次<br/>-np, –no-parent不要追溯到父目录<br/><strong>7、递归允许与拒绝选项参数</strong><br/>下载一个网站的时候，为了尽量快，有些文件可以选择下载，比如图片和声音，在这里可以设置；<br/>-A,–accept=LIST 可以接受的文件类型<br/>-R,–reject=LIST 拒绝接受的文件类型<br/>-D,–domains=LIST 可以接受的域名<br/>–exclude-domains=LIST 拒绝的域名<br/>-L,–relative 　只下载相对链接<br/>–follow-ftp 只下载HTML文档中的FTP链接<br/>-H,–span-hosts 　可以下载外面的主机<br/>-I,–include-directories=LIST 允许的目录<br/>-X,–exclude-directories=LIST 　拒绝的目录<br/><br/>实例:<br/>下载ftp下的某个文件<br/><div class="code"><br/>wget -bc ftp://username:password@ip_address:21/data.tar.gz<br/></div><br/><br/>批量下载某个目录下的文件到当前的目录<br/><div class="code">wget -brc -x -np -nH -N&nbsp;&nbsp;-P ./ ftp://username:password@ip_address:21/web/bbs/data/</div><br/><br/>批量ftp目录下的所有文件<br/><div class="code">wget -nH -m --ftp-user=xxxx --ftp-password=xxxxx ftp://192.168.1.2/www</div><br/>Tags - <a href="https://atim.cn/tags/wget/" rel="tag">wget</a> , <a href="https://atim.cn/tags/ftp/" rel="tag">ftp</a> , <a href="https://atim.cn/tags/%25E5%2591%25BD%25E4%25BB%25A4/" rel="tag">命令</a> , <a href="https://atim.cn/tags/%25E5%258F%2582%25E6%2595%25B0/" rel="tag">参数</a> , <a href="https://atim.cn/tags/%25E7%2594%25A8%25E6%25B3%2595/" rel="tag">用法</a> , <a href="https://atim.cn/tags/%25E6%2589%25B9%25E9%2587%258F%25E4%25B8%258B%25E8%25BD%25BD/" rel="tag">批量下载</a>
]]>
</description>
</item><item>
<link>https://atim.cn/post/1023/</link>
<title><![CDATA[Linux awk命令详解]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Tue, 23 Aug 2011 02:07:21 +0000</pubDate> 
<guid>https://atim.cn/post/1023/</guid> 
<description>
<![CDATA[ 
	AWK介绍<br/>0.awk有3个不同版本: awk、nawk和gawk，未作特别说明，一般指gawk。<br/>1.awk语言的最基本功能是在文件或字符串中基于指定规则来分解抽取信息，也可以基于指定的规则来输出数据。完整的awk脚本通常用来格式化文本文件中的信息。<br/>2.三种方式调用awk<br/>1) awk [opion] 'awk_script' input_file1 [input_file2 ...]<br/>awk的常用选项option有；<br/>① -F fs : 使用fs作为输入记录的字段分隔符，如果省略该选项，awk使用环境变量IFS的值<br/>② -f filename : 从文件filename中读取awk_script<br/>③ -v var=value : 为awk_script设置变量<br/>2) 将awk_script放入脚本文件并以 #!/bin/awk -f 作为首行，给予该脚本可执行权限，然后在shell下通过键入该脚本的脚本名调用之。<br/>3) 将所有的awk_script插入一个单独脚本文件，然后调用: awk -f awk脚本文件 input_file(s)<br/><br/>3. awk的运行过程<br/>1) awk_script的组成:<br/>① awk_script可以由一条或多条awk_cmd组成，两条awk_cmd之间一般以NEWLINE分隔<br/>② awk_cmd由两部分组成: awk_pattern &#123; actions &#125;<br/>③ awk_script可以被分成多行书写，必须确保整个awk_script被单引号括起来。<br/>2) awk命令的一般形式:<br/>awk ' BEGIN &#123; actions &#125;<br/>awk_pattern1 &#123; actions &#125;<br/>............<br/>awk_patternN &#123; actions &#125;<br/>END &#123; actions &#125;<br/>' inputfile<br/>其中 BEGIN &#123; actions &#125; 和 END &#123; actions &#125; 是可选的。<br/>3) awk的运行过程:<br/>① 如果BEGIN 区块存在，awk执行它指定的actions。<br/>② awk从输入文件中读取一行，称为一条输入记录。(如果输入文件省略，将从标准输入读取)<br/>③ awk将读入的记录分割成字段，将第1个字段放入变量$1中，第2个字段放入$2，以此类推。$0表示整条记录。字段分隔符使用shell环境变量IFS或由参数指定。<br/>④ 把当前输入记录依次与每一个awk_cmd中awk_pattern比较，看是否匹配，如果相匹配，就执行对应的actions。如果不匹配，就跳过对应的actions，直到比较完所有的awk_cmd。<br/>⑤ 当一条输入记录比较了所有的awk_cmd后，awk读取输入的下一行，继续重复步骤③和④，这个过程一直持续，直到awk读取到文件尾。<br/>⑥ 当awk读完所有的输入行后，如果存在END，就执行相应的actions。<br/><br/>4) iput_file可以是多于一个文件的文件列表，awk将按顺序处理列表中的每个文件。<br/>5) 一条awk_cmd的awk_pattern可以省略，省略时不对输入记录进行匹配比较就执行相应的actions。一条awk_cmd的actions 也可以省略，省略时默认的动作为打印当前输入记录(print $0) 。一条awk_cmd中的awk_pattern和actions不能同时省略。<br/>6) BEGIN区块和END区块别位于awk_script的开头和结尾。awk_script中只有END区块或者只有BEGIN区块是被允许的。如果awk_script中只有BEGIN &#123; actions &#125; ，awk不会读取input_file。<br/>7) awk把输入文件的数据读入内存，然后操作内存中的输入数据副本，awk不会修改输入文件的内容。<br/>8) awk的总是输出到标准输出，如果想让awk输出到文件，可以使用重定向。<br/><br/>4.awk_pattern<br/>awk_pattern模式部分决定actions动作部分何时触发及触发actions。awk_pattern可以是以下几种类型:<br/>1) 正则表达式用作awk_pattern: /regexp/<br/>① awk中正则表达式匹配操作中经常用到的字符:<br/>&#92; ^ $ . [] &#124; () * // 通用的regexp元字符<br/>+ : 匹配其前的单个字符一次以上，是awk自有的元字符，不适用于grep或sed等<br/>? : 匹配其前的单个字符1次或0次，是awk自有的元字符，不适用于grep或sed等<br/>② 举例:<br/>awk '/ *&#92;$0&#92;.[0-9][0-9].*/' input_file<br/>2) 布尔表达式用作awk_pattern，表达式成立时，触发相应的actions执行。<br/>① 表达式中可以使用变量(如字段变量$1,$2等)和/regexp/<br/>② 布尔表达式中的操作符:<br/>关系操作符: < > <= >= == !=<br/>匹配操作符: value ~ /regexp/ 如果value匹配/regexp/，则返回真<br/>value !~ /regexp/ 如果value不匹配/regexp/，则返回真<br/>举例: awk '$2 > 10 &#123;print "ok"&#125;' input_file<br/>awk '$3 ~ /^d/ &#123;print "ok"&#125;' input_file<br/>③ &&(与) 和 &#124;&#124;(或) 可以连接两个/regexp/或者布尔表达式，构成混合表达式。!(非) 可以用于布尔表达式或者/regexp/之前。<br/>举例: awk '($1 < 10 ) && ($2 > 10) &#123;print "ok"&#125;' input_file<br/>awk '/^d/ &#124;&#124; /x$/ &#123;print "ok"&#125;' input_file<br/>④ 其它表达式用作awk_script，如赋值表达式等<br/>eg: awk '(tot+=$6); END&#123;print "total points :" tot &#125;' input_file // 分号不能省略<br/>awk 'tot+=$6 &#123;print $0&#125; END&#123;print "total points :" tot &#125;' input_file // 与上面等效<br/><br/>awk 用法例举：<br/>变量名 含义<br/>ARGC 命令行变元个数<br/>ARGV 命令行变元数组<br/>FILENAME 当前输入文件名<br/>FNR 当前文件中的记录号<br/>FS 输入域分隔符，默认为一个空格<br/>RS 输入记录分隔符<br/>NF 当前记录里域个数<br/>NR 到目前为止记录数<br/>OFS 输出域分隔符<br/>ORS 输出记录分隔符<br/><br/>1、awk '/101/' file 显示文件file中包含101的匹配行。<br/>awk '/101/,/105/' file<br/>awk '$1 == 5' file<br/>awk '$1 == "CT"' file 注意必须带双引号<br/>awk '$1 * $2 >100 ' file<br/>awk '$2 >5 && $2<=15' file<br/>2、awk '&#123;print NR,NF,$1,$NF,&#125;' file 显示文件file的当前记录号、域数和每一行的第一个和最后一个域。<br/>awk '/101/ &#123;print $1,$2 + 10&#125;' file 显示文件file的匹配行的第二个域加10。<br/>awk '/101/ &#123;print $1$2&#125;' file<br/>awk '/101/ &#123;print $1 $2&#125;' file 显示文件file的匹配行的第一、二个域，但显示时域中间没有分隔符。<br/>3、df &#124; awk '$4>1000000 ' 通过管道符获得输入，如：显示第4个域满足条件的行。<br/>4、awk -F "&#124;" '&#123;print $1&#125;' file 按照新的分隔符“&#124;”进行操作。<br/>awk 'BEGIN &#123; FS="[: &#92;t&#124;]" &#125;<br/>&#123;print $1,$2,$3&#125;' file 通过设置输入分隔符（FS="[: &#92;t&#124;]"）修改输入分隔符。<br/><br/>Sep="&#124;"<br/>awk -F $Sep '&#123;print $1&#125;' file 按照环境变量Sep的值做为分隔符。<br/>awk -F '[ :&#92;t&#124;]' '&#123;print $1&#125;' file 按照正则表达式的值做为分隔符，这里代表空格、:、TAB、&#124;同时做为分隔符。<br/>awk -F '[][]' '&#123;print $1&#125;' file 按照正则表达式的值做为分隔符，这里代表[、]<br/>5、awk -f awkfile file 通过文件awkfile的内容依次进行控制。<br/>cat awkfile<br/>/101/&#123;print "&#92;047 Hello! &#92;047"&#125; --遇到匹配行以后打印 ' Hello! '.&#92;047代表单引号。<br/>&#123;print $1,$2&#125; --因为没有模式控制，打印每一行的前两个域。<br/>6、awk '$1 ~ /101/ &#123;print $1&#125;' file 显示文件中第一个域匹配101的行（记录）。<br/>7、awk 'BEGIN &#123; OFS="%"&#125;<br/>&#123;print $1,$2&#125;' file 通过设置输出分隔符（OFS="%"）修改输出格式。<br/>8、awk 'BEGIN &#123; max=100 ;print "max=" max&#125; BEGIN 表示在处理任意行之前进行的操作。<br/>&#123;max=($1 >max ?$1:max); print $1,"Now max is "max&#125;' file 取得文件第一个域的最大值。<br/>（表达式1?表达式2:表达式3 相当于：<br/>if (表达式1)<br/>表达式2<br/>else<br/>表达式3<br/>awk '&#123;print ($1>4 ? "high "$1: "low "$1)&#125;' file<br/>9、awk '$1 * $2 >100 &#123;print $1&#125;' file 显示文件中第一个域匹配101的行（记录）。<br/>10、awk '&#123;$1 == 'Chi' &#123;$3 = 'China'; print&#125;' file 找到匹配行后先将第3个域替换后再显示该行（记录）。<br/>awk '&#123;$7 %= 3; print $7&#125;' file 将第7域被3除，并将余数赋给第7域再打印。<br/>11、awk '/tom/ &#123;wage=$2+$3; printf wage&#125;' file 找到匹配行后为变量wage赋值并打印该变量。<br/>12、awk '/tom/ &#123;count++;&#125;<br/>END &#123;print "tom was found "count" times"&#125;' file END表示在所有输入行处理完后进行处理。<br/>13、awk 'gsub(/&#92;$/,"");gsub(/,/,""); cost+=$4;<br/>END &#123;print "The total is $" cost>"filename"&#125;' file gsub函数用空串替换$和,再将结果输出到filename中。<br/>1 2 3 $1,200.00<br/>1 2 3 $2,300.00<br/>1 2 3 $4,000.00<br/><br/>awk '&#123;gsub(/&#92;$/,"");gsub(/,/,"");<br/>if ($4>1000&&$4<2000) c1+=$4;<br/>else if ($4>2000&&$4<3000) c2+=$4;<br/>else if ($4>3000&&$4<4000) c3+=$4;<br/>else c4+=$4; &#125;<br/>END &#123;printf "c1=[%d];c2=[%d];c3=[%d];c4=[%d]&#92;n",c1,c2,c3,c4&#125;"' file<br/>通过if和else if完成条件语句<br/><br/>awk '&#123;gsub(/&#92;$/,"");gsub(/,/,"");<br/>if ($4>3000&&$4<4000) exit;<br/>else c4+=$4; &#125;<br/>END &#123;printf "c1=[%d];c2=[%d];c3=[%d];c4=[%d]&#92;n",c1,c2,c3,c4&#125;"' file<br/>通过exit在某条件时退出，但是仍执行END操作。<br/>awk '&#123;gsub(/&#92;$/,"");gsub(/,/,"");<br/>if ($4>3000) next;<br/>else c4+=$4; &#125;<br/>END &#123;printf "c4=[%d]&#92;n",c4&#125;"' file<br/>通过next在某条件时跳过该行，对下一行执行操作。<br/><br/><br/>14、awk '&#123; print FILENAME,$0 &#125;' file1 file2 file3>fileall 把file1、file2、file3的文件内容全部写到fileall中，格式为<br/>打印文件并前置文件名。<br/>15、awk ' $1!=previous &#123; close(previous); previous=$1 &#125;<br/>&#123;print substr($0,index($0," ") +1)>$1&#125;' fileall 把合并后的文件重新分拆为3个文件。并与原文件一致。<br/>16、awk 'BEGIN &#123;"date"&#124;getline d; print d&#125;' 通过管道把date的执行结果送给getline，并赋给变量d，然后打印。<br/>17、awk 'BEGIN &#123;system("echo "Input your name:&#92;&#92;c""); getline d;print "&#92;nYour name is",d,"&#92;b!&#92;n"&#125;'<br/>通过getline命令交互输入name，并显示出来。<br/>awk 'BEGIN &#123;FS=":"; while(getline< "/etc/passwd" >0) &#123; if($1~"050[0-9]_") print $1&#125;&#125;'<br/>打印/etc/passwd文件中用户名包含050x_的用户名。<br/><br/>18、awk '&#123; i=1;while(i<NF) &#123;print NF,$i;i++&#125;&#125;' file 通过while语句实现循环。<br/>awk '&#123; for(i=1;i<NF;i++) &#123;print NF,$i&#125;&#125;' file 通过for语句实现循环。<br/>type file&#124;awk -F "/" '<br/>&#123; for(i=1;i<NF;i++)<br/>&#123; if(i==NF-1) &#123; printf "%s",$i &#125;<br/>else &#123; printf "%s/",$i &#125; &#125;&#125;' 显示一个文件的全路径。<br/>用for和if显示日期<br/>awk 'BEGIN &#123;<br/>for(j=1;j<=12;j++)<br/>&#123; flag=0;<br/>printf "&#92;n%d月份&#92;n",j;<br/>for(i=1;i<=31;i++)<br/>&#123;<br/>if (j==2&&i>28) flag=1;<br/>if ((j==4&#124;&#124;j==6&#124;&#124;j==9&#124;&#124;j==11)&&i>30) flag=1;<br/>if (flag==0) &#123;printf "%02d%02d ",j,i&#125;<br/>&#125;<br/>&#125;<br/>&#125;'<br/>19、在awk中调用系统变量必须用单引号，如果是双引号，则表示字符串<br/>Flag=abcd<br/>awk '&#123;print '$Flag'&#125;' 结果为abcd<br/>awk '&#123;print "$Flag"&#125;' 结果为$Flag
]]>
</description>
</item><item>
<link>https://atim.cn/post/1022/</link>
<title><![CDATA[linux wc命令参数及用法详解]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Tue, 23 Aug 2011 01:56:50 +0000</pubDate> 
<guid>https://atim.cn/post/1022/</guid> 
<description>
<![CDATA[ 
	wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。 <br/><br/>语法：wc [选项] 文件… <br/><br/>说明：该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名，则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。 <br/><br/>该命令各选项含义如下： <br/><br/>- c 统计字节数。 <br/><br/>- l 统计行数。 <br/><br/>- w 统计字数。 <br/><br/>这些选项可以组合使用。 <br/><br/>输出列的顺序和数目不受选项的顺序和数目的影响。总是按下述顺序显示并且每项最多一列。 <br/><br/>行数、字数、字节数、文件名 <br/><br/>如果命令行中没有文件名，则输出中不出现文件名。 <br/><br/>例如： <br/><br/>$ wc - lcw file1 file2 <br/><br/>4 33 file1 <br/><br/>7 52 file2 <br/><br/>11 11 85 total <br/><br/>省略任选项-lcw，wc命令的执行结果与上面一样<br/><br/>示例:<br/><br/>wc命令用来计算一个文件或者指定的多个文件中的行数，单词数和字符数。如：<br/>wc filename<br/>第一列显示行数，第二列显示单词数，第三列显示字符数。<br/>wc 有四个参数可选，分别是l,c,m,w<br/>wc -l filename 报告行数<br/>wc -c filename 报告字节数<br/>wc -m filename 报告字符数<br/>wc -w filename 报告单词数 
]]>
</description>
</item><item>
<link>https://atim.cn/post/1017/</link>
<title><![CDATA[ls 命令详解]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Tue, 24 May 2011 14:40:21 +0000</pubDate> 
<guid>https://atim.cn/post/1017/</guid> 
<description>
<![CDATA[ 
	ls 命令可以说是Linux下最常用的命令之一。它有众多的选项，其中有很多是很有用的，你是否熟悉呢？下面列出了 ls 命令的绝大多数选项。 <br/>　　<br/>　　-a 列出目录下的所有文件，包括以 . 开头的隐含文件。 <br/>　　-b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。 <br/>　　-c 输出文件的 i 节点的修改时间，并以此排序。 <br/>　　-d 将目录象文件一样显示，而不是显示其下的文件。 <br/>　　-e 输出时间的全部信息，而不是输出简略信息。 <br/>　　-f -U 对输出的文件不排序。 <br/>　　-g 无用。 <br/>　　-i 输出文件的 i 节点的索引信息。 <br/>　　-k 以 k 字节的形式表示文件的大小。 <br/>　　-l 列出文件的详细信息。 <br/>　　-m 横向输出文件名，并以“，”作分格符。 <br/>　　-n 用数字的 UID,GID 代替名称。 <br/>　　-o 显示文件的除组信息外的详细信息。 <br/>　　-p -F 在每个文件名后附上一个字符以说明该文件的类型，“*”表示可执行的普通 <br/>　　文件；“/”表示目录；“@”表示符号链接；“&#124;”表示FIFOs；“=”表示套 <br/>　　接字(sockets)。 <br/>　　-q 用?代替不可输出的字符。 <br/>　　-r 对目录反向排序。 <br/>　　-s 在每个文件名后输出该文件的大小。 <br/>　　-t 以时间排序。 <br/>　　-u 以文件上次被访问的时间排序。 <br/>　　-x 按列输出，横向排序。 <br/>　　-A 显示除 “.”和“..”外的所有文件。 <br/>　　-B 不输出以 “~”结尾的备份文件。 <br/>　　-C 按列输出，纵向排序。 <br/>　　-G 输出文件的组的信息。 <br/>　　-L 列出链接文件名而不是链接到的文件。 <br/>　　-N 不限制文件长度。 <br/>　　-Q 把输出的文件名用双引号括起来。 <br/>　　-R 列出所有子目录下的文件。 <br/>　　-S 以文件大小排序。 <br/>　　-X 以文件的扩展名(最后一个 . 后的字符)排序。 <br/>　　-1 一行只输出一个文件。 <br/>　　--color=no 不显示彩色文件名 <br/>　　--help 在标准输出上显示帮助信息。 <br/>　　--version 在标准输出上输出版本信息并退出。
]]>
</description>
</item><item>
<link>https://atim.cn/post/1016/</link>
<title><![CDATA[Linux shell中使用ftp自动下载上传文件]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Sat, 21 May 2011 05:25:15 +0000</pubDate> 
<guid>https://atim.cn/post/1016/</guid> 
<description>
<![CDATA[ 
	<br/><strong>FTP自动登录批量下载文件</strong><br/><br/>从ftp服务器192.168.1.171上的/home/data 到本地的/home/databackup<br/><div class="code"><br/>#!/bin/bash <br/>ftp -v -n 192.168.1.171<br/>user guest 123456 <br/>binary <br/>cd /home/data <br/>lcd /home/databackup <br/>prompt <br/>mget * <br/>close <br/>bye<br/></div><br/><strong>FTP自动登录批量上传文件</strong><br/><br/>从ftp服务器192.168.1.171上的/home/data 到本地的/home/databackup<br/><div class="code"><br/>#!/bin/bash <br/>ftp -v -n 192.168.1.171 &lt;&lt; END<br/>user guest 123456<br/>binary<br/>hash<br/>cd /home/data<br/>lcd /home/databackup<br/>prompt<br/>mput *<br/>bye<br/>END<br/></div>
]]>
</description>
</item><item>
<link>https://atim.cn/post/1009/</link>
<title><![CDATA[top命令]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Thu, 31 Mar 2011 03:13:32 +0000</pubDate> 
<guid>https://atim.cn/post/1009/</guid> 
<description>
<![CDATA[ 
	top命令是Linux下常用的性能分析工具，能够实时显示系统中各个进程的资源占用状况，类似于Windows的任务管理器。下面详细介绍它的使用方法。<br/><div class="code"><br/>top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48<br/>Tasks: 29 total,&nbsp;&nbsp; 1 running, 28 sleeping,&nbsp;&nbsp; 0 stopped,&nbsp;&nbsp; 0 zombie<br/>Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si<br/>Mem:&nbsp;&nbsp;&nbsp;&nbsp;191272k total,&nbsp;&nbsp; 173656k used,&nbsp;&nbsp;&nbsp;&nbsp;17616k free,&nbsp;&nbsp;&nbsp;&nbsp;22052k buffers<br/>Swap:&nbsp;&nbsp; 192772k total,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0k used,&nbsp;&nbsp; 192772k free,&nbsp;&nbsp; 123988k cached<br/><br/>&nbsp;&nbsp; PID USER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PR NI VIRT RES SHR S %CPU %MEM&nbsp;&nbsp;&nbsp;&nbsp;TIME+ COMMAND<br/>1379 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16&nbsp;&nbsp; 0 7976 2456 1980 S 0.7 1.3&nbsp;&nbsp; 0:11.03 sshd<br/>14704 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16&nbsp;&nbsp; 0 2128 980 796 R 0.7 0.5&nbsp;&nbsp; 0:02.72 top<br/>&nbsp;&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16&nbsp;&nbsp; 0 1992 632 544 S 0.0 0.3&nbsp;&nbsp; 0:00.90 init<br/>&nbsp;&nbsp;&nbsp;&nbsp; 2 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;34 19&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0 S 0.0 0.0&nbsp;&nbsp; 0:00.00 ksoftirqd/0<br/>&nbsp;&nbsp;&nbsp;&nbsp; 3 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RT&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0 S 0.0 0.0&nbsp;&nbsp; 0:00.00 watchdog/0<br/></div><br/>统计信息区<br/><br/>前五行是系统整体的统计信息。第一行是任务队列信息，同 uptime 命令的执行结果。其内容如下：<br/>01:06:48 &nbsp;&nbsp;当前时间<br/>up 1:22 &nbsp;&nbsp;系统运行时间，格式为时:分<br/>1 user &nbsp;&nbsp;当前登录用户数<br/>load average: 0.06, 0.60, 0.48 &nbsp;&nbsp;系统负载，即任务队列的平均长度。<br/>三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。<br/><br/>第二、三行为进程和CPU的信息。当有多个CPU时，这些内容可能会超过两行。内容如下：<br/>Tasks: 29 total &nbsp;&nbsp;进程总数<br/>1 running &nbsp;&nbsp;正在运行的进程数<br/>28 sleeping &nbsp;&nbsp;睡眠的进程数<br/>0 stopped &nbsp;&nbsp;停止的进程数<br/>0 zombie &nbsp;&nbsp;僵尸进程数<br/>Cpu(s): 0.3% us &nbsp;&nbsp;用户空间占用CPU百分比<br/>1.0% sy &nbsp;&nbsp;内核空间占用CPU百分比<br/>0.0% ni &nbsp;&nbsp;用户进程空间内改变过优先级的进程占用CPU百分比<br/>98.7% id &nbsp;&nbsp;空闲CPU百分比<br/>0.0% wa &nbsp;&nbsp;等待输入输出的CPU时间百分比<br/>0.0% hi &nbsp;&nbsp;<br/>0.0% si &nbsp;&nbsp;<br/><br/>最后两行为内存信息。内容如下：<br/>Mem: 191272k total &nbsp;&nbsp;物理内存总量<br/>173656k used &nbsp;&nbsp;使用的物理内存总量<br/>17616k free &nbsp;&nbsp;空闲内存总量<br/>22052k buffers &nbsp;&nbsp;用作内核缓存的内存量<br/>Swap: 192772k total &nbsp;&nbsp;交换区总量<br/>0k used &nbsp;&nbsp;使用的交换区总量<br/>192772k free &nbsp;&nbsp;空闲交换区总量<br/>123988k cached &nbsp;&nbsp;缓冲的交换区总量。<br/>内存中的内容被换出到交换区，而后又被换入到内存，但使用过的交换区尚未被覆盖，<br/>该数值即为这些内容已存在于内存中的交换区的大小。<br/>相应的内存再次被换出时可不必再对交换区写入。<br/>进程信息区<br/><br/>统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。<br/>序号 &nbsp;&nbsp;列名 &nbsp;&nbsp;含义<br/>a &nbsp;&nbsp;PID &nbsp;&nbsp;进程id<br/>b &nbsp;&nbsp;PPID &nbsp;&nbsp;父进程id<br/>c &nbsp;&nbsp;RUSER &nbsp;&nbsp;Real user name<br/>d &nbsp;&nbsp;UID &nbsp;&nbsp;进程所有者的用户id<br/>e &nbsp;&nbsp;USER &nbsp;&nbsp;进程所有者的用户名<br/>f &nbsp;&nbsp;GROUP &nbsp;&nbsp;进程所有者的组名<br/>g &nbsp;&nbsp;TTY &nbsp;&nbsp;启动进程的终端名。不是从终端启动的进程则显示为 ?<br/>h &nbsp;&nbsp;PR &nbsp;&nbsp;优先级<br/>i &nbsp;&nbsp;NI &nbsp;&nbsp;nice值。负值表示高优先级，正值表示低优先级<br/>j &nbsp;&nbsp;P &nbsp;&nbsp;最后使用的CPU，仅在多CPU环境下有意义<br/>k &nbsp;&nbsp;%CPU &nbsp;&nbsp;上次更新到现在的CPU时间占用百分比<br/>l &nbsp;&nbsp;TIME &nbsp;&nbsp;进程使用的CPU时间总计，单位秒<br/>m &nbsp;&nbsp;TIME+ &nbsp;&nbsp;进程使用的CPU时间总计，单位1/100秒<br/>n &nbsp;&nbsp;%MEM &nbsp;&nbsp;进程使用的物理内存百分比<br/>o &nbsp;&nbsp;VIRT &nbsp;&nbsp;进程使用的虚拟内存总量，单位kb。VIRT=SWAP+RES<br/>p &nbsp;&nbsp;SWAP &nbsp;&nbsp;进程使用的虚拟内存中，被换出的大小，单位kb。<br/>q &nbsp;&nbsp;RES &nbsp;&nbsp;进程使用的、未被换出的物理内存大小，单位kb。RES=CODE+DATA<br/>r &nbsp;&nbsp;CODE &nbsp;&nbsp;可执行代码占用的物理内存大小，单位kb<br/>s &nbsp;&nbsp;DATA &nbsp;&nbsp;可执行代码以外的部分(数据段+栈)占用的物理内存大小，单位kb<br/>t &nbsp;&nbsp;SHR &nbsp;&nbsp;共享内存大小，单位kb<br/>u &nbsp;&nbsp;nFLT &nbsp;&nbsp;页面错误次数<br/>v &nbsp;&nbsp;nDRT &nbsp;&nbsp;最后一次写入到现在，被修改过的页面数。<br/>w &nbsp;&nbsp;S &nbsp;&nbsp;进程状态。<br/>D=不可中断的睡眠状态<br/>R=运行<br/>S=睡眠<br/>T=跟踪/停止<br/>Z=僵尸进程<br/>x &nbsp;&nbsp;COMMAND &nbsp;&nbsp;命令名/命令行<br/>y &nbsp;&nbsp;WCHAN &nbsp;&nbsp;若该进程在睡眠，则显示睡眠中的系统函数名<br/>z &nbsp;&nbsp;Flags &nbsp;&nbsp;任务标志，参考 sched.h<br/><br/>默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。<br/>更改显示内容<br/><br/>通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表，按 a-z 即可显示或隐藏对应的列，最后按回车键确定。<br/><br/>按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动，而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。<br/><br/>按大写的 F 或 O 键，然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。<br/><br/>命令使用<br/><br/>1． 工具（命令）名称<br/>top<br/>2．工具（命令）作用<br/>显示系统当前的进程和其他状况； top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序；而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.<br/>3．环境设置<br/>在Linux下使用。<br/>4．使用方法<br/>4．1使用格式<br/>top [-] [d] [p] [q] [c] [C] [S] [s] [n]<br/>4．2参数说明<br/>d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。<br/>p 通过指定监控进程ID来仅仅监控某个进程的状态。<br/>q该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限，那么top将以尽可能高的优先级运行。<br/>S 指定累计模式<br/>s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。<br/>i 使top不显示任何闲置或者僵死进程。<br/>c 显示整个命令行而不只是显示命令名<br/>4.3其他<br/>　　下面介绍在top命令执行过程中可以使用的一些交互命令。从使用角度来看，熟练的掌握这些命令比掌握选项还重要一些。这些命令都是单字母的，如果在命令行选项中使用了s选项，则可能其中一些命令会被屏蔽掉。<br/>　　Ctrl+L 擦除并且重写屏幕。<br/>　　h或者? 显示帮助画面，给出一些简短的命令总结说明。<br/>　　k 终止一个进程。系统将提示用户输入需要终止的进程PID，以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号；如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。<br/>　　i 忽略闲置和僵死进程。这是一个开关式命令。<br/>　　q 退出程序。<br/>　　r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低，反之则可以使该进程拥有更高的优先权。默认值是10。<br/>　　S 切换到累计模式。<br/>　　s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间，单位为s。如果有小数，就换算成m s。输入0值则系统将不断刷新，默认值是5 s。需要注意的是如果设置太小的时间，很可能会引起不断刷新，从而根本来不及看清显示的情况，而且系统负载也会大大增加。<br/>　　f或者F 从当前显示中添加或者删除项目。<br/>　　o或者O 改变显示项目的顺序。<br/>　　l 切换显示平均负载和启动时间信息。<br/>　　m 切换显示内存信息。<br/>　　t 切换显示进程和CPU状态信息。<br/>　　c 切换显示命令名称和完整命令行。<br/>　　M 根据驻留内存大小进行排序。<br/>　　P 根据CPU使用百分比大小进行排序。<br/>　　T 根据时间/累计时间进行排序。<br/>&nbsp;&nbsp;&nbsp;&nbsp; W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。
]]>
</description>
</item><item>
<link>https://atim.cn/post/470/</link>
<title><![CDATA[Ubuntu的常用命令]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Wed, 10 Dec 2008 12:14:53 +0000</pubDate> 
<guid>https://atim.cn/post/470/</guid> 
<description>
<![CDATA[ 
	此文描述了自ubuntu 5.10版本之后的系统所代命令参数，dapper,edgy以及7.04版本中可能会有一些变动，于此文不同，如有疑问可以发邮件给isher或访问wiki.ubuntu.com.cn<br/><br/>下面内容及向心内文的内容均为ubuntu（cn）的wiki中摘录，为方便广大是用ubuntu的使用者查找和使用，特摘录安装 查看软件xxx安装内容<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* dpkg -L xxx<br/><br/>查找软件<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* apt-cache search 正则表达式<br/><br/>查找文件属于哪个包<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* dpkg -S filename<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;apt-file search filename<br/><br/>查询软件xxx依赖哪些包<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* apt-cache depends xxx<br/><br/><br/><br/>查询软件xxx被哪些包依赖<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* apt-cache rdepends xxx<br/><br/>增加一个光盘源<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo apt-cdrom add<br/><br/>系统升级<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo apt-get update<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo apt-get upgrade<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo apt-get dist-upgrade<br/><br/>清除所以删除包的残余配置文件<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* dpkg -l &#124;grep ^rc&#124;awk '&#123;print $2&#125;' &#124;tr ["n"] [" "]&#124;sudo xargs dpkg -P -<br/><br/>编译时缺少h文件的自动处理<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo auto-apt run ./configure<br/><br/>查看安装软件时下载包的临时存放目录<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* ls /var/cache/apt/archives<br/><br/>备份当前系统安装的所有包的列表<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* dpkg --get-selections &#124; grep -v deinstall > ~/somefile<br/><br/>从上面备份的安装包的列表文件恢复所有包<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* dpkg --set-selections < ~/somefile<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo dselect<br/><br/>清理旧版本的软件缓存<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo apt-get autoclean<br/><br/>清理所有软件缓存<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo apt-get clean<br/><br/>删除系统不再使用的孤立软件<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo apt-get autoremove<br/><br/>查看包在服务器上面的地址<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* apt-get -qq --print-uris install ssh &#124; cut -d' -f2<br/><br/>系统 查看内核<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* uname -a<br/><br/>查看Ubuntu版本<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* cat /etc/issue<br/><br/>查看内核加载的模块<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* lsmod<br/><br/>查看PCI设备<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* lspci<br/><br/>查看USB设备<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* lsusb<br/><br/>查看网卡状态<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo ethtool eth0<br/><br/>查看CPU信息<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* cat /proc/cpuinfo<br/><br/>显示当前硬件信息<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* lshw<br/><br/>硬盘 查看硬盘的分区<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo fdisk -l<br/><br/>查看IDE硬盘信息<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo hdparm -i /dev/hda<br/><br/>查看STAT硬盘信息<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo hdparm -I /dev/sda<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;或<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo apt-get install blktool<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo blktool /dev/sda id<br/><br/>查看硬盘剩余空间<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* df -h<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;df -H<br/><br/>查看目录占用空间<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* du -hs 目录名<br/><br/>优盘没法卸载<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sync<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fuser -km /media/usbdisk<br/><br/>内存 查看当前的内存使用情况<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* free -m<br/><br/>进程 查看当前有哪些进程<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* ps -A<br/><br/>中止一个进程<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* kill 进程号(就是ps -A中的第一列的数字)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;或者 killall 进程名<br/><br/>强制中止一个进程(在上面进程中止不成功的时候使用)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* kill -9 进程号<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;或者 killall -9 进程名<br/><br/>图形方式中止一个程序<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* xkill 出现骷髅标志的鼠标，点击需要中止的程序即可<br/><br/>查看当前进程的实时状况<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* top<br/><br/>查看进程打开的文件<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* lsof -p<br/><br/>ADSL 配置 ADSL<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo pppoeconf<br/><br/>ADSL手工拨号<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo pon dsl-provider<br/><br/>激活 ADSL<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo /etc/ppp/pppoe_on_boot<br/><br/>断开 ADSL<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo poff<br/><br/>查看拨号日志<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo plog<br/><br/>如何设置动态域名<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* #首先去 http://www.3322.org 申请一个动态域名<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#然后修改 /etc/ppp/ip-up 增加拨号时更新域名指令<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo vim /etc/ppp/ip-up<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#在最后增加如下行<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w3m -no-cookie -dump 'http://username:password@members.3322.org/dyndns/update?system=dyndns&hostname=yourdns.3322.org'<br/><br/>网络 根据IP查网卡地址<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* arping IP地址<br/><br/>查看当前IP地址<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* ifconfig eth0 &#124;awk '/inet/ &#123;split($2,x,":");print x[2]&#125;'<br/><br/>查看当前外网的IP地址<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* w3m -no-cookie -dump www.ip138.com&#124;grep -o '[0-9]&#123;1,3&#125;.[0-9]&#123;1,3&#125;.[0-9]&#123;1,3&#125;.[0-9]&#123;1,3&#125;'<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w3m -no-cookie -dump www.123cha.com&#124;grep -o '[0-9]&#123;1,3&#125;.[0-9]&#123;1,3&#125;.[0-9]&#123;1,3&#125;.[0-9]&#123;1,3&#125;'<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w3m -no-cookie -dump ip.loveroot.com&#124;grep -o '[0-9]&#123;1,3&#125;.[0-9]&#123;1,3&#125;.[0-9]&#123;1,3&#125;.[0-9]&#123;1,3&#125;'<br/><br/>查看当前监听80端口的程序<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* lsof -i :80<br/><br/>查看当前网卡的物理地址<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* arp -a &#124; awk '&#123;print $4&#125;'<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifconfig eth0 &#124; head -1 &#124; awk '&#123;print $5&#125;'<br/><br/>立即让网络支持nat<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* echo 1 &#124; sudo tee /proc/sys/net/ipv4/ip_forward<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo iptables -t nat -I POSTROUTING -j MASQUERADE<br/><br/>查看路由信息<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* netstat -rn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo route -n<br/><br/>手工增加删除一条路由<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1<br/><br/>修改网卡MAC地址的方法<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo ifconfig eth0 down #关闭网卡<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE #然后改地址<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo ifconfig eth0 up #然后启动网卡<br/><br/>统计当前IP连接的个数<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* netstat -na&#124;grep ESTABLISHED&#124;awk '&#123;print $5&#125;'&#124;awk -F: '&#123;print $1&#125;'&#124;sort&#124;uniq -c&#124;sort -r -n<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;netstat -na&#124;grep SYN&#124;awk '&#123;print $5&#125;'&#124;awk -F: '&#123;print $1&#125;'&#124;sort&#124;uniq -c&#124;sort -r -n<br/><br/>统计当前20000个IP包中大于100个IP包的IP地址<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* tcpdump -tnn -c 20000 -i eth0 &#124; awk -F "." '&#123;print $1"."$2"."$3"."$4&#125;' &#124; sort &#124; uniq -c &#124; sort -nr &#124; awk ' $1 > 100 '<br/><br/>屏蔽IPV6<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* echo "blacklist ipv6" &#124; sudo tee /etc/modprobe.d/blacklist-ipv6<br/><br/>服务 添加一个服务<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo update-rc.d 服务名 defaults 99<br/><br/>删除一个服务<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo update-rc.d 服务名 remove<br/><br/>临时重启一个服务<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* /etc/init.d/服务名 restart<br/><br/>临时关闭一个服务<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* /etc/init.d/服务名 stop<br/><br/>临时启动一个服务<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* /etc/init.d/服务名 start<br/><br/>设置 配置默认Java使用哪个<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo update-alternatives --config java<br/><br/>修改用户资料<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo chfn userid<br/><br/>给apt设置代理<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* export http_proxy=http://xx.xx.xx.xx:xxx<br/><br/>修改系统登录信息<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo vim /etc/motd<br/><br/>中文 转换文件名由GBK为UTF8<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo apt-get install convmv<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;convmv -r -f cp936 -t utf8 --notest --nosmart *<br/><br/>批量转换src目录下的所有文件内容由GBK到UTF8<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* find src -type d -exec mkdir -p utf8/&#123;&#125; ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;find src -type f -exec iconv -f GBK -t UTF-8 &#123;&#125; -o utf8/&#123;&#125; ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mv utf8/* src<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rm -fr utf8<br/><br/>转换文件内容由GBK到UTF8<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* iconv -f gbk -t utf8 $i > newfile<br/><br/>转换 mp3 标签编码<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo apt-get install python-mutagen<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;find . -iname “*.mp3” -execdir mid3iconv -e GBK &#123;&#125; ;<br/><br/>控制台下显示中文<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo apt-get install zhcon<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用时，输入zhcon即可<br/><br/>文件 快速查找某个文件<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* whereis filename<br/>&nbsp;&nbsp;&nbsp;&nbsp;* find 目录 -name 文件名<br/><br/>查看文件类型<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* file filename<br/><br/>显示xxx文件倒数6行的内容<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* tail -n 6 xxx<br/><br/>让tail不停地读地最新的内容<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* tail -n 10 -f /var/log/apache2/access.log<br/><br/>查看文件中间的第五行（含）到第10行（含）的内容<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sed -n '5,10p' /var/log/apache2/access.log<br/><br/>查找包含xxx字符串的文件<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* grep -l -r xxx .<br/><br/>查找关于xxx的命令<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* apropos xxx<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;man -k xxx<br/><br/>通过ssh传输文件<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* scp -rp /path/filename username@remoteIP:/path #将本地文件拷贝到服务器上<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scp -rp username@remoteIP:/path/filename /path #将远程文件从服务器下载到本地<br/><br/>查看某个文件被哪些应用程序读写<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* lsof 文件名<br/><br/>把所有文件的后辍由rm改为rmvb<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* rename 's/.rm$/.rmvb/' *<br/><br/>把所有文件名中的大写改为小写<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* rename 'tr/A-Z/a-z/' *<br/><br/>删除特殊文件名的文件，如文件名：--help.txt<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* rm -- --help.txt 或者 rm ./--help.txt<br/><br/>查看当前目录的子目录<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* ls -d */. 或 echo */.<br/><br/>将当前目录下最近30天访问过的文件移动到上级back目录<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* find . -type f -atime -30 -exec mv &#123;&#125; ../back ;<br/><br/>将当前目录下最近2小时到8小时之内的文件显示出来<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* find . -mmin +120 -mmin -480 -exec more &#123;&#125; ;<br/><br/>删除修改时间在30天之前的所有文件<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* find . -type f -mtime +30 -mtime -3600 -exec rm &#123;&#125; ;<br/><br/>查找guest用户的以avi或者rm结尾的文件并删除掉<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* find . -name '*.avi' -o -name '*.rm' -user 'guest' -exec rm &#123;&#125; ;<br/><br/>查找的不以java和xml结尾,并7天没有使用的文件删除掉<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* find . ! -name *.java ! -name ‘*.xml’ -atime +7 -exec rm &#123;&#125; ;<br/><br/>统计当前文件个数<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* ls /usr/bin&#124;wc -w<br/><br/>统计当前目录个数<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* ls -l /usr/bin&#124;grep ^d&#124;wc -l<br/><br/>显示当前目录下2006-01-01的文件名<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* ls -l &#124;grep 2006-01-01 &#124;awk '&#123;print $8&#125;'<br/><br/>压缩 解压缩 xxx.tar.gz<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* tar -zxvf xxx.tar.gz<br/><br/>解压缩 xxx.tar.bz2<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* tar -jxvf xxx.tar.bz2<br/><br/>压缩aaa bbb目录为xxx.tar.gz<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* tar -zcvf xxx.tar.gz aaa bbb<br/><br/>压缩aaa bbb目录为xxx.tar.bz2<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* tar -jcvf xxx.tar.bz2 aaa bbb<br/><br/>Nautilus 显示隐藏文件<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* Ctrl+h<br/><br/>显示地址栏<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* Ctrl+l<br/><br/>特殊 URI 地址<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* * computer:/// - 全部挂载的设备和网络<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* network:/// - 浏览可用的网络<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* burn:/// - 一个刻录 CDs/DVDs 的数据虚拟目录<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* smb:/// - 可用的 windows/samba 网络资源<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* x-nautilus-desktop:/// - 桌面项目和图标<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* file:/// - 本地文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* trash:/// - 本地回收站目录<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* ftp:// - FTP 文件夹<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* ssh:// - SSH 文件夹<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* fonts:/// - 字体文件夹，可将字体文件拖到此处以完成安装<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* themes:/// - 系统主题文件夹<br/><br/>查看已安装字体<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* 在nautilus的地址栏里输入”fonts:///“，就可以查看本机所有的fonts<br/><br/>程序 详细显示程序的运行信息<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* strace -f -F -o outfile <cmd><br/><br/>日期和时间 设置日期<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* #date -s mm/dd/yy<br/><br/>设置时间<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* #date -s HH:MM<br/><br/>将时间写入CMOS<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* hwclock --systohc<br/><br/>读取CMOS时间<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* hwclock --hctosys<br/><br/>从服务器上同步时间<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo ntpdate time.nist.gov<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo ntpdate time.windows.com<br/><br/>控制台 不同控制台间切换<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* Ctrl + ALT + ←<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ctrl + ALT + →<br/><br/>指定控制台切换<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* Ctrl + ALT + Fn(n:1~7)<br/><br/>控制台下滚屏<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* SHIFT + pageUp/pageDown<br/><br/>控制台抓图<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* setterm -dump n(n:1~7)<br/><br/>数据库 mysql的数据库存放在地方<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* /var/lib/mysql<br/><br/>从mysql中导出和导入数据<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* mysqldump 数据库名 > 文件名 #导出数据库<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysqladmin create 数据库名 #建立数据库<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql 数据库名 < 文件名 #导入数据库<br/><br/>忘了mysql的root口令怎么办<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo /etc/init.d/mysql stop<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo mysqld_safe --skip-grant-tables &<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo mysqladmin -u user password 'newpassword''<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo mysqladmin flush-privileges<br/><br/>修改mysql的root口令<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo mysqladmin -uroot -p password '你的新密码'<br/><br/>其它 下载网站文档<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* wget -r -p -np -k http://www.21cn.com<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;· -r：在本机建立服务器端目录结构；<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;· -p: 下载显示HTML文件的所有图片；<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;· -np：只下载目标站点指定目录及其子目录的内容；<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;· -k: 转换非相对链接为相对链接。<br/><br/>如何删除Totem电影播放机的播放历史记录<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* rm ~/.recently-used<br/><br/>如何更换gnome程序的快捷键<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* 点击菜单，鼠标停留在某条菜单上，键盘输入任意你所需要的键，可以是组合键，会立即生效；<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果要清除该快捷键，请使用backspace<br/><br/>vim 如何显示彩色字符<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* sudo cp /usr/share/vim/vimcurrent/vimrc_example.vim /usr/share/vim/vimrc<br/><br/>如何在命令行删除在会话设置的启动程序<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* cd ~/.config/autostart<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rm 需要删除启动程序<br/><br/>如何提高wine的反应速度 sudo sed -ie '/GBK/,/^&#125;/d' /usr/share/X11/locale/zh_CN.UTF-8/XLC_LOCALE
]]>
</description>
</item><item>
<link>https://atim.cn/post/468/</link>
<title><![CDATA[Linux的用户和组群管理]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Mon, 01 Dec 2008 04:35:18 +0000</pubDate> 
<guid>https://atim.cn/post/468/</guid> 
<description>
<![CDATA[ 
	Linux 是一个多用户的操作系统，用户和用户组的管理是系统管理员的重要工作之一。本文的内容包括如何利用图形化工具 rfuser 和在命令行界面下完成用户账号、工作组的建立和维护，并正确设置用户权限和安全性问题。<br/>利用图形配置工具 rfuser 与使用命令进行用户/用户组管理完成的是同样的工作，不同之处在于图形工具的操作界面友好直观，用户也不必去记忆大量的命令和参数。<br/>概述<br/>在 Linux 系统中，每个用户对应一个帐号。Red Flag Server 4.1 安装完成后，系统本身已创建了一些特殊用户，它们具有特殊的意义，其中最重要的是超级用户，即 root。<br/>超级用户承担了系统管理的一切任务，可以不受限制地进行任何操作，因此建议只有在完全必要的情况下才以 root 身份进行操作。<br/>由超级用户创建允许登录系统的普通用户，一般超级用户也需要为自己建立一个用来处理一般事务的普通帐户。<br/>下面是用户和组群管理的一些基本概念：<br/>用户名： 系统中用来标识用户的名称，可以是字母、数字组成的字符串，区分大小写。<br/>用户标识UID： 系统中用来标识用户的数字。<br/>用户主目录： 系统为每个用户配置的单独使用环境，即用户登录系统后最初所在的目录，用户的文件都放置在此目录下。<br/>登录shell： 用户登录后启动以接收用户的输入并执行输入相应命令的程序，如/bin/bash、<br/>/bin/csh。<br/>用户组/组群： 具有相似属性的多个用户被分配到一个组中。<br/>组标识GID： 用来表示用户组的数字标识<br/>超级用户在系统中的用户ID和组ID都是0。<br/>普通用户的用户 ID（UID）从500开始编号，并且默认属于与用户名同名的组。组 ID（GID）<br/>也从500开始编号。<br/>用su命令改变身份<br/>用户在系统使用过程中可以随时使用 su 命令来改变身份。例如，系统管理员在平时工作时可以用普通帐号登录，在需要进行系统维护时用 su 命令获得 root 权限，之后再用 su 回到原帐号。<br/>su 的语法为：su<br/>username 是要切换到的用户名，如果不指定用户名，则默认将用户身份切换为 root，系统会要求给出正确的口令。<br/>默认情况下，只要知道 root 口令，任何用户都可以通过 su 命令切换到 root 身份，这是一个安全漏洞。所以我们强烈建议：只有 wheel 组成员才可以通过 su 命令转换为root。实现的办法是修改 /etc/pam.d/su 文件，取消对如下一句“auth required<br/>/lib/security/$ISA/pam_wheel.so use_uid”的注释。<br/>系统中的用户管理配置文件<br/>/etc/passwd 文件<br/>Red Flag Server 4.1 系统中用于管理用户帐号的基本文件是 /etc/passwd，该文件中包含了系统中所有用户的用户名和它们的相关信息。每个用户帐号在文件中对应一行，并且用冒号（；）分为七个域。<br/>每一行的形式如下：<br/>用户名:加密的口令:用户ID:组ID:用户的全名或描述:登录目录:登录shell<br/>下面是 root 用户在此文件中对应的行：<br/>root:X:0:0:root:/root:/bin/bash<br/>Linux 系统将每一个用户仅仅看成是一个数字，即用每个用户惟一的用户 ID 来识别，配置文件<br/>/etc/passwd 给出了系统用户 ID 与用户名之间及其他信息的对应关系。<br/>/etc/passwd 文件对系统的所有用户都是可读的，这样的好处是每个用户都可以知道系统上有哪些用户，但缺点是其他用户的口令容易受到攻击（尤其当口令较简单时）。所以在红旗 Linux 中使用影子口令格式，将用户的口令存储在另一个文件 /etc/shadow 中，该文件只有根用户 root 可读，因而大大提高了安全性。<br/>/etc/shadow 文件<br/>为了保证系统的安全性，系统通常对用户的口令进行 shadow 处理，并把用户口令保存到只有超<br/>级用户可读的 /etc/shadow 文件中。该文件包含了系统中所有用户和用户口令等相关信息。<br/>每个用户在该文件中对应一行，并且用冒号分成九个域。每一行包括以下内容：<br/>1、 用户登录名<br/>2、 用户加密后的口令，（若为空，表示该用户不需口令即可登录，若为 * 号，表示该帐号被禁<br/>止）<br/>3、 从1970年1月1日至口令最近一次被修改的天数<br/>4、 口令在多少天内不能被用户修改<br/>5、 口令在多少天后必须被修改<br/>6、 口令过期多少天后用户帐号被禁止<br/>7、 口令在到期多少天内给用户发出警告<br/>8、 口令自1970年1月1日被禁止的天数<br/>9、 保留域<br/>/etc/group 文件<br/>在 Linux 中，使用组来赋予用户访问文件的不同权限。组的划分可以采用多种标准，一个用户可<br/>同时包含在多个组内。管理用户组的基本文件是 /etc/group，其中包含了系统中所有用户组的相关信息。每个用户组对应文件中的一行，并用冒号分成四个域。其中每一行的形式如下：<br/>用户组名：加密后的组口令：组ID：组成员列表<br/>下面是用户组 sys 在 /etc/group 中对应的一行：<br/>sys:x:3:root,bin,adm<br/>代表的信息包括：系统中有一个称为 sys 的用户组，设有口令，组 ID 为3，组中的成员有 root、<br/>bin、adm 三个用户。<br/>Red Flag Server 4.1 在安装中同样创建了一些标准的用户组，在一般情况下，建议您不要对这些用户组进行删除和修改，除非您完全明白它们的用途和意义。<br/>/etc/skel 目录<br/>一般来说，每个用户都有自己的主目录，用户成功登录后就处于自己的主目录下。主目录中存放有与用户相关的文件、命令和配置。当为新用户创建主目录时，系统会在新用户的主目录下建立一份<br/>/etc/skel 目录下所有文件的拷贝，用来初始化用户的主目录。<br/>使用rfuser管理用户与组群<br/>利用 rfuser 用户和组群管理工具，可以轻松的管理系统中的用户和用户组，包括完成新建、查看、管理帐号、密码、权限等所有操作。<br/>在控制面板的“系统配置”项中选择“本地用户和组”，或在 KDE 桌面环境下使用命令 rfuser ，<br/>即可打开本地用户和组管理器。<br/>rfuser 工具需要以超级用户身份运行。<br/>系统缺省创建的用户和组群对于系统管理和应用程序的使用有重要的意义，不要随意修改或删除它们，尤其是 root 用户，否则有可能导致系统异常甚至崩溃。<br/>查看用户和用户组<br/>在图2-1所示的本地用户和组管理主界面中，点击“用户”标签列出本地用户及其基本信息，包括用户名、用户 UID、所属主组群、用户描述信息、登录 shell 和用户的主目录信息；点击“组”标<br/>签显示系统中组群信息，包括组名称、组 ID 和组成员。<br/>默认情况下，用户和组列表中会列出系统中所有的用户和用户组信息。如果要想只显示使用过程中添加的用户和用户组信息而不显示系统内建用户和用户组，按下窗口右上方的“隐藏系统帐户”按钮，或者在菜单中选择“工具隐藏系统帐户”，这时显示用户信息.<br/>要恢复显示所有用户/用户组信息，按窗口右上方的“显示所有帐户”按钮，或者在“工具”菜单中选择“显示所有帐户”。<br/>添加新用户<br/>点击工具栏中的“添加新用户”按钮，出现“增加新用户”向导。在“用户信息”窗口中输入用户名和描述信息，用户名的首位必须是英文字母，并且不能与已有的用户名重复；“用户ID”是该用户在系统中唯一的标识，范围是1~65535，默认情况下，系统会为用户指定一个500以上的标识号，也可以手工指定用户的 UID号，但推荐由系统自动分配；“登录shell”一般只需采用默认的/bin/bash；添加用户时默认会在系统中创建一个用户主目录 /home/username ，也可以指定其他的目录。<br/>点击“继续”按钮进入下一步，在右侧的“密码”和“确认”文本框中输入至少6位的用户密码。<br/>密码最好是数字、字母及特殊字符的组合，图方便使用简单的数字、英语单词、生日、电话等都可能成为个人信息安全的隐患。<br/>可以设置用户密码的使用期限，选中“永不过期”则用户密码永远有效；选择“无密码”表示该用户不需要密码就可以登录系统。<br/>点击“继续”按钮进入“用户—组关系设置”界面。<br/>从系统已有的用户组列表中选择新添加用户将从属的组，按“增加->”按钮加入“隶属于”列表。<br/>一个用户可以同时从属于几个不同的组，在“主组群”中选择用户所属的主组名称。<br/>Red Flag Server 4.1 使用 UPG（user private group）机制，如果在此步骤中没有选择新用户所属的用户组，系统会在创建新用户的同时会默认创建一个和用户名同名的组。<br/>点击“继续”按钮进入下一步，弹出窗口中显示了将添加用户的信息，按下“完成”按钮，新建的用户将加入用户列表。<br/>rfuser 会将新创建的用户同时加入系统的 samba 用户列表，即该用户也同时成为能够使<br/>用 SMB 远程访问本机文件或打印机的授权用户。<br/>编辑用户属性<br/>要查看或修改一个已存在用户的属性，在主界面的用户列表中选中该用户双击鼠标，或按下工具<br/>栏中的“设置属性”按钮，也可以在菜单中选择“工具设置属性”，出现图2-5的的窗口：<br/>用户属性窗口分为三个标签页：<br/>用户信息：查看或修改用户的基本信息。<br/>密码：设置或修改用户口令、用户帐号的时限，设置当前用户是否可以登录系统等。<br/>用户—组关系：查看或修改用户所属的组群，设置所属的主组群等。<br/>编辑完成后按“修改”按钮使所做的配置生效。<br/>还有一种编辑用户属性的方法是：在用户列表中选择某一用户，单击鼠标右键，在快捷菜单中选择相应的菜单项进行修改。<br/>添加新组<br/>系统管理过程经常要建立新的组群，点击工具栏中的“添加新组群”按钮，出现“增加新组群”对话框。输入新组群的名称，组群名称的首位必须是英文字母，并且不能与已有的组群名重复。组ID是该组群在系统中唯一的标识，范围是1~65535，默认情况下，系统会为新添的用户组指定一个500以上的标识号，也可以手工指定一个标识号，但推荐由系统自动分配。点击“继续”按钮，在右侧的视图中设置组成员信息。从系统的用户列表中选择将隶属于新组的成员，按“增加- >”按钮加入“组成员”列表。一个组中可以包含多个用户。<br/>点击“继续”按钮进入下一步，弹出窗口中显示了将添加用户组的信息，按下“完成”按钮，新添的用户组将出现在组列表中。<br/>编辑组群属性<br/>在主界面的组列表中选中一个已存在的组双击鼠标右键，按工具栏中的“设置属性”按钮，或在菜单中选择“工具设置属性”，显示组属性设置窗口，可以对组群名称、组ID、组用户成员等属性进行修改。<br/>还有一种编辑组属性的方法是：在组列表中选择某组，单击鼠标右键，在快捷菜单中选择相应的菜单项进行修改。<br/>删除本地用户和组<br/>在列表中选择要删除的用户或用户组，按下工具栏中的“删除”按钮，或者在菜单中选择“工具删除”，确认是否删除系统用户或用户组。<br/>删除用户后，该用户主目录及其所有文件也将被删除。<br/>命令行界面下的用户和组管理<br/>用户管理<br/>添加新用户<br/>在命令行下，超级用户 root 可以按照以下的步骤来创建新的用户帐号：<br/>1、 在 shell 提示符下，运行命令 useradd 或 adduser 来增加一个用户：<br/>如要在系统中加入一个名为 newuser 的新用户，可以使用以下的命令：<br/># useradd newuser<br/>useradd 命令还有很多可选参数，用来设置新建用户的一些属性，详细的参数使用方法，请参考<br/>其 man page。<br/>2、 为用户设置口令：<br/>通过 passwd 命令可以完成为新建用户设立口令。例如，超级用户要设置或改变用户 newuser 的<br/>口令时，可使用命令：<br/># passwd newuser<br/>系统会提示输入新的口令，新口令需要输入两次。出于安全的原因，键入口令时不会在屏幕上回<br/>显出来。当用户使用不带参数的 passwd 命令时，可以修改自己的口令。<br/>useradd 命令的常用参数和选项如下表：<br/>选项和参数 描述<br/>-c comment /etc/passwd 文件中用户全名或注释域的内容。<br/>-d home-dir 指定用于取代默认的 /home/username 的用户主目录。<br/>-e date 禁用账号的日期，格式为：YYYY-MM-DD<br/>-f days 口令过期后，账号禁用前的天数。<br/>-g group-name 用户所属主组群的组群名或组群ID（该组群在指定前必须存在）。<br/>-G group-list 用户是其中成员的其他组群名或组群号码（默认以外的）列表，用逗号分隔（组群在指定前必须存在）。 -m 若主目录不存在则创建它。<br/>-M 不要创建用户主目录。<br/>-n 不要为用户创建用户私人组群。<br/>-r 创建一个 UID 小于500的不带主目录的系统账号。<br/>-p password 使用 crypt 加密的口令。<br/>-s 指定用户登录 shell，默认为 /bin/bash。<br/>-u uid 指定用户的 UID，它必须是唯一的，且大于499。<br/>2.3.1.2 临时禁止一个用户<br/>有时，需要临时禁止一个用户帐号的使用而不是删除它。可以采用以下两种方法：<br/>1、 把用户的记录从 /etc/passwd 文件中去掉，保留其主目录和其它文件不变；<br/>2、 在 /etc/passwd 文件（或 /etc/shadow）中关于该用户的 passwd 域的第一个字符前面加上一个“*”号。<br/>删除用户<br/>完全删除一个用户包括：<br/>1、 删除 /etc/passwd 文件中此用户的记录；<br/>2、 删除 /etc/group 文件中该用户的信息；<br/>3、 删除用户的主目录；<br/>4、 删除用户所创建的或属于此用户的文件。<br/>userdel 命令可以用来删除用户及其主目录。命令的格式为：<br/># userdel [-r]<br/>使用 –r 选项，表示用户主目录及其内部的文件将被删除。<br/>用户组管理<br/>以下是用户组管理的几个常用命令。<br/>建立组<br/>groupadd 命令用于将新组加入系统，命令的格式为：<br/># groupadd newgroup<br/>新建的组默认使用大于500并大于每个其他组的 ID 的最小数值。如果要指定组的ID，可以在命令中加入 –g 参数，如下面的命令将在 /etc/passwd 文件中产生 GID 为503的项目：<br/># groupadd –g 503 newgroup<br/>groupadd 命令的常用参数和选项如下表：<br/>选项和参数 描述<br/>-g gid 指定用户组的 GID，它必须是唯一的，且大于499。<br/>-r 创建小于500的系统用户组。<br/>-f 若用户组已存在，退出并显示错误（组不会被改变）。如果指定了 -g 和 -f 选项，且用户组已存在，-g 选项就会被忽略。<br/>在组中加入用户<br/>在组中加入用户的方法是直接编辑 /etc/group 文件。前面讲过，这个文件的每一行表示一个组的<br/>信息，其中第四个域代表组内用户的列表。例如：user1、user2、user3 都属于组group1，其组的 ID 为509，则组的项目就是：<br/>group1::509:user1,user2,user3<br/>要将新用户加入组中，只需用在文件编辑器中编辑 /etc/group 文件，并将用户名加入用户列表中，用逗号分隔开即可。<br/>删除组<br/>使用 groupdel 命令来删除组。命令的格式如下：<br/># groupdel<br/>有几点需要注意：<br/>1、 组中的文件不能自行删除，也不能自行改变所属的组；<br/>2、 如果组是用户的基本组（即 /etc/passwd 文件中显示为该用户的组），则这个组无法删除。
]]>
</description>
</item><item>
<link>https://atim.cn/post/459/</link>
<title><![CDATA[chkconfig命令详细用法]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Thu, 13 Nov 2008 08:15:13 +0000</pubDate> 
<guid>https://atim.cn/post/459/</guid> 
<description>
<![CDATA[ 
	<br/>chkconfig命令可以用来检查、设置系统的各种服务。<br/>这是Red Hat公司遵循GPL规则所开发的程序，它可查询操作系统在每一个执行等级中会执行哪些系统服务，其中包括各类常驻服务。<br/><br/>使用语法：<br/>chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]<br/><br/>参数用法：<br/>--add 　增加所指定的系统服务，让chkconfig指令得以管理它，并同时在系统启动的叙述文件内增加相关数据。<br/>--del 　删除所指定的系统服务，不再由chkconfig指令管理，并同时在系统启动的叙述文件内删除相关数据。<br/>--level<等级代号> 　指定读系统服务要在哪一个执行等级中开启或关毕。<br/><br/>使用范例：<br/>chkconfig --list&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; 列出所有的系统服务<br/>chkconfig --add httpd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 增加httpd服务<br/>chkconfig --del httpd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;删除httpd服务<br/>chkconfig --level httpd 2345 on&nbsp;&nbsp;&nbsp;&nbsp; 把httpd在运行级别为2、3、4、5的情况下都是on（开启）的状态。<br/><br/>具体使用方法请在linux终端下输入：man chkconfig<br/>
]]>
</description>
</item><item>
<link>https://atim.cn/post/457/</link>
<title><![CDATA[tar 用法 参数解释]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Thu, 13 Nov 2008 05:59:48 +0000</pubDate> 
<guid>https://atim.cn/post/457/</guid> 
<description>
<![CDATA[ 
	描述<br/>tar 程序用于储存或展开 tar 存档文件。存档文件可放在磁盘中 ，也可以存为普通文件。 tar是需要参数的，可选的参数是A、c、d、r、t、u、x，您在使用tar时必须首先为 tar 指定至少一个参数；然后，您必须指定要处理的文件或目录。如果指定一个目录则该目录下的所有子目录都将被加入存档。 <br/>应用举例：<br/><br/>1）展开 abc.tar.gz 使用命令： tar xvzf abc.tar.gz 展开 abc.tar 使用命令： tar xvf abc.tar<br/><br/>2）将当前目录下的 man 目录及其子目录存成存档 man.tar tar cf man.tar ./man <br/>参数说明<br/>运行tar时必须要有下列参数中的至少一个才可运行<br/><br/>-A, --catenate, --concatenate<br/>将一存档与已有的存档合并 <br/>-c, --create <br/>建立新的存档<br/>-d, --diff, --compare<br/>比较存档与当前文件的不同之处 <br/>--delete <br/>从存档中删除<br/>-r, --append <br/>附加到存档结尾<br/>-t, --list <br/>列出存档中文件的目录<br/>-u, --update <br/>仅将较新的文件附加到存档中<br/>-x, --extract, --get <br/>从存档展开文件<br/><br/>其他参数<br/><br/>--atime-preserve <br/>不改变转储文件的存取时间<br/><br/>-b, --block-size N <br/>指定块大小为 Nx512 字节（缺省时 N=20)<br/><br/>-B, --read-full-blocks <br/>读取时重组块（？？？！！！）<br/><br/>-C, --directory DIR<br/>转到指定的目录<br/><br/>--checkpoint <br/>读取存档时显示目录名<br/><br/>-f, --file [HOSTNAME:]F <br/>指定存档或设备 (缺省为 /dev/rmt0)<br/><br/>--force-local <br/>强制使用本地存档，即使存在克隆<br/><br/>-F, --info-script F --new-volume-script F<br/>在每个磁盘结尾使用脚本 F （隐含 -M）<br/><br/>-G, --incremental <br/>建立老 GNU 格式的备份<br/><br/>-g, --listed-incremental F<br/>建立新 GNU 格式的备份<br/><br/>-h, --dereference <br/>不转储动态链接，转储动态链接指向的文件。<br/><br/>-i, --ignore-zeros <br/>忽略存档中的 0 字节块（通常意味着文件结束）<br/><br/>--ignore-failed-read <br/>在不可读文件中作 0 标记后再退出？？？<br/><br/>-k, --keep-old-files <br/>保存现有文件；从存档中展开时不进行覆盖<br/><br/>-K, --starting-file F <br/>从存档文件 F 开始<br/><br/>-l, --one-file-system <br/>在本地文件系统中创建存档<br/><br/>-L, --tape-length N <br/>在写入 N*1024 个字节后暂停，等待更换磁盘<br/><br/>-m, --modification-time <br/>当从一个档案中恢复文件时，不使用新的时间标签<br/><br/>-M, --multi-volume <br/>建立多卷存档,以便在几个磁盘中存放<br/><br/>-N, --after-date DATE, --newer DATE <br/>仅存储时间较新的文件<br/><br/>-o, --old-archive, --portability <br/>以 V7 格式存档，不用 ANSI 格式<br/><br/>-O, --to-stdout <br/>将文件展开到标准输出<br/><br/>-p, --same-permissions, --preserve-permissions<br/>展开所有保护信息<br/><br/>-P, --absolute-paths <br/>不要从文件名中去除 '/'<br/><br/>--preserve <br/>like -p -s<br/>与 -p -s 相似<br/><br/>-R, --record-number <br/>显示信息时同时显示存档中的记录数<br/><br/>--remove-files <br/>建立存档后删除源文件<br/><br/>-s, --same-order, --preserve-order <br/><br/>--same-owner<br/>展开以后使所有文件属于同一所有者<br/><br/>-S, --sparse<br/>高效处理<br/><br/>-T, --files-from F<br/>从文件中得到要展开或要创建的文件名<br/><br/>--null<br/>读取空结束的文件名，使 -C 失效<br/><br/>--totals<br/>显示用 --create 参数写入的总字节数<br/><br/>-v, --verbose<br/>详细显示处理的文件<br/><br/>-V, --label NAME<br/>为存档指定卷标<br/><br/>--version<br/>显示 tar 程序的版本号<br/><br/>-w, --interactive, --confirmation<br/>每个操作都要求确认<br/><br/>-W, --verify<br/>写入存档后进行校验<br/><br/>--exclude FILE<br/>不把指定文件包含在内<br/><br/>-X, --exclude-from FILE<br/>从指定文件中读入不想包含的文件的列表<br/><br/>-y, --bzip2, --bunzip2<br/>用 bzip2 对存档压缩或解压<br/><br/>-Z, --compress, --uncompress<br/>用 compress 对存档压缩或解压<br/><br/>-z, --gzip, --ungzip<br/>用 gzip 对存档压缩或解压<br/><br/>--use-compress-program PROG<br/>用 PROG 对存档压缩或解压 ( PROG 需能接受 -d 参数）<br/><br/>--block-compress<br/>为便于磁盘存储，按块记录存档<br/><br/>-[0-7][lmh]<br/>指定驱动器和密度[高中低]<br/><br/>－－－－－－－－－－－－－－－－－－－－－－－－－－<br/><br/>打包： tar -cf soft.tar soft<br/><br/>解包： tar -xf soft.tar soft<br/><br/>压缩目录<br/><br/>打包压缩：tar czvf usr.tar.gz /home<br/><br/>解压缩：tar xzvf usr.tar.gz<br/><br/>压缩文件（对于目录失效）<br/><br/>压缩：zip good.zip good1 good2<br/><br/>解压：unzip good.zip<br/><br/>排除 tar cvzf data.tar.gz --exclude=/data/ --exclude=/data/web/bbb /data/web/
]]>
</description>
</item>
</channel>
</rss>