精華區beta Linux 關於我們 聯絡資訊
因為在等程式跑出來的結果,所以偷空來 post 一下 :-)) 以下是我的一個 Linux 急救的經驗,說出來與大家分享。那是一個晚上, 我在電腦前快睡著了,神智不清的情況下,以 root 身分不小心操作失誤 導至。那時我已將軟碟 mount 上來 (我的軟碟是 ext2 filesystem),剛 剛才將我寫一個晚上的程式 cp 上去準備明天早上到學校繼續努力。結果, 我在還沒 umount 前,手去碰了一下軟碟機的磁片取出按扭。磁片沒有抽 出來,因為我突然驚覺還沒 umount, 急忙縮手,但磁片必竟還是動了一下。 這下完了,已經與整片磁片抽出無異了。系統接下來已無法正確操作軟碟機 (會 read/write error), 還好還能 umount。更慘的是 (或說,我更不應該 的是),第一次我 umount 成功了,就應該馬上 shutdown 重開,卻見到我 有一個檔忘了 cp 到軟碟,又試圖重新 mount 軟碟,想將那個檔案拷過去。 結果那個 mount 指令就 hang 住了,打 ps 一看,變成了 zombie .... 這讓我想起了很久以前的惡夢,也是沒有 umount 就抽出磁片,結果系統 整個大亂。先是 umount/mount 沒有作用,接著 sync 指令也會 hang 住, 更慘的是 shutdown 也沒有作用,用 ps 來看只見 zombie process 越來 越多,最後的下場就是按下 reset, 然後求神保祐 (因為連 sync 都掛了, 所以真的要求神保祐 ....) 而現在,尚在症狀初期,系統已有兩個 zombie, 一個就是 mount 軟碟的 指令,另一個就是 sync。於是我開始了以下的搶救步驟: 1. 系統其他部分似乎還很正常,於是我用 modem ppp 連線,先將我辛苦一個 晚上的程式先傳到學校再說。 2. 我離開 X-Window, 打 ps -ax 列出所有的 process, 用 kill 將所有的 process 一個個砍掉,就連 inetd, syslogd 也不例外,簡單地說,就是 「手動」進入 single user mode。有人會問為什麼不直接打 telinit s 就好了?因為現在系統已不太對勁了,我很怕在進入 single user mode 的過程中,可能那個 script 的動作又會 hang 住,變成 zombie process, 所以才手動一個個砍。 3. 然後我試圖 umount 硬碟的 filesystem, 我的 partition 如下 Filesystem 1k-blocks Used Available Use% Mounted on /dev/hda1 694695 584419 74393 89% / /dev/hda2 247871 47904 187166 20% /var /dev/hda3 595195 518024 46427 92% /home /dev/hdb1 1211511 871568 277348 76% /opt 我先 umount /opt 與 /var, 幸好都可以 umount, 要 umount /var 要注 意,必須確定所有的 system daemon 都 kill 掉了,才能 umount 成功。 因為 system daemon 常常讀寫 /var/log 的檔案,只要有任何程式在使用 檔案,就無法 umount。 4. 因為我出事的那一刻是在 /home partition 下的,也就是 mount, sync 等指令是在 /home partition 下執行的,因此,除非這兩個 process 完 全結束,才能 umount 這個 partition。然而,這兩個 process 正以 zombie 的姿態掛在那裏,也無法 kill 掉,所以,我將這 partition mount 成 read-only: mount -o remount,ro /home 幸好這樣子還沒問題。 5. 最後, / partition 也 mount read-only: mount -o remount,ro / 6. 按下 reset 重開機。由於我這時所有的 partition 不是 umount 了就是 已 mount read-only, 所以理論上這時按下 reset 重開對於 filesystem 完全沒有損壞。事實上也是如此,重開的過程中, filesystem 完全不需 要 check, 一下子,系統就正常了。 以上就是一個很簡單的系統搶救經驗,提供給大家參考 :-)) -- ─── 居 士 ─── <[email protected]> Welcome to XCIN Project: http://xcin.linux.org.tw -- ※ Origin: 臺大電機 Maxwell 站 ◆ From: twcpro.phys.ntu.edu.tw > -------------------------------------------------------------------------- < 發信人: "Edward Lee" <[email protected]>, 看板: Linux 標 題: Re: 一個急救的經驗 發信站: DCI HiNet (Fri May 5 20:12:17 2000) 轉信站: Ptt!bbs.ee.ntu!freebsd.ntu!netnews.csie.nctu!netnews2.csie.nctu!news.c 很感謝居土兄在 coding 之餘還提供這麼寶貴的經驗,但 不知有沒想過把 SysRg 的功能編譯進 kernel 呢?不過不知 道在您這種情況時 SysRg 還能不能正確動作,在下試用了 好幾次,都能很輕易的 sync、umount 及 reboot。不妨試看看 ,有沒有副作用就不是很清楚了!:-) 居士 撰寫於文章 <[email protected]>... >因為在等程式跑出來的結果,所以偷空來 post 一下 :-)) > >以下是我的一個 Linux 急救的經驗,說出來與大家分享。那是一個晚上, >我在電腦前快睡著了,神智不清的情況下,以 root 身分不小心操作失誤 >導至。那時我已將軟碟 mount 上來 (我的軟碟是 ext2 filesystem),剛 >剛才將我寫一個晚上的程式 cp 上去準備明天早上到學校繼續努力。結果, >我在還沒 umount 前,手去碰了一下軟碟機的磁片取出按扭。磁片沒有抽 >出來,因為我突然驚覺還沒 umount, 急忙縮手,但磁片必竟還是動了一下。 > >這下完了,已經與整片磁片抽出無異了。系統接下來已無法正確操作軟碟機 >(會 read/write error), 還好還能 umount。更慘的是 (或說,我更不應該 >的是),第一次我 umount 成功了,就應該馬上 shutdown 重開,卻見到我 >有一個檔忘了 cp 到軟碟,又試圖重新 mount 軟碟,想將那個檔案拷過去。 >結果那個 mount 指令就 hang 住了,打 ps 一看,變成了 zombie .... > >這讓我想起了很久以前的惡夢,也是沒有 umount 就抽出磁片,結果系統 >整個大亂。先是 umount/mount 沒有作用,接著 sync 指令也會 hang 住, >更慘的是 shutdown 也沒有作用,用 ps 來看只見 zombie process 越來 >越多,最後的下場就是按下 reset, 然後求神保祐 (因為連 sync 都掛了, >所以真的要求神保祐 ....) > >而現在,尚在症狀初期,系統已有兩個 zombie, 一個就是 mount 軟碟的 >指令,另一個就是 sync。於是我開始了以下的搶救步驟: > >1. 系統其他部分似乎還很正常,於是我用 modem ppp 連線,先將我辛苦一個 > 晚上的程式先傳到學校再說。 > >2. 我離開 X-Window, 打 ps -ax 列出所有的 process, 用 kill 將所有的 > process 一個個砍掉,就連 inetd, syslogd 也不例外,簡單地說,就是 > 「手動」進入 single user mode。有人會問為什麼不直接打 telinit s > 就好了?因為現在系統已不太對勁了,我很怕在進入 single user mode > 的過程中,可能那個 script 的動作又會 hang 住,變成 zombie process, > 所以才手動一個個砍。 > >3. 然後我試圖 umount 硬碟的 filesystem, 我的 partition 如下 > >Filesystem 1k-blocks Used Available Use% Mounted on >/dev/hda1 694695 584419 74393 89% / >/dev/hda2 247871 47904 187166 20% /var >/dev/hda3 595195 518024 46427 92% /home >/dev/hdb1 1211511 871568 277348 76% /opt > > 我先 umount /opt 與 /var, 幸好都可以 umount, 要 umount /var 要注 > 意,必須確定所有的 system daemon 都 kill 掉了,才能 umount 成功。 > 因為 system daemon 常常讀寫 /var/log 的檔案,只要有任何程式在使用 > 檔案,就無法 umount。 > >4. 因為我出事的那一刻是在 /home partition 下的,也就是 mount, sync > 等指令是在 /home partition 下執行的,因此,除非這兩個 process 完 > 全結束,才能 umount 這個 partition。然而,這兩個 process 正以 zombie > 的姿態掛在那裏,也無法 kill 掉,所以,我將這 partition mount 成 > read-only: > > mount -o remount,ro /home > > 幸好這樣子還沒問題。 > >5. 最後, / partition 也 mount read-only: > > mount -o remount,ro / > >6. 按下 reset 重開機。由於我這時所有的 partition 不是 umount 了就是 > 已 mount read-only, 所以理論上這時按下 reset 重開對於 filesystem > 完全沒有損壞。事實上也是如此,重開的過程中, filesystem 完全不需 > 要 check, 一下子,系統就正常了。 > >以上就是一個很簡單的系統搶救經驗,提供給大家參考 :-)) >-- > ─── 居 士 ─── > <[email protected]> > > Welcome to XCIN Project: http://xcin.linux.org.tw >-- >※ Origin: 臺大電機 Maxwell 站 ◆ From: twcpro.phys.ntu.edu.tw > -------------------------------------------------------------------------- < 發信人: [email protected] (居士), 看板: Linux 標 題: Re: 一個急救的經驗 發信站: 台大電機 Maxwell BBS (Sat May 6 08:43:58 2000) 轉信站: Ptt!bbs.ee.ntu!Maxwell ※ 引述《"Edward Lee" <[email protected]>》之銘言: : 很感謝居土兄在 coding 之餘還提供這麼寶貴的經驗,但 : 不知有沒想過把 SysRg 的功能編譯進 kernel 呢?不過不知 : 道在您這種情況時 SysRg 還能不能正確動作,在下試用了 : 好幾次,都能很輕易的 sync、umount 及 reboot。不妨試看看 : ,有沒有副作用就不是很清楚了!:-) 找了一會,終於找到您所說的 SysRg :-)) 可能也有人和我一樣,不曉得這是什麼東東,所以列一下 kernel 裏的 doc: CONFIG_MAGIC_SYSRQ: If you say Y here, you will have some control over the system even if the system crashes for example during kernel debugging (e.g., you will be able to flush the buffer cache to disk, reboot the system immediately or dump some status information). This is accomplished by pressing various keys while holding SysRq (Alt+PrintScreen). The keys are documented in Documentation/sysrq.txt. Don't say Y unless you really know what this hack does. 因此,這主要是用做 kernel debug 的,因為我從來沒有想過要去 debug kernel, 所以也就沒試過將此功能編入 kernel。 不過我後來想到,在類似情況下 kernel automounter (CONFIG_AUTOFS_FS) 也許會有用。我曾經看過我同學試過,磁片放入後,也不用 mount, 直接打 ls 看 fstab 中該磁片所在的 mount point, kernel 就直接將磁片 mount 上來並執行 ls 的命令。然後也不用 umount, 直接抽出磁片,系統也會知 道磁片不在了而自動 umount 。因為它實在太「自動化」了,所以我擔心機 器若在公用場合下會有 security 問題,但如果只是個人使用的話,倒是相 當方便 :-)) -- ─── 居 士 ─── <[email protected]> Welcome to XCIN Project: http://xcin.linux.org.tw -- ※ Origin: 臺大電機 Maxwell 站 ◆ From: twcpro.phys.ntu.edu.tw > -------------------------------------------------------------------------- < 發信人: chengfs <[email protected]>, 看板: Linux 標 題: Re: SuSE =?big5?B?TGludXiko6/gc3RhcnR4?= 發信站: Jaring (Sat May 6 11:17:30 2000) 轉信站: Ptt!bbs.ee.ntu!freebsd.ntu!News.Math.NCTU!news-spur1.maxwell.syr.edu!n Plug&play wrote: > 剛剛裝了SuSE Linux, > 但竟然不能startx (已經執行了XF86Setup) 啊! 終於解決了,原來灌Linux時必須裝到XVGA-Server或VGA16-Server 然後用root Login 跑 yast->system administration->configure XFree86TM->saX. SuSE 有提供3dfx, Matrox G200, nVidia Riva 122, Riva TNT2的X-Serverㄛ 還有可以選擇安裝繁體字形 對,SuSE有提供繁體字形, 但如果沒選擇到的話他是不會裝進去的. > -------------------------------------------------------------------------- < 發信人: "Edward Lee" <[email protected]>, 看板: Linux 標 題: Re: 一個急救的經驗 發信站: DCI HiNet (Sat May 6 14:06:03 2000) 轉信站: Ptt!bbs.ee.ntu!freebsd.ntu!netnews.csie.nctu!ctu-peer!news.nctu!spring 居士 撰寫於文章 <[email protected]>... >找了一會,終於找到您所說的 SysRg :-)) >可能也有人和我一樣,不曉得這是什麼東東,所以列一下 kernel 裏的 doc: > >CONFIG_MAGIC_SYSRQ: > >If you say Y here, you will have some control over the system even >if the system crashes for example during kernel debugging (e.g., you >will be able to flush the buffer cache to disk, reboot the system >immediately or dump some status information). This is accomplished >by pressing various keys while holding SysRq (Alt+PrintScreen). The >keys are documented in Documentation/sysrq.txt. Don't say Y unless >you really know what this hack does. > >因此,這主要是用做 kernel debug 的,因為我從來沒有想過要去 debug >kernel, 所以也就沒試過將此功能編入 kernel。 > 這在早期的版本好像是叫什麼 WatchCat(Dog?),後來才改成 SySRq,就是為 hacker 而設的,怕把系統搞當掉。:-) 因在下 常常玩些古怪的程式,因此不得已設下這個功能,從 2.0.0 版就開始試用,還沒碰什麼問題。不過等功力大幅提升後 ,倒是很想 hack 看看這個功能的機制。 當然,如果是運作中的 server ,還是不要冒險使用的好。 >不過我後來想到,在類似情況下 kernel automounter (CONFIG_AUTOFS_FS) >也許會有用。我曾經看過我同學試過,磁片放入後,也不用 mount, 直接打 >ls 看 fstab 中該磁片所在的 mount point, kernel 就直接將磁片 mount >上來並執行 ls 的命令。然後也不用 umount, 直接抽出磁片,系統也會知 >道磁片不在了而自動 umount 。因為它實在太「自動化」了,所以我擔心機 >器若在公用場合下會有 security 問題,但如果只是個人使用的話,倒是相 >當方便 :-)) > 這個功能也試過,不過不很習慣,後來就沒再用了,還是手 動打指令較習慣。不要說在公共場所,就是在家裡也是很麻 煩。:-) 說到 security 的問題,其實一個 C-A-D 就夠了,好像應該是機 房是不准閒雜人等進入才是,否則找到插頭,就是找到了天大 的破壞指令了!^_^ - Edward Lee [email protected] ----------------------------------------------- 無名天地之始,有名萬物之母。 ----------------------------------------------- > -------------------------------------------------------------------------- < 發信人: [email protected] ([email protected], 看板: Linux 標 題: Re: 一個急救的經驗 發信站: Computer Center, NCKU, Tainan, Taiwan, R.O. (Sat May 6 19:15:38 2000) 轉信站: Ptt!bbs.ee.ntu!freebsd.ntu!ctu-peer!ctu-gate!news.nctu!news2.ncku!spar How about this one: rpm -e --nodeps rpm 居然真的給它拆掉了.... rpm 本身沒有防呆裝置嗎? 這個動作就像拔出鑰匙丟到座位上然後把車門關起來.... 還好之前已經裝了gnorpm, 可以再用gnorpm把rpm 給裝回來。 萬一今天連gnorpm都沒有,那該怎麼辦? 此外,記錄整個系統所有已安裝的rpm 記錄壞掉了又該怎麼辦? 誰有好方法的? :) > -------------------------------------------------------------------------- < 發信人: [email protected] (大哥哥雷恩), 看板: Linux 標 題: Re: 一個急救的經驗 發信站: 交大資科_BBS (Sat May 6 20:18:22 2000) 轉信站: Ptt!bbs.ee.ntu!news.ntu!ctu-gate!news.nctu!netnews.csie.nctu!news.cs.n ==> 在 [email protected] (p2682116@ccm 的文章中提到: > How about this one: rpm -e --nodeps rpm > 居然真的給它拆掉了.... > rpm 本身沒有防呆裝置嗎? > 這個動作就像拔出鑰匙丟到座位上然後把車門關起來.... > 還好之前已經裝了gnorpm, > 可以再用gnorpm把rpm 給裝回來。 > 萬一今天連gnorpm都沒有,那該怎麼辦? > 此外,記錄整個系統所有已安裝的rpm 記錄壞掉了又該怎麼辦? > 誰有好方法的? :) 直接重新編譯安裝就好了, 不過我都不用rpm的 -- * Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>