小微微常常刪檔或是改檔的時候會跟你靠腰說"檔案正在使用中...",讓你不能刪除檔案,但有時候還是不知道誰在用,linux下面也有。
fuser
Show which processes use the named files, sockets, or filesystems
lsof
list open files
多好用?
欲哭無淚的時候,很好用.....
紀錄幾個常用用法
fuser -v -mu /home/bejo
fuser -v -mu /proc
-v: 不加沒辦法閱讀啦
查看目錄或是檔案被誰用。查proc妙用無窮(疑?
也可以用來砍掉再用的process,不過...
lsof -i
-i 查哪些程式在用網路資源...(上次TFTP就是這樣找出來的 囧>)
lsof -u root
查root用了哪些東西
組合起來就可以用
lsof -u root -a -i
查root開了哪些網路程式
-a: 用來組合其他條件,例如 -i
有程式亂活動馬上就知道@__@!!!
2010年4月30日 星期五
2010年4月28日 星期三
[小微微]開機指令檔/關機指令檔
最近想放棄WINXP換系統.....
可是發現我一窮二白...買不起W7
只好整理開機流程加快一下系統O__Q
XP系統如果想在登入帳號之前執行使用者想要執行的動作,如COPY檔案、檢查檔案、撥PPPoE連線等等
埋在"啟動"資料夾、排程、系統服務都不適當
應該要放在
開始=>執行=>gpedit.msc (就是群組原則啦)
電腦設定=>windows設定=>將 [開機指令檔] 指向 想執行的程式(*.BAT也可)。
這也提供[關機指令檔] (用新增的) 可以在關機的時候做。
類似linux的S60_XXX,S99_XXX 開機執行,跟rc file的執行階段不大一樣。
會在Windowns登入使用者之前就執行。
看來想換DX10來打電動要再久一點了.....(哭哭
可是發現我一窮二白...買不起W7
只好整理開機流程加快一下系統O__Q
XP系統如果想在登入帳號之前執行使用者想要執行的動作,如COPY檔案、檢查檔案、撥PPPoE連線等等
埋在"啟動"資料夾、排程、系統服務都不適當
應該要放在
開始=>執行=>gpedit.msc (就是群組原則啦)
電腦設定=>windows設定=>將 [開機指令檔] 指向 想執行的程式(*.BAT也可)。
這也提供[關機指令檔] (用新增的) 可以在關機的時候做。
類似linux的S60_XXX,S99_XXX 開機執行,跟rc file的執行階段不大一樣。
會在Windowns登入使用者之前就執行。
看來想換DX10來打電動要再久一點了.....(哭哭
2010年4月26日 星期一
[語言] 沒營養的 - do{} while(0)
看code 有時候會看到沒營養的
do{ XXX } while(0)
直覺上會覺得很北七... 顯然北七的只是表面...
這種寫法常見在
#define
如
#define BEJO(x) {a(x-2);b(x);} while(0)
#define a(x) printf("%d\n", x)
#define b(x) printf("%d\n", x)
如果這樣寫
#define BEJO(x) a(x-2);b(x);
那
if(x >0 )
BEJO(x);
else
.....
會被展開成
if(x >0 )
a(x-2);b(x);;
else
.....
當場就b(x)爆炸了.....
那如果這樣寫
#define BEJO(x) {a(x-2);b(x)}
就...
if(x >0 )
{a(x-2);b(x)};
else
.....
那如果這樣寫
#define BEJO(x) {a(x-2);b(x);}
就...
if(x >0 )
{a(x-2);b(x);};
else
.....
不管怎麼寫~~都有可能會被呼叫者誤用到爆炸
按照
本來BEJO(x); <-- 會加分號的習性
do{} while(0)
剛剛好...
if(x >0 )
BEJO(x);
else
.....
會被展開成
if(x >0 )
{a(x-2);b(x);} while(0);
else
.....
很安全.....
do{ XXX } while(0)
直覺上會覺得很北七... 顯然北七的只是表面...
這種寫法常見在
#define
如
#define BEJO(x) {a(x-2);b(x);} while(0)
#define a(x) printf("%d\n", x)
#define b(x) printf("%d\n", x)
如果這樣寫
#define BEJO(x) a(x-2);b(x);
那
if(x >0 )
BEJO(x);
else
.....
會被展開成
if(x >0 )
a(x-2);b(x);;
else
.....
當場就b(x)爆炸了.....
那如果這樣寫
#define BEJO(x) {a(x-2);b(x)}
就...
if(x >0 )
{a(x-2);b(x)};
else
.....
那如果這樣寫
#define BEJO(x) {a(x-2);b(x);}
就...
if(x >0 )
{a(x-2);b(x);};
else
.....
不管怎麼寫~~都有可能會被呼叫者誤用到爆炸
按照
本來BEJO(x); <-- 會加分號的習性
do{} while(0)
剛剛好...
if(x >0 )
BEJO(x);
else
.....
會被展開成
if(x >0 )
{a(x-2);b(x);} while(0);
else
.....
很安全.....
訂閱:
文章 (Atom)