網頁

2013年5月14日 星期二

Ubuntu 12 的 /etc/inittab 在那麼?


  • 在Ubuntu上說實在的已經沒有/etc/inittab這裡檔案了,你可以在查一下/usr/share/doc/upstart/README.Debian.gz 檔可以看見一個關鍵的檔檔在/etc/init/rc-sysinit.conf。你可以試在變換你的runlevel,但是注意在ubuntu下的runlevel級別有些不同
    • Ubuntu的runlevel
      • 0 - shutdown
      • 1 - single user mode
      • 2 - multiuser graphical mode
      • 6 - reboot
  • 本文原於http://askubuntu.com/questions/71621/where-is-the-etc-inittab-file-or-how-to-set-the-default-runlevel
  • 以下是原作者的文章

There is no /etc/inittab in Ubuntu, because Ubuntu uses upstart to define startup services and runlevel. And this has not started from the last release of Ubuntu, but a long time ago.
Anyway, you can still use inittab, simply create one. I report a passage from/usr/share/doc/upstart/README.Debian.gz:
How do I change the default runlevel?
-------------------------------------

If you have an /etc/inittab file, edit it.  Locate the following line:

    id:N:initdefault:

Where N is the default runlevel, change this to match.

Most people won't have that file, you can edit /etc/init/rc-sysinit.conf
and change the following line:

    env DEFAULT_RUNLEVEL=2
but bear in mind that Ubuntu do not use standard runlevel meaning as other linux distros/unix os. Old standard was:
  • 0 - shutdown
  • 1 - single user mode
  • 3 - multiuser text mode
  • 5 - multiuser graphical mode
  • 6 - reboot
but Ubuntu uses:
  • 0 - shutdown
  • 1 - single user mode
  • 2 - multiuser graphical mode
  • 6 - reboot
Finally, if you want to have a virtual terminal with automatic login, then modifying the exec line intty1.conf seems the correct way, though I do not know mingetty, so cannot say if you used it correctly.

2013年4月25日 星期四

cpio指令



  • cpio是一個比較古老的備份命令,也是用於磁帶機備份的工具,雖然如此現在許多時侯仍然需要使用這命令,例如定制系統內存映像盤時等。像是系統內存映像盤通常位於/boot中,文件名以initrd開頭。
  • 指令選項
    • i:使用copy-in模式,還原歸檔文件或列歸檔文件中的文件列表
    • o:使用copy-out模式,建立歸檔文件
    • p:使用copy-pass模式,將文件直接複制到目的目錄
    • c:使用老式的ascii歸檔格式。如果需要跟平台使用,就需要使用
    • d:倉建需要的目錄,如果需要文件不處於同一個目錄中,應該使用此選項
    • v:顯示處理過程
    • t:顯示歸檔文件中的文件列表
    • m:保持文件的時間標記
    • H:使用指定的格式歸檔文件
  • sample
    • find /bin -print | cpio -o > bin.bak
    • find -print | cpio -o > ../backup.cpio
    • find -print | cpio -ov > ../backup.cpio
    • find -print | cpio -ov | gzip > ../backup.cpio.gz
    • find -print | cpio -ov | bzip2 > ../backup.cpio.bz2
    • cpio -t < backup.cpio
    • cpio -tv < backup.cpio
    • cpio -tv "*.c" < backup.cpio
    • cpio -i < ../backup.cpio
    • cpio -iv < ../backup.cpio
      • 以上2個,使用選項i將文件恢複到當前的目錄
    • cpio -idv < ../backup.cpio
      • 文件恢複時保持目錄結構
    • cpio -imdv < ../backup.cpio
    • cpio -idv "*.c" < ../backup.cpio





2013年4月23日 星期二

ntpdate指令,通過網路同步時間


  • ntpdate指令,通過網路同步時間
    • ntpdate 192.168.11.15
      • 從192.168.111.15上同步時間
    • hwclock -w
      • 將系統的時間同步到硬件時鐘上
  • 時間服務器位置
    • 中國國家授時中心:210.72.145.44
    • CERNET時間服務:www.time.edu.cn/mem.htm

2013年4月22日 星期一

netstat指令,顯示網路的狀態


  • 假如想觀察本機網路服務的狀態,或本地端與其他主機貸間的連線狀態等資料,可執行netstat指令查詢相關資訊。
  • 範例
    • netstat -a
      • 顯示本機所有網路服務狀態
    • netstat -nt 
      • 查看所有tcp的連線狀態
  • 其他網路上擷取的資訊
netstat
如果你覺得你的某個網路服務明明就啟動了,但是就是無法造成連線的話,那麼應該怎麼辦? 首先你應該要查詢一下自己的網路介面所監聽的埠口 (port) 來看看是否真的有啟動,因為有時候螢幕上面顯示的 [OK] 並不一定是 OK 啊! ^_^
[root@www ~]# netstat -[rn]       <==與路由有關的參數
[root@www ~]# netstat -[antulpc]  <==與網路介面有關的參數
選項與參數:
與路由 (route) 有關的參數說明:
-r  :列出路由表(route table),功能如同 route 這個指令;
-n  :不使用主機名稱與服務名稱,使用 IP 與 port number ,如同 route -n
與網路介面有關的參數:
-a  :列出所有的連線狀態,包括 tcp/udp/unix socket 等;
-t  :僅列出 TCP 封包的連線;
-u  :僅列出 UDP 封包的連線;
-l  :僅列出有在 Listen (監聽) 的服務之網路狀態;
-p  :列出 PID 與 Program 的檔名;
-c  :可以設定幾秒鐘後自動更新一次,例如 -c 5 每五秒更新一次網路狀態的顯示;

# 範例一:列出目前的路由表狀態,且以 IP 及 port number 顯示:
[root@www ~]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         192.168.1.254   0.0.0.0         UG        0 0          0 eth0
# 其實這個參數就跟 route -n 一模一樣,對吧!這不是 netstat 的主要功能啦!

# 範例二:列出目前的所有網路連線狀態,使用 IP 與 port number
[root@www ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address     Foreign Address     State
....(中間省略)....
tcp        0      0 127.0.0.1:25      0.0.0.0:*           LISTEN
tcp        0     52 192.168.1.100:22  192.168.1.101:1937  ESTABLISHED 
tcp        0      0 :::22             :::*                LISTEN
....(中間省略)....
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags    Type    State      I-Node Path
unix  2      [ ACC ]  STREAM  LISTENING  11075  @/var/run/hald/dbus-uukdg1qMPh
unix  2      [ ACC ]  STREAM  LISTENING  10952  /var/run/dbus/system_bus_socket
unix  2      [ ACC ]  STREAM  LISTENING  11032  /var/run/acpid.socket
....(底下省略)....
netstat 的輸出主要分為兩大部分,分別是 TCP/IP 的網路介面部分,以及傳統的 Unix socket 部分。 還記得我們在基礎篇裡面曾經談到檔案的類型嗎?那個 socket 與 FIFO 檔案還記得吧? 那就是在 Unix 介面用來做為程式資料交流的介面了,也就是上頭表格內看到的 Active Unix domain sockets 的內容囉~
通常鳥哥都是建議加上『 -n 』這個參數的,因為可以避過主機名稱與服務名稱的反查,直接以 IP 及埠口號碼 (port number) 來顯示,顯示的速度上會快很多!至於在輸出的訊息當中, 我們先來談一談關於網路連線狀態的輸出部分,他主要是分為底下幾個大項:
  • Proto:該連線的封包協定,主要為 TCP/UDP 等封包;
  • Recv-Q:非由使用者程式連接所複製而來的總 bytes 數;
  • Send-Q:由遠端主機所傳送而來,但不具有 ACK 標誌的總 bytes 數, 意指主動連線 SYN 或其他標誌的封包所佔的 bytes 數;
  • Local Address:本地端的位址,可以是 IP (-n 參數存在時), 也可以是完整的主機名稱。使用的格是就是『 IP:port 』只是 IP 的格式有 IPv4 及 IPv6 的差異。 如上所示,在 port 22 的介面中,使用的 :::22 就是針對 IPv6 的顯示,事實上他就相同於 0.0.0.0:22 的意思。 至於 port 25 僅針對 lo 介面開放,意指 Internet 基本上是無法連接到我本機的 25 埠口啦!
  • Foreign Address:遠端的主機 IP 與 port number
  • stat:狀態列,主要的狀態含有:
    • ESTABLISED:已建立連線的狀態;
    • SYN_SENT:發出主動連線 (SYN 標誌) 的連線封包;
    • SYN_RECV:接收到一個要求連線的主動連線封包;
    • FIN_WAIT1:該插槽服務(socket)已中斷,該連線正在斷線當中;
    • FIN_WAIT2:該連線已掛斷,但正在等待對方主機回應斷線確認的封包;
    • TIME_WAIT:該連線已掛斷,但 socket 還在網路上等待結束;
    • LISTEN:通常用在服務的監聽 port !可使用『 -l 』參數查閱。
基本上,我們常常談到的 netstat 的功能,就是在觀察網路的連線狀態了,而網路連線狀態中, 又以觀察『我目前開了多少的 port 在等待用戶端的連線』以及 『目前我的網路連線狀態中,有多少連線已建立或產生問題』最常見。 那你如何瞭解與觀察呢?通常鳥哥是這樣處理的:
# 範例三:秀出目前已經啟動的網路服務
[root@www ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address  Foreign Address   State   PID/Program name
tcp        0      0 0.0.0.0:34796  0.0.0.0:*         LISTEN 987/rpc.statd
tcp        0      0 0.0.0.0:111    0.0.0.0:*         LISTEN 969/rpcbind
tcp        0      0 127.0.0.1:25   0.0.0.0:*         LISTEN 1231/master
tcp        0      0 :::22          :::*              LISTEN 1155/sshd
udp        0      0 0.0.0.0:111    0.0.0.0:*                969/rpcbind
....(底下省略)....
# 上面最重要的其實是那個 -l 的參數,因為可以僅列出有在 Listen 的 port
你可以發現很多的網路服務其實僅針對本機的 lo 開放而已,網際網路是連接不到該埠口與服務的。 而由上述的資料我們也可以看到,啟動 port 111 的,其實就是 rpcbind 那隻程式,那如果想要關閉這個埠口, 你可以使用 kill 刪除 PID 969,也可以使用 killall 刪除 rpcbind 這個程序即可。如此一來, 很輕鬆的你就能知道哪個程式啟動了哪些埠口囉!
# 範例四:觀察本機上頭所有的網路連線狀態
[root@www ~]# netstat -atunp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address     Foreign Address     State       PID/Program
tcp        0      0 0.0.0.0:111       0.0.0.0:*           LISTEN      969/rpcbind
tcp        0      0 0.0.0.0:22        0.0.0.0:*           LISTEN      1155/sshd
tcp        0      0 127.0.0.1:25      0.0.0.0:*           LISTEN      1231/master
tcp        0     52 192.168.1.100:22  192.168.1.101:1937  ESTABLISHED 4716/0
....(底下省略)....
看到上頭的特殊字體吧?那代表目前已經建立連線的一條網路連線,他是由遠端主機 192.168.1.101 啟動一個大於 1024 的埠口向本地端主機 192.168.1.100 的 port 22 進行的一條連線, 你必須要想起來的是:『Client 端是隨機取一個大於 1024 以上的 port 進行連線』,此外『只有 root 可以啟動小於 1024 以下的 port 』,那就看的懂上頭那條連線囉!如果這條連線你想要砍掉他的話, 看到最右邊的 4716 了沒? kill 會用吧! ^_^
至於傳統的 Unix socket 的資料,記得使用 man netstat 查閱一下吧! 這個 Unix socket 通常是用在一些僅在本機上運作的程式所開啟的插槽介面檔, 例如 X Window 不都是在本機上運作而已嗎?那何必啟動網路的 port 呢?當然可以使用 Unix socket 囉,另外,例如 Postfix 這一類的網路伺服器,由於很多動作都是在本機上頭來完成的, 所以以會佔用很多的 Unix socket 喔!
例題:
請說明服務名稱與 port number 的對應在 Linux 當中,是用那個檔案來設定對應的?
答:
/etc/services

ifconfig顯示或設定網路的介面


  • ifconfig指令
    • 查詢目前的網路介面資訊,不加選項時會顯示已安裝的網路卡與封閉迴路(lo,loopback)的資訊。
    • 相關的欄位資訊
      • inet addr:全名為網際網路位址 ,就是此台的ip位址
      • HWaddr:硬體位址;前3碼是網路炩生產廠商的代號;後3碼是該網路卡的生產序號。
      • Bcase:這是廣播(broadcast)的位址,用於同時發送訊息給相同網域裡的其他電腦。
      • Mask:網路遮罩
      • MTU:每個資料封包的最大傳輸單位(Maximun Transmission Unit),用來控制封包的大小,預設值是1500Bytes.
      • RX、TX:分別代表已接收(Received)與已輸出(Transmitted)的封包總數,以及傳輸時封包出現流失或碰撞等狀況之數量。
    • 網路下設定
      • ifconfig eth0 netmask 255.255.0.0
        • 設定eth0這張網卡的mask為255.255.0.0
      • ifconfig eth0 down
        • 關閉eth0這張網卡
      • ifconfig eth0 up
        • 啟動eth0這張網卡

2013年4月20日 星期六

du指令(追蹤大文件命令)


  • 追蹤大文件命令
    • 隨著系統運行時間的持續,用戶數越來越多,可能會使文件仦統的可用空間越來越小,直到有一天收到系統磁盤空間告警的消息,這時管理員可能需要查看是哪些文件占用了過多的空間,以清理文件系統上的無用文件。此時du指令就派上用場了
    • du指令選項
      • h:以更直觀的方式顯示文件大小。
      • s:查看當前目錄的大小
    • 使用範例:
      • du /mnt
      • du -h /mnt
      • du -sh

2013年4月16日 星期二

關閉、啟動投影密碼(shadow)


  • 若要關閉投影密碼功能,可執行pwunconv指令,將使用者的密碼從shadow檔寫回passwd檔。若要再啟動,則執行pwconv指令。
  • 在郡組上也有相同的投影密影功能,若要關閉群組的投影密碼功能,則可執行grpunconv指令,將密碼從gshadow檔寫回group檔中,若要啟動,則執行grpconv指令。