月度归档:2010年12月

extmail的后期维护的一点问题

在安装了Extmail以后,进入Extman对邮件系统进行管理的时候,访问http://url/(extman)的时候却提示:
Can’t open /tmp/extman//sid_26da75f9aec35f2cbc6b4fa425ab525e, No such file or directory
此时只需要将/temp/extman的权限设置为777即可。
如果没有该目录,可手功创建该目录mkdir /tmp/extman,并将其权限设置为777
出现这个问题的原因好像是linux会定期清除/tmp/目录,导致extman丢失,
通过修改,/var/www/extsuite/extman/webmail.cf文件里面的配置

# sys_sess_dir, the session dir
SYS_SESS_DIR = /tmp/extman/
将SYS_SESS_DIR指定到了/data/extman下面。

  Extmail进后台不能正常显示系统的信息的解决办法

进入后台不显示目录信息提示”No such file or directory”
进入extman/daemon/cmdserver –daemon  运行启来就能显示了

${}和$()的区别

Chainunix的网中人的shell十三问中的内容:

shell 十三問?

8) $(( )) 與 $( ) 還有${ } 差在哪?

我們上一章介紹了 ( ) 與 { } 的不同,這次讓我們擴展一下,看看更多的變化:$( ) 與 ${ } 又是啥玩意兒呢?

在 bash shell 中,$( ) 與 ` ` (反引號) 都是用來做命令替換用(command substitution)的。
所謂的命令替換與我們第五章學過的變量替換差不多,都是用來重組命令行:
* 完成引號裡的命令行,然後將其結果替換出來,再重組命令行。
例如:

  1. $ echo the last sunday is $(date -d “last sunday” +%Y-%m-%d)

复制代码

如此便可方便得到上一星期天的日期了… ^_^

在操作上,用 $( ) 或 ` ` 都無所謂,只是我”個人”比較喜歡用 $( ) ,理由是:

1,  ` ` 很容易與 ‘ ‘ ( 單引號)搞混亂,尤其對初學者來說。
有時在一些奇怪的字形顯示中,兩種符號是一模一樣的(直豎兩點)。
當然了,有經驗的朋友還是一眼就能分辯兩者。只是,若能更好的避免混亂,又何樂不為呢? ^_^

2, 在多層次的復合替換中,` ` 須要額外的跳脫( \` )處理,而 $( ) 則比較直觀。例如:
這是錯的:

  1. command1 `command2 `command3` `

复制代码

原本的意圖是要在 command2 `command3` 先將 command3 提換出來給 command 2 處理,
然後再將結果傳給 command1 `command2 …` 來處理。
然而,真正的結果在命令行中卻是分成了 `command2 ` 與 “ 兩段。
正確的輸入應該如下:

  1. command1 `command2 \`command3\` `

复制代码

要不然,換成 $( ) 就沒問題了:

  1. command1 $(command2 $(command3))

复制代码

只要你喜歡,做多少層的替換都沒問題啦~~~  ^_^

不過,$( ) 並不是沒有斃端的…
首先,` ` 基本上可用在全部的 unix shell 中使用,若寫成 shell script ,其移植性比較高。
而 $( ) 並不見的每一種 shell 都能使用,我只能跟你說,若你用 bash2 的話,肯定沒問題…  ^_^

接下來,再讓我們看 ${ } 吧… 它其實就是用來作變量替換用的啦。
一般情況下,$var 與 ${var} 並沒有啥不一樣。
但是用 ${ } 會比較精確的界定變量名稱的範圍,比方說:

  1. $ A=B
  2. $ echo $AB

复制代码

原本是打算先將 $A 的結果替換出來,然後再補一個 B 字母於其後,
但在命令行上,真正的結果卻是只會提換變量名稱為 AB 的值出來…
若使用 ${ } 就沒問題了:

  1. $ echo ${A}B
  2. BB

复制代码

不過,假如你只看到 ${ } 只能用來界定變量名稱的話,那你就實在太小看 bash 了﹗
有興趣的話,你可先參考一下 cu 本版的精華文章:
http://www.chinaunix.net/forum/viewtopic.php?t=201843

為了完整起見,我這裡再用一些例子加以說明 ${ } 的一些特異功能:
假設我們定義了一個變量為:
file=/dir1/dir2/dir3/my.file.txt
我們可以用 ${ } 分別替換獲得不同的值:
${file#*/}:拿掉第一條 / 及其左邊的字串:dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最後一條 / 及其左邊的字串:my.file.txt
${file#*.}:拿掉第一個 .  及其左邊的字串:file.txt
${file##*.}:拿掉最後一個 .  及其左邊的字串:txt
${file%/*}:拿掉最後條 / 及其右邊的字串:/dir1/dir2/dir3
${file%%/*}:拿掉第一條 / 及其右邊的字串:(空值)
${file%.*}:拿掉最後一個 .  及其右邊的字串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一個 .  及其右邊的字串:/dir1/dir2/dir3/my
記憶的方法為:

    # 是去掉左邊(在鑑盤上 # 在 $ 之左邊)
    % 是去掉右邊(在鑑盤上 % 在 $ 之右邊)
    單一符號是最小匹配﹔兩個符號是最大匹配。

${file:0:5}:提取最左邊的 5 個字節:/dir1
${file:5:5}:提取第 5 個字節右邊的連續 5 個字節:/dir2

我們也可以對變量值裡的字串作替換:
${file/dir/path}:將第一個 dir 提換為 path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:將全部 dir 提換為 path:/path1/path2/path3/my.file.txt

利用 ${ } 還可針對不同的變數狀態賦值(沒設定、空值、非空值):
${file-my.file.txt} :假如 $file 沒有設定,則使用 my.file.txt 作傳回值。(空值及非空值時不作處理)
${file:-my.file.txt} :假如 $file 沒有設定或為空值,則使用 my.file.txt 作傳回值。 (非空值時不作處理)
${file+my.file.txt} :假如 $file 設為空值或非空值,均使用 my.file.txt 作傳回值。(沒設定時不作處理)
${file:+my.file.txt} :若 $file 為非空值,則使用 my.file.txt 作傳回值。 (沒設定及空值時不作處理)
${file=my.file.txt} :若 $file 沒設定,則使用 my.file.txt 作傳回值,同時將 $file 賦值為 my.file.txt 。 (空值及非空值時不作處理)
${file:=my.file.txt} :若 $file 沒設定或為空值,則使用 my.file.txt 作傳回值,同時將 $file 賦值為 my.file.txt 。 (非空值時不作處理)
${file?my.file.txt} :若 $file 沒設定,則將 my.file.txt 輸出至 STDERR。 (空值及非空值時不作處理)
${file:?my.file.txt} :若 $file 沒設定或為空值,則將 my.file.txt 輸出至 STDERR。 (非空值時不作處理)

tips:
以上的理解在於, 你一定要分清楚 unset 與 null 及 non-null 這三種賦值狀態.
一般而言, : 與 null 有關, 若不帶 : 的話, null 不受影響, 若帶 : 則連 null 也受影響.

還有哦,${#var} 可計算出變量值的長度:
${#file} 可得到 27 ,因為 /dir1/dir2/dir3/my.file.txt 剛好是 27 個字節…

接下來,再為大家介稍一下 bash 的組數(array)處理方法。
一般而言,A=”a b c def” 這樣的變量只是將 $A 替換為一個單一的字串,
但是改為 A=(a b c def) ,則是將 $A 定義為組數…
bash 的組數替換方法可參考如下方法:

  1. ${A[@]} 或 ${A[*]}

复制代码

可得到 a b c def (全部組數)

  1. ${A[0]}

复制代码

可得到 a (第一個組數),${A[1]} 則為第二個組數…

  1. ${#A[@]} 或 ${#A[*]}  

复制代码

可得到 4 (全部組數數量)

  1. ${#A[0]}

复制代码

可得到 1 (即第一個組數(a)的長度),${#A[3]} 可得到 3 (第四個組數(def)的長度)

  1. A[3]=xyz  

复制代码

則是將第四個組數重新定義為 xyz …

諸如此類的….
能夠善用 bash 的 $( ) 與 ${ } 可大大提高及簡化 shell 在變量上的處理能力哦~~~  ^_^

好了,最後為大家介紹 $(( )) 的用途吧:它是用來作整數運算的。
在 bash 中,$(( )) 的整數運算符號大致有這些:
+ – * / :分別為 “加、減、乘、除”。
% :餘數運算
& | ^ !:分別為 “AND、OR、XOR、NOT” 運算。

例:

  1. $ a=5; b=7; c=2
  2. $ echo $(( a+b*c ))
  3. 19
  4. $ echo $(( (a+b)/c ))
  5. 6
  6. $ echo $(( (a*b)%c))
  7. 1

复制代码

在 $(( )) 中的變量名稱,可於其前面加 $ 符號來替換,也可以不用,如:
$(( $a + $b * $c)) 也可得到 19 的結果

此外,$(( )) 還可作不同進位(如二進位、八進位、十六進位)作運算呢,只是,輸出結果皆為十進位而已:
echo $((16#2a)) 結果為 42 (16進位轉十進位)
以一個實用的例子來看看吧:
假如當前的  umask 是 022 ,那麼新建文件的權限即為:

  1. $ umask 022
  2. $ echo “obase=8;$(( 8#666 & (8#777 ^ 8#$(umask)) ))” | bc
  3. 644

复制代码

事實上,單純用 (( )) 也可重定義變量值,或作 testing:
a=5; ((a++)) 可將 $a 重定義為 6
a=5; ((a–)) 則為 a=4
a=5; b=7; ((a < b)) 會得到  0 (true) 的返回值。
常見的用於 (( )) 的測試符號有如下這些:

    <:小於
    >:大於
    <=:小於或等於
    >=:大於或等於
    ==:等於
    !=:不等於

不過,使用 (( )) 作整數測試時,請不要跟 [ ] 的整數測試搞混亂了。(更多的測試我將於第十章為大家介紹)

怎樣?好玩吧..  ^_^  okay,這次暫時說這麼多…
上面的介紹,並沒有詳列每一種可用的狀態,更多的,就請讀者參考手冊文件囉…

发现iptables的启动脚本有用到,如下:
IPV=${IPTABLES%tables} # ip for ipv4 | ip6 for ipv6

13.2.9. TRUNCATE语法,删除大表,并释放空间

13.2.9. TRUNCATE语法
TRUNCATE [TABLE] tbl_name
TRUNCATE TABLE用于完全清空一个表。从逻辑上说,该语句与用于删除所有行的DELETE语句等同,但是在
有些情况下,两者在使用上有所不同。
对于InnoDB表,如果有需要引用表的外键限制,则TRUNCATE TABLE被映射到DELETE上;否则使用快速删减
(取消和重新创建表)。使用TRUNCATE TABLE重新设置AUTO_INCREMENT计数器,设置时不考虑是否有外
Chapter 13. SQL Statement Syntax
file:///D:/download/refman-5.1-zh.html-chapter/refman-5.1-zh.html-chapter/sql-syntax.html[2010/2/24 5:22:43]
键限制。
对于其它存储引擎,在MySQL 5.1中,TRUNCATE TABLE与DELETE FROM有以下几处不同:
· 删减操作会取消并重新创建表,这比一行一行的删除行要快很多。
· 删减操作不能保证对事务是安全的;在进行事务处理和表锁定的过程中尝试进行删减,会发生错误。
· 被删除的行的数目没有被返回。
· 只要表定义文件tbl_name.frm是合法的,则可以使用TRUNCATE TABLE把表重新创建为一个空表,即使
数据或索引文件已经被破坏。
· 表管理程序不记得最后被使用的AUTO_INCREMENT值,但是会从头开始计数。即使对
于MyISAM和InnoDB也是如此。MyISAM和InnoDB通常不再次使用序列值。
· 当被用于带分区的表时,TRUNCATE TABLE会保留分区;即,数据和索引文件被取消并重新创建,同时
分区定义(.par)文件不受影响。
TRUNCATE TABLE是在MySQL中采用的一个Oracle SQL扩展。

国内人贩子抢孩子新招 吓死人 妈妈们必看

国内人贩子抢孩子新招 吓死人 妈妈们必看
我女儿差一点就被人给抢走

         我现在还在后怕,已经好多天没有带女儿出去散步,我儿子我都不让出去,十几分钟没有见到,我就感到害怕。就算家人陪着我带孩子出去,我都还是害怕。

         本来不想提了,但是还是要写出来,给大家提醒下,特别是现在进入春运了。可能有些语无伦次,请大家见谅吧。

         1月31号,我带女儿从娘家去婆婆家。本来说好是等着9号老公回我妈家然后我们一起去的。但是儿子有些发烧,不舒服,在电话里可怜兮兮的说想我。女儿又太小了,不可能扔到妈妈家。想着就6个小时的火车,自己带着也无所谓。本来想做卧铺的,但是没有买到,上车也没有补到卧铺票。

         9点多上车的,还好是靠窗。旁边是一个看起来有60多岁的老婆婆,带着一个7、8岁的小孙子。一路上对我很是照顾,不停和我聊天,还帮我打下手。火车上人很多,老婆婆很帮忙,还不停的提醒我小心坏人注意保管物品。那个小孙子还不时的和我女儿玩,我女儿还差几天1岁,对一切都特别有兴趣,时不时的就揪老婆婆的头发或者衣服。老婆婆就无意思的和我聊天。问了很多关于宝宝的问题,什么我女儿多大哪天生的,在哪个医院生的,生的时候多少斤多长啊等等,然后就说她孙子是哪天生的生的时候多少斤。我就当是一般的聊天。我们当妈妈的都有个习惯,如果遇到都带小孩子的,就通常很有话题的。老婆婆还问我女儿每天喝多少奶啊,喝什么牌子的啊等等。我本来也没有在意,都如实的回答了。后来竟然还问我是几时生的,我觉得这个还是不要告诉的好,我就说我自己也不记得了。然后老婆婆问我女儿全名叫什么,我女儿有小名叫贝贝。我当时就有些奇怪,为什么要问全名呢?但是心里又觉得告诉她了也没有什么问题啊。但是心里还是留意了一点,告诉的是我儿子的名字。

         在车上我要去洗手间,老婆婆说我帮你带孩子吧,我心里不放心,还是自己背着去的。老婆婆就送我到洗手间,然后在外面等着我再送我回来。周围的人都说老婆婆人很好,我也觉得自己和女儿命还不错。下车的时候,老婆婆和我一起下车的,还帮我拿行李。我们就一起往出站口走,老婆婆问我是否有人接啊这么多行李。我说没有,我打车就到了很近的。

         走出出站口后,老婆婆突然就要抱我女儿。然后嘴里面说:谢谢你帮我抱我孙女,要到出站口了,我自己抱了。我当时就一惊,我说阿姨你在说什么呢。然后她身边的小孙子就喊着对我说:你是坏蛋,干什么抱着我妹妹不放松。我当时就蒙了。然后很多人看过来,都很怀疑的看着我。然后有个女的就跑过来了,叫我女儿的名字(其实是我儿子的名字),并且说:贝贝,想死妈妈了。就很客气的让我把我女儿给她。然后周围就突然出现很多人指指点点说我想拐别人的孩子,然后还好心的提醒刚刚来的那个女的要看好孩子。

         我看到这样,就想着赶紧打车走了,不理他们。但是指指点点的那些人把我的路都给挡住了,然后那个后来的女的就上来抢抱我的女儿。很多路人看到了,都以为真的是那个女的女儿,也没有说话。我这个时候才意思到问题的严重。我就着急的说:怎么是你女儿,明明就是我的啊。然后那个小孙子对我说:阿姨,你快把我妹妹给妈妈吧,我们要回家了。眼看着老婆婆和那个女的一起就要把我女儿抢走了,还好我用的是背带,那种交叉很难拿下来的背带。我就喊了:你们就这样明目张胆的抢孩子吗?

         路过的人都是看一下,然后就听到周围一直围着之前指指点点的人说:这个抱孩子的女的精神有问题(说的是我),抱着别人的孩子不松手,还说别人抢她的孩子。很多路人听了后就走了,也不管了。我当时真的害怕了开始发抖,我没命的抱住我女儿,我女儿也许感受到我的紧张了,就开始大哭起来。然后我就听到有人叫我,原来是我公公和大姑姐来车站接我,没有找到我,听到有小孩子哭,我大姑姐看了一眼,一看是我女儿才过来的。
 
 
 
 
我公公都过来了,他们还不打算放手呢,还很猖狂的说我抢他们的孩子。还和我们争执呢。我公公说明明是我孙女,怎么变成你们的了。然后旁边就开始围人了,那个女的就说我女儿是哪年哪月生的,叫什么,吃什么奶粉,有什么习惯等等。我当时立刻愣住了,这些都是在火车上那个老婆婆问我的。但好在我当时一念之差告诉她我儿子的名字。我公公就很疑惑,然后问她:你女儿叫什么?她又说了一遍我儿子的名字。我就对她喊到:放屁,我女儿叫***,我在车上告诉那个老太婆的是我儿子的名字。那个女的和老太婆当时就傻了。我就指着他们对他们喊:你们到底有没有良心啊,让一个那么小的小孩子和你一起说谎啊。你们这帮人贩子,就都应该枪毙了。

         我喊完他们就愣住了,然后公公和大姑姐就立刻带着我离开上车回家了。在车上我都感觉自己的浑身都颤抖,摸摸我自己的脸,我发现我都哭了。我就死死的抱住我女儿,好像一松手她就没了一样。

         回家安定后,我公公就去派出所报案了。我公公回来说,已经这样被抢走了几个孩子呢。我真是后怕,幸亏我用的是那种很复杂的背带,幸亏我当时一念之差没有给他们我女儿的真名字。

         后来我回想,他们有几个特点:

         第一,麻痹我们的思想,带着个小孩子,谁都不会想着是人贩啊。而且小孩子收拾得很干净。

         第二,很热情,什么都帮助你。

         第三,询问孩子的事情很详细。

         第四,下车帮你拿行李,然后出站后给你带到站前相对人少的地方。

         第五,很多合伙人,我后来想想旁边指点的人估计都是同伙。这样让想要帮忙的人放弃想法,以为真的是我神经有问题。

         我一直以为抢孩子的事情离我很远,现在想想,那天如果没有公公突然想过来接站,我都不知道我和我女儿会怎么样。我每次一想到都害怕,不仅仅是害怕,真是说不出来到底什么感觉。

         很多人都说我为什么不当时就报警呢,根本没有机会的,你根本没有机会拿手机。他们的手一直在跟你抢孩子,你一松手,可能孩子立刻就被他们抢走了啊。我当时就想着要抱住我女儿,不能给他们抢走了。

         而且,那些周围的同伙人都把你的视线都挡住了,也看不到站前的巡警和周围什么状况。再加上你当时一时着急,什么都不知道了,后来我上车了,才看到,离我不到20步就有个保安呢,但是我当时什么都看不到。报警都还是我回家后,大家静下心来了,才想到应该报警…
 
在别的贴吧上看到的贴子,介于社会责任感转至于此,善良的人们,为了减少更多家庭的痛苦,请分享一下吧,让更多的人能够看到。

也许只是你的小小一个动作,却挽救了一个家庭……