釋放 lsof 的力量

chenpc December 13th, 2008

emerge lsof

常常,目錄umount不掉。
# umount /mnt/cdrom
umount: /mnt/cdrom: device is busy
umount: /mnt/cdrom: device is busy

看看到底是誰在用阿!
# lsof | grep /mnt/cdrom
bash  6453   larry  cwd  DIR  7,0  2048  1856 /mnt/cdrom
su    15774  root   cwd  DIR  7,0  2048  1856 /mnt/cdrom

常常,看到一些port不知道是誰開的。
# lsof -i TCP:25
OMMAND   PID USER   FD   TYPE DEVICE SIZE NODE NAME
master  17408 root   12u  IPv4 632942       TCP localhost:smtp (LISTEN)

master是甚麼阿?
# ps auxww|grep master
root 17408 0.0 0.0 5220 1516 ? Ss 06:19 0:00 /usr/lib/postfix/master

他parent是誰?
# lsof -R -i TCP:25
COMMAND   PID PPID USER   FD   TYPE DEVICE SIZE NODE NAME
master  17408    1 root   12u  IPv4 632942       TCP localhost:smtp (LISTEN)
PPID = 1,看一下祖譜吧。
# pstree 1
init–6*[agetty]
–amd
–cron
–master—pickup
–      –qmgr
–mysqld—16*[{mysqld}]
–ntpd
–portmap
–rpc.mountd
–rpc.rstatd
–rpc.statd
–squid—squid—30*[redirect.pl]
-               ??unlinkd
–2*[sshd???sshd---tcsh]
–sshd—2*[sshd--sshd---tcsh]
-      –sshd—sshd—tcsh—pstree
–syslog-ng
–udevd
–ypbind—2*[{ypbind}]

更新SA之後的後續動作

chenpc December 13th, 2008

這裡用Gentoo Linux更新openssl為例:
當openssl出現GLSA的通知信之後,我們跑到機器上更新。

emerge -u1 openssl
-u:是指update
-1:不要加到world list裡面(one shot)

更新完之後,用lsof查看需要重開的服務。

sudo lsof | grep ‘DEL.*lib’ | cut -f 1 -d ‘ ‘ | sort -u
->
這行會列出只用到一些lib已被移除的程式。
irssi
lpd
master
pure-ftpd
qmgr
ssh
sshd

上面這些程式如果你不知道他們是什麼,可以用qfile去看他屬於哪些套件
qfile sshd
->net-misc/openssh (/usr/sbin/sshd)

如果是pure-ftpd,apache,lighttd這些屬於系統服務的程式
請記得要重開才算完成SA更新。

Gentoo ebuild 五分鐘就上手

chenpc December 13th, 2008

這篇主要是講如何使用Gentoo的portage system

先講什麼是system什麼是world

一般來講,你把stage3 tar開的東西就是system。
後來裝的軟體全部都是world。
想看world裡面有什麼可以去看/var/lib/portage/world

1.安裝一個軟體
emerge mutt

2.裝之前先看一下他會裝哪些東西
emerge mutt -pv

[ebuild  N    ] app-misc/mime-types-7  7 kB
[ebuild  N    ] net-mail/mailbase-1  USE=”pam” 0 kB
[ebuild  N    ] mail-client/mutt-1.5.16  USE=”gdbm nls -gnutls”

或許這裡沒有顏色,但是實際是會有顏色的。
暗綠:不會被depend到world裡面。(mailbase,mime-type)
亮綠:他會被depend到world裡面。(mutt)

USE flag的顏色
紅色:enable
藍色:前面會帶一個”-”,表示disable。

3.如果你注意到上面有USE=”xxx”,是的,你可以修改他。
你可以直接改/etc/make.conf,來改變整個世界。
USE=”xxx”
或者是對單一個ebuild作修改
/etc/portage/package.use
===========================
mail-client/mutt gnutls
===========================
4.刪除一個軟體
emerge -C mutt
5.把mutt depend到的mailbase和mime-type砍掉。
emerge –depclean

6.depclean之前最好先看一下….
emerge –depclean -pv

7.升級軟體
emerge -uDN mutt
D和N可以不加
D表示去檢查他相依的ebuild,N表示如果USE flag有更動也要更新。

8.升級整個世界
emerge -uDN world
建議升完世界可以把多餘的東西砍掉。
用emerge –depclean

9.只升級系統
emerge -uDN system
相對於FreeBSD的的make {install,build} world
注意,gentoo 的world包含system

10.尋找一個ebuild
emerge -s mutt
類似FreeBSD的make search name=mutt
但是這個會有點慢,你可以用index過的指令
比方說qsearch mutt or eix mutt

11.看看ebuild的相依性
你可以打開檔案直接看
或者用qdepends mutt

12.尋找系統裡面有安裝的ebuild
qlist -I gcc

13.檢查有沒有libaray遺失
sudo -H revdep-rebuild
這個指令會檢查系統內執行檔所連結到的lib是不是存在
如果不存在他會幫你修復
14.打包binary pkg
qpkg wine
他會把wine打包起來,讓你可以直接用emerge -k wine去重裝。
這個檔案必須放在/usr/portage/packages下面。
注意,如果pkg使用的flag不同,他會重編,不會用你給他的pkg。
你用emerge wine -pv你會看到entry開頭寫binary,否則他會寫ebuild。

15.正常的更新程序
建議是下面這樣子
emerge -uDN world
emerge –depclean
env-update
revdep-rebuild

16.更新portage tree
emerge –sync
後面加-q,他才不會那麼吵。
用vmware裝的話,frame buffer I/O很慢,一定要加-q。

17.檢查系統設定檔
etc-update
這個功能類似FreeBSD的mergemaster

18.重編整個world
emerge -e world
常常是因為你換CFLAG,想要騷包一下重編。
其十大部份情況不需要,如果要,請下這指令。

19.如果上面指令編到一半失敗了
你把失敗原因解決之後,總不能在emerge -e world一次。
因為這指令會重新build全部。
所以你只要emerge –resume,就會重上次失敗的地方開始。

20.使用binary pkg
編的時候加一個-b,比方說emerge -b wine
編好就會有一個pkg可以用,甚至可以給別人用。
也可以在/etc/make.conf加 FEATURES=”buildpkg”
這樣預設就是會編binary pkg出來。
目前linux0在做這樣的事情。
而其他台透過NFS去裝他的binary就好了。
而且其他台裝pkg的方法是emerge -k wine。

21.安裝被keywords mark起來的ebuild
把ebuild名稱加到/etc/portage/package.keywords就可以了。
被keywords mark起來表示”testing”
所以你可以在/etc/make.conf加ACCEPT_KEYWORDS=”~amd64″
這樣就可以把整個世界變成testing。

22.安裝被系統mask起來的ebuld
把ebuild名稱加到/etc/portage/package.unmask
這個步驟通常有危險,因為會被系統unmask表示他真的有問題。

23.重裝軟體
如果你已經裝過該軟體,你只是想把他重編一次。
但是他原來不在world裡面,你如果下emerge librtorrent
這個lib就會被加到world裡面,不再是因為rtorrent而depend到的。
這時後下emerge -1 librtorrent,這樣他會重編,而不會加到world。

24.裝特定版本的軟體
有一個軟體如果你不要最新版,你可以指定版本。
emerge =www-servers/apache-2.2.8 -pv
很多軟體都可以以不同slot存在。

25.如果你不想裝最新版,還有一個方法。
在/etc/portage/package.mask裡面寫
>=www-servers/apache-2.2.8
把版本號比2.2.8大的版本加到mask就好了。

以上25招(完畢

Gentoo Linux 查詢相依性

chenpc December 13th, 2008

裝了portage-utils之後會有”q”系列的工具可以用。
其中有一個工具是qdepend,他會去查詢該ebuild的相依性。
但是其實這不難,因為相依性寫在ebuild裡面,自己打開來看就好了。
常常我們不想安裝某一些東西,比方說xulrunner。
你想要知道到底哪些ebuild需要xulrunner,然後把那些ebuild解決掉。

你可以用qlist和qdepend合併。

qlist -I|qdepends -|grep xulrunner

這樣他會去找出和xulrunner有關的套件。

上次Linux開會提到要把world精簡化。
要把不需要的東西拿掉,用這個方法輔助的話可以節省很多時間。

Vixie Cron in Linux

chenpc December 13th, 2008

Vixie cron in FreeBSD is different from Linux.

BSD:
/usr/bin/crontab <– setuid
/var/cron/tabs <–only root can change it
“tabs” is a file which contains user field and program location.

Linux
/usr/bin/crontab <– nosetuid
/var/spool/cron/crontabs <– user can change it
“crontabs” is a “DIR” which contains user’s crontab file.

crontab file format:
/var/spool/cron/crontabs/chenpc
===============================
*/5 * * * * command
===============================

Q:How to make vixie-cron work in Linux ?
A:Join “cron” group. (gpasswd -a chenpc cron

Default permission in Linux:
drwxr-x— 4 root cron /var/spool/cron
drwx-wx–T 2 root crontab /var/spool/cron/crontabs

We should change to:
drwxr-xr-x 4 root cron /var/spool/cron
drwx-wx-wt 2 root crontab /var/spool/cron/crontabs

I had change permission in linux0~6
and commit new post_base.sh to do so.

ext2,ext3,ext4dev and xfs和他的們好朋友

chenpc December 13th, 2008

[EXT{2,3,4}]
badblocks:
檢查壞軌,其實不限定一定要是ext*的fs。

tune2fs:
改變fs的一些設定,比方說reserve的比例。
在實驗ext4dev的時候,要用tune2fs打開test_fs這個功能。

mkfs.ext4dev:
最近的版本有把ext4的fsck tool放進去了。

chattr:
類似FreeBSD下面的chflags。
可以在原本的read,write,exec,sticky,setuid屬性之外增加延伸屬性。
比方說檔案不可刪除…等等。
不過這個東西不是OS本身實做的,而是要依賴File System的實做。
所以ext*有這個功能,xfs並沒有。

lsattr:
查看chattr所設定的屬性。

mkfs.ext{2,3,4}:
將partition format成ext{2,3,4}格式。

如何將ext2 -> ext3 -> ext4dev ?
首先要先unmount。
tune2fs -j /dev/sda1 ##加journal的ext2就是ext3
tune2fs -E test_fs -O extents /dev/sda1 ##把test功能和extents功能打開就是ext4了。
tune2fs -m 0 ##保留0%給root

[XFS]
xfs_quota:
xfs的quota和其他fs比較不一樣。
他並不是在目錄下放一個quota.user當作紀錄擋。
xfs的quota是實作在日誌系統裡面。
所以quotacheck的指令對他無效。
他不需要作quotacheck,因為只要xfs被正確mount起來。
他就確保quota的正確性,也就是說開機不需要檢查半天
看看quota對不對。
xfs_freeze:
有些時候我們不能去複製一個”活”的檔案系統。
因為他一直在變動,所以我們沒辦法確保複製前後是否一致。
這時候除了umount之外,還有”結凍”這個方法。

xfs_copy,xfsdump,or xfsrestore:
同字面的意思,需在umount或freeze下面使用。

xfs_check,xfs_repair:
檢查一致性,會在不正常關機之後有機會會用到。

fsck.xfs:
這是虛招,其實沒有用。
只是要配合fsck的機制而已,遇到有問題他會在mount時警告你。
自行用上面兩個程式檢查,個人經驗是遇到xfs_repair其實很
可能是硬碟根本壞軌了。

xfs_mkfile:
快速的生出一個特定大小的檔案,這招會比dd快很多。

Quick Guilde to gnuplot

chenpc June 18th, 2008

plot -> 2D plot
splot -> 3D plot
gnuplot> splot “data” -> splot a file named “data”
data format:
x y value
x y value

plot mesh :
gnuplot> set dgrid3d 30,30
gnuplot> set hidden3d
gnuplot> plot “data”

ref:
http://phi.sinica.edu.tw/aspac/reports/94/94002/plot-6.html
http://t16web.lanl.gov/Kawano/gnuplot/plot3d2-e.html
http://lidebin.wordpress.com/2006/09/20/gnuplot-curve-fitting/
http://www.duke.edu/~hpgavin/gnuplot.html

[Gentoo linux] Firefox use adobe flash 9

chenpc May 29th, 2008

emerge -av net-www/netscape-flash
emerge -av nspluginwrapper
nspluginwrapper --install /usr/lib32/nsbrowser/plugins/libflashplayer.so

nspluginwrapper will wrapper libflashplayer.so to lib64

“patch” a file use “diff”

chenpc May 2nd, 2008

diff -uN Makefile Makefile.new > patch.Makefile
then
patch -p1 < patch.Makefile

Auto complete while using sudo

chenpc April 10th, 2008

tcsh :
Add follow line to .cshrc

complete sudo   ‘p/1/c/’

« Prev - Next »