1. 程式人生 > >linux,unix,bsd命令收集

linux,unix,bsd命令收集

檔案系統

許可權

chmodchown 更改訪問許可權和所有權。對於所有使用者的預設掩碼(umask)可以在 /etc/profile (Linux) 或 /etc/login.conf (FreeBSD) 中修改。其預設掩碼(umask)通常為 022。掩碼可以和777做減法,從而得到755的許可權。
1 --x 執行                           # Mode 764 = 執行/讀/寫 | 讀/寫 | 讀
2 -w- 寫                             # |---所有者|---使用者組|---其他使用者|
4 r-- 讀
  ugo=a                              u=所有者, g=使用者組, o=其他使用者, a=所有使用者
# chmod [OPTION] MODE[,MODE] FILE    # MODE 可以是 [ugoa]*([-+=]([rwxXst]))
# chmod 640 /var/log/maillog         # 更改 maillog 訪問許可權為 -rw-r-----
# chmod u=rw,g=r,o= /var/log/maillog # 同上
# chmod -R o-r /home/*               # 遞迴去除所有其他使用者的可讀許可權
# chmod u+s /path/to/prog            # 在可執行位設定 SUID (知道你在幹什麼!當執行一個具有 setuid 許可權的檔案時,檔案的執行過程將具有檔案所有者的特權(比如root)。所以,應儘量避免不加選擇地建立和使用 root 使用者擁有的 seruid 程式或 root 組擁有的 setgid 程式。)
# find / -perm -u+s -print           # 查詢所有設定過 SUID 位的程式
# chown user:group /path/to/file # 改變檔案的所有者和檔案關聯的組 # chgrp group /path/to/file # 改變檔案關聯的組 # chmod 640 `find ./ -type f -print` # Change permissions to 640 for all files # chmod 751 `find ./ -type d -print` # Change permissions to 751 for all directories

磁碟資訊

# diskinfo -v /dev/ad2               # 顯示磁碟資訊(扇區/大小) (FreeBSD)
# hdparm -I /dev/sda                 # 顯示 IDE/ATA 磁碟資訊 (Linux)
# fdisk /dev/ad2 # 顯示和修改磁碟分割槽表 # smartctl -a /dev/ad2 # 顯示磁碟檢測資訊

Boot

FreeBSD

如果新核心不能引導,要引導一箇舊核心,停止啟動倒計時,做如下動作:
# unload
# load kernel.old
# boot

系統掛載點/磁碟使用情況

# mount | column -t                  # 顯示系統已掛載分割槽情況
# df                                 # 顯示磁碟剩餘空間和掛載的裝置
# cat /proc/partitions               # 顯示所有裝置的所有分割槽(Linux)

磁碟使用情況

# du -sh *                           # 列出當前目錄下所有資料夾大小
# du -csh                            # 當前目錄下所有目錄大小總數
# du -ks * | sort -n -r              # 由大到小排序顯示目錄大小
# ls -lSr                            # 由小到大顯示檔案列表

誰打開了那些檔案

對於找出哪些檔案阻止解除安裝分割槽並給出有代表性的錯誤是有幫助的:
# umount /home/
umount: unmount of /home             # 不能解除安裝,因為有一個檔案鎖定了 home
   failed: Device busy

FreeBSD 和大多數 Unix

# fstat -f /home                     # 對於一個掛載點
# fstat -p PID                       # 對於一個應用程式程序 ID
# fstat -u user                      # 對於一個使用者
查詢已開啟日誌檔案(或其他已開啟檔案), 比如 Xorg:
# ps ax | grep Xorg | awk '{print $1}'
1252
# fstat -p 1252
USER     CMD          PID   FD MOUNT      INUM MODE         SZ|DV R/W
root     Xorg        1252 root /             2 drwxr-xr-x     512  r
root     Xorg        1252 text /usr     216016 -rws--x--x  1679848 r
root     Xorg        1252    0 /var     212042 -rw-r--r--   56987  w
在 /var 中的只有一個 inum 為 212042 的檔案:
# find -x /var -inum 212042
/var/log/Xorg.0.log

Linux

使用 fuserlsof 在一個掛載點中查詢已開啟的檔案:
# fuser -m /home                     # 列出訪問 /home 的程序
# lsof /home
COMMAND   PID    USER   FD   TYPE DEVICE    SIZE     NODE NAME
tcsh    29029 eedcoba  cwd    DIR   0,18   12288  1048587 /home/eedcoba (guam:/home)
lsof    29140 eedcoba  cwd    DIR   0,18   12288  1048587 /home/eedcoba (guam:/home)
關於一個應用程式:
ps ax | grep Xorg | awk '{print $1}'
3324
# lsof -p 3324
COMMAND   PID    USER   FD   TYPE DEVICE    SIZE    NODE NAME
Xorg    3324 root    0w   REG        8,6   56296      12492 /var/log/Xorg.0.log
關於單個檔案:
# lsof /var/log/Xorg.0.log
COMMAND  PID USER   FD   TYPE DEVICE  SIZE  NODE NAME
Xorg    3324 root    0w   REG    8,6 56296 12492 /var/log/Xorg.0.log

掛載/重掛載一個檔案系統

舉個 cdrom 的例子。如果已經列於 /etc/fstab 中:
# mount /cdrom
或在 /dev/ 中查詢裝置,亦或使用 dmesg 命令

FreeBSD

# mount -v -t cd9660 /dev/cd0c /mnt  # cdrom
# mount_cd9660 /dev/wcd0c /cdrom     # 另外一個方法
# mount -v -t msdos /dev/fd0c /mnt   # 軟碟機
/etc/fstab 中的一條:
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0
要允許使用者做這些,可以這麼做:
# sysctl vfs.usermount=1  # 或者在 /etc/sysctl.conf 中插入一條 "vfs.usermount=1"

Linux

# mount -t auto /dev/cdrom /mnt/cdrom   # 典型的 cdrom 掛載命令
# mount /dev/hdc -t iso9660 -r /cdrom   # IDE
# mount /dev/sdc0 -t iso9660 -r /cdrom  # SCSI
/etc/fstab 中的條目:
/dev/cdrom   /media/cdrom  subfs noauto,fs=cdfss,ro,procuid,nosuid,nodev,exec 0 0

用 Linux 掛載一個 FreeBSD 分割槽

用 fdisk 查詢分割槽號,這通常是 root 分割槽,但也可能是其他 BSD slice。如果 FreeBSD 有許多 slice,他們不列於同一個 fdisk 分割槽表中,但可見於 /dev/sda* 或 /dev/hda* 中。
# fdisk /dev/sda                     # 查詢 FreeBSD 分割槽
/dev/sda3   *        5357        7905    20474842+  a5  FreeBSD
# mount -t ufs -o ufstype=ufs2,ro /dev/sda3 /mnt
/dev/sda10 = /tmp; /dev/sda11 /usr   # 其他 slice

重掛載

不用解除安裝一個裝置來重掛載。 對 fsck 來說是必須的。舉個例子:
# mount -o remount,ro /              # Linux
# mount -o ro /                      # FreeBSD
從 cdrom 拷貝原始資料進一個 iso 映像檔案:
# dd if=/dev/cd0c of=file.iso

給即時燒錄(on-the-fly)新增 swap

假設你需要很多的 swap (即刻),如一個 2GB 檔案 /swap2gb (只限 Linux)。
# dd if=/dev/zero of=/swap2gb bs=1024k count=2000
# mkswap /swap2gb                    # 建立交換區
# swapon /swap2gb                    # 啟用這個 swap。現在可以使用了
# swapoff /swap2gb                   # 當使用完畢,釋放這個 swap
# rm /swap2gb

掛載一個 SMB譯註:SMB (Server Message Block,伺服器資訊塊),又稱 CIFS (Common Internet File System,通用Internet檔案系統) 共享

假設我們要訪問計算機 smbserver 上的名叫 myshare 的 SMB 共享,在 window PC 上鍵入的地址是 \\smbserver\myshare\。我掛載到 /mnt/smbshare 上。注意 cifs 必須是 IP 或 DNS 名,不是 Windows 名字。

Linux

# smbclient -U user -I 192.168.16.229 -L //smbshare/    # 列出共享
# mount -t smbfs -o username=winuser //smbserver/myshare /mnt/smbshare
# mount -t cifs -o username=winuser,password=winpwd //192.168.16.229/myshare /mnt/share
此外,mount.cifs 軟體包可以儲存認證到一個檔案中。例如,/home/user/.smb:
username=winuser
password=winpwd
現在可以像下面那樣掛載:
# mount -t cifs -o credentials=/home/user/.smb //192.168.16.229/myshare /mnt/smbshare

FreeBSD

使用 -I 來獲取 IP (或 DNS 名);smbserver 是 Windows 名。
# smbutil view -I 192.168.16.229 //[email protected]    # 列出共享
# mount_smbfs -I 192.168.16.229 //[email protected]/myshare /mnt/smbshare

掛載映象檔案

Linux loop-back

# mount -t iso9660 -o loop file.iso /mnt                # 掛載 CD 映象檔案
# mount -t ext3 -o loop file.img /mnt                   # 用 ext3 檔案系統掛載映象檔案

FreeBSD

用於儲存裝置 (如果需要做 # kldload md.ko 動作):
# mdconfig -a -t vnode -f file.iso -u 0
# mount -t cd9660 /dev/md0 /mnt
# umount /mnt; mdconfig -d -u 0                         # 清除 md 裝置
用於虛擬節點:
# vnconfig /dev/vn0c file.iso; mount -t cd9660 /dev/vn0c /mnt
# umount /mnt; vnconfig -u /dev/vn0c                    # 清除 vn 裝置

Solaris and FreeBSD

用於 loop-back 檔案介面或 lofi:
# lofiadm -a file.iso
# mount -F hsfs -o ro /dev/lofi/1 /mnt
# umount /mnt; lofiadm -d /dev/lofi/1                   # 清除 lofi 裝置

建立並燒錄 ISO 映象檔案

這將會拷貝 CD 或者 DVD 的扇區。當不用 conv=notrunc,映象檔案會等於 CD 內容大小而非 CD 容量大小。看下面和 dd 例子
# dd if=/dev/hdc of=/tmp/mycd.iso bs=2048 conv=notrunc
使用 mkisofs 把目錄中所有檔案建立成 CD/DVD 映象檔案。克服檔名限制:-r 開啟 Rock Ridge 擴充套件用於 Unix 系統,-J 開啟 Joliet 擴充套件用於微軟系統。-L 允許 ISO9660 檔名第一個字元為句點。
# mkisofs -J -L -r -V TITLE -o imagefile.iso /path/to/dir
對於 FreeBSD,mkisofs 可以到 port 的 sysutils/cdrtools 中找到。

燒錄 ISO 映象檔案

FreeBSD

FreeBSD 預設情況下沒有在 ATAPI 驅動上啟用 DMA。DMA 可用 sysctl 命令啟用,其引數如下,或者在 /boot/loader.conf 中新增如下條目:
hw.ata.ata_dma="1"
hw.ata.atapi_dma="1"
burncd 用於 ATAPI 驅動(burncd 為基本系統的一部分),cdrecord (在 sysutils/cdrtools 中)用於 SCSI 驅動。
# burncd -f /dev/acd0 data imagefile.iso fixate      # ATAPI 驅動
# cdrecord -scanbus                  # 查詢 burner 裝置描述符(如 1,0,0)
# cdrecord dev=1,0,0 imagefile.iso

Linux

對於 Linux,同樣使用 cdrecord 如上文所述。此外,它還可以使用本地 ATAPI 介面查詢裝置描述符:
# cdrecord dev=ATAPI -scanbus
然後同上面一樣燒錄 CD/DVD。

dvd+rw-tools

dvd+rw-toolshttp://fy.chalmers.se/~appro/linux/DVD+RW/ 工具包(FreeBSD: ports/sysutils/dvd+rw-tools)可以做上面的一切,其還包括 growisofs 工具來燒錄 CD 或 DVD。本例項所引用的 DVD 裝置 /dev/dvd 可能是指向 /dev/scd0 (Linux)的符號連線,或者 /dev/cd0 (FreeBSD),或者 /dev/rcd0c (NetBSD/OpenBSD),或者 /dev/rdsk/c0t1d0s2 (Solaris)。對於本例項 FreeBSD 手冊 18.7 章http://www.freebsd.org/handbook/creating-dvds.html 上有一份很好的文件。
          # -dvd-compat 選項將完結光碟,光碟便不可再附加資料
# growisofs -dvd-compat -Z /dev/dvd=imagefile.iso     # 燒錄已存在的 iso 映象檔案
# growisofs -dvd-compat -Z /dev/dvd -J -R /p/to/data  # 直接燒錄

轉換 Nero .nrg 檔案成 .iso

Nero 簡單的添加了 300KB 的頭到一個常規的 iso 映象檔案中。我們可用 dd 工具來去除它。
# dd bs=1k if=imagefile.nrg of=imagefile.iso skip=300

轉換 bin/cue 映象成 .iso

bchunk程式http://freshmeat.net/projects/bchunk/可以做到這一點。在 FreeBSD 中,它在 port 的 sysutils/bchunk 中。
# bchunk imagefile.bin imagefile.cue imagefile.iso

建立基於檔案的映象檔案

舉個例子,一個使用檔案 /usr/vdisk.img 的 1GB 分割槽。這裡我們使用 vnode 0,但也可為 1。

FreeBSD

# dd if=/dev/random of=/usr/vdisk.img bs=1K count=1M
# mdconfig -a -t vnode -f /usr/vdisk.img -u 0         # 建立裝置 /dev/md1
# bsdlabel -w /dev/md0
# newfs /dev/md0c
# mount /dev/md0c /mnt
# umount /mnt; mdconfig -d -u 0; rm /usr/vdisk.img    # 清除 md 裝置
這個基於檔案的映象檔案可以在 /etc/rc.conf 和 /etc/fstab 中配置成啟動期間自動掛載。可用 # /etc/rc.d/mdconfig start (先用 # mdconfig -d -u 0 命令刪除 md0 裝置) 測試你的設定。
需要注意的是,那個自動設定僅工作於這個基於檔案的映象檔案不在 root 分割槽中。原因是 /etc/rc.d/mdconfig 指令碼早於啟動就執行了,並且 root 分割槽仍然是隻讀的。指令碼 /etc/rc.d/mdconfig2 之後,映象檔案將位於 root 分割槽外掛載。
/boot/loader.conf:
md_load="YES"
/etc/rc.conf:
# mdconfig_md0="-t vnode -f /usr/vdisk.img"          # /usr 不在 root 分割槽中
/etc/fstab: (行後的兩個 0 0 很重要,它告訴 fsck 忽略這個裝置,現在還不存在。)
/dev/md0                /usr/vdisk      ufs     rw              0       0
也可能在增加映象檔案的大小之後,如增大到 300MB。
# umount /mnt; mdconfig -d -u 0
# dd if=/dev/zero bs=1m count=300 >> /usr/vdisk.img
# mdconfig -a -t vnode -f /usr/vdisk.img -u 0
# growfs /dev/md0
# mount /dev/md0c /mnt                                # 檔案分割槽現在為 300MB

Linux

# dd if=/dev/zero of=/usr/vdisk.img bs=1024k count=1024
# mkfs.ext3 /usr/vdisk.img
# mount -o loop /usr/vdisk.img /mnt
# umount /mnt; rm /usr/vdisk.img                      # 清楚

Linux with losetup

/dev/zerourandom 更快,但對於加密來說卻不夠安全。
# dd if=/dev/urandom of=/usr/vdisk.img bs=1024k count=1024
# losetup /dev/loop0 /usr/vdisk.img                   # 建立並聯結 /dev/loop0
# mkfs.ext3 /dev/loop0
# mount /dev/loop0 /mnt
# losetup -a                                          # 檢視已經掛載的 loop 裝置
# umount /mnt
# losetup -d /dev/loop0                               # Detach
# rm /usr/vdisk.img

建立基於記憶體的檔案系統

基於記憶體的檔案系統對於重量級 IO 應用程式來說非常快。怎樣建立一個掛載到 /memdisk 的 64M 分割槽:

FreeBSD

# mount_mfs -o rw -s 64M md /memdisk
# umount /memdisk; mdconfig -d -u 0                   # 清除該 md 裝置
md     /memdisk     mfs     rw,-s64M    0   0         # /etc/fstab 條目

Linux

# mount -t tmpfs -osize=64m tmpfs /memdisk

磁碟效能

在 ad4s3c (/home) 分割槽上讀寫一個 1GB 的檔案。
# time dd if=/dev/ad4s3c of=/dev/null bs=1024k count=1000
# time dd if=/dev/zero bs=1024k count=1000 of=/home/1Gb.file
# hdparm -tT /dev/hda      # 僅限 Linux

相關推薦

linux,unix,bsd命令收集

檔案系統 許可權 用 chmod 和 chown 更改訪問許可權和所有權。對於所有使用者的預設掩碼(umask)可以在 /etc/profile (Linux) 或 /etc/login.conf (FreeBSD) 中修改。其預設掩碼(umask)通常為 022。掩碼可以和777做減法,從而得到

Linux/Unix基本命令(二)

distrib *** ... 空間 arch time spool 但是 報錯 基本命令-2壓縮和歸檔打包:即歸檔,類似於旅遊之前收拾行李壓縮:為了減少占用的磁盤空間,可以做備份,在網絡上傳輸時節省網絡帶寬。打包壓縮軟件windows:winrar 360壓縮 好壓 7z

Linux/Unix常用命令彙總

Linux/Unix常用命令彙總 Linux中最常用的命令,應熟練使用 ls:檢視檔案資訊 clear:清屏 cd:切換工作目錄 pwd:顯示當前路徑 mkdir:建立目錄 rm:刪除檔案 cp:拷貝

linux&unix find命令

whereis whereis 程式主要用來檢視linux or unix 外部程式和幫助文件或者其他文件的位置 通過它,你可能發現一些沒有聽別人說過的文件,用法,主要是 通過查詢/bin /usr/bin 等環境變數路徑來查詢。 wh

三、Linux/UNIX操作命令積累【gzip、jar、tar、find、crontab】

        在使用Linux/UNIX下,經常會使用文字介面去設定系統或作業系統,作者本人在工作的過程也在不斷接觸這方面的命令,所以為此特醞釀、準備、開始了本文的編寫。本文主要記錄自己平時遇到的一

Linux&Unix 常用命令

1.cat 用途: 1.讀取檔案,在螢幕上顯示整個檔案的內容; 2.合併檔案cat filea,fileb>filec; 3.cat的輸出重導向檔案(>); 4.給檔案新增資訊(>>); 5.編輯文字cat >> filea (或

linux unix Find 命令

xargs在使用f i n d命令的- e x e c選項處理匹配到的檔案時, f i n d命令將所有匹配到的檔案一起傳遞給e x e c執行。但有些系統對能夠傳遞給e x e c的命令長度有限制,這樣在f i n d命令執行幾分鐘之後,就會出現溢位錯誤。錯誤資訊通常是“引數列太長”或“引數列溢位”。這就是

Linux/Unix修改命令提示符當前路徑的顯示方式

要修改命令提示符的顯示方式,我們可以修改環境變數PS1,使用vi編輯/etc/profile檔案在最後加上一行語句。 我修改的為:export PS1="\[\e[32;1m\][\[email protected]\[\e[36;1m\]\h \[\e[35

九、Linux/UNIX操作命令積累【rpm】

      在使用Linux/UNIX下,經常會使用文字介面去設定系統或作業系統,作者本人在工作的過程也在不斷接觸這方面的命令,所以為此特醞釀、準備、開始了本文的編寫。本文主要記錄自己平時遇到的一些Li

Linux下實用命令收集

lsof -w -n -i tcp:8080 根據埠號找到程序號 yum search locate 搜尋紅帽資源 yum install mlocate 安裝搜尋得到的正確資源名稱 locate updatedb 更新檔案索引資料庫(否則locate可能搜不到你想要的檔

linux學習之二:日常的基礎命令收集

幫助文檔 gedit 查看 日期 取整 style 位置 某月 linux 1、 ls 2、pwd  顯示當前目錄所在位置 3、date  日期時間 4、cal  日歷   默認顯示當前該月   cal 2012 :查看2012年的日歷   cal 月 年 : 查看某年某月

Linux/Unix下的任務管理器-top命令

執行 time 系統函數 輸入 僵屍 spa 內存 int log Windows下的任務管理器雖然不好用(個人更喜歡Process Explorer些),但也算方便,可以方便的查看進程,CPU,內存...也可以很容易的結束進程 沒有圖形化界面下的Linux,也有命令可以

linux 常用命令收集

log 行號 執行 日期時間 more rar filename 修改文件 res rm -rf + 文件夾名 刪除該目錄 rmdir 刪除空目錄 mkdir + 文件 創建目錄 clear 清屏 pwd 當前路徑 ll -i 顯示文件節點 ,使用find ./ -inum

Linux/Unix 命令列選項前的一橫(-)、兩橫(--)和沒橫

在使用 Linux/Unix 命令的時候,我們可能會對其五花八門的選項表示形式感到困惑,比如: ls -l ls --size ps aux 我們可以發現,這三個命令的選項都有不同的風格,有的是一個

Linux/Unix Bash Shell 所有內建命令

對於bash shell本身包含的內建命令,我們如何在Linux / Apple OS X / *BSD / 類Unix作業系統上全部列出他們,並且無需查閱大量得bash手冊? shell 內建命令就是一個命令或一個函式,從 shell 中呼叫,它直接在 shell 中執行。bash shell

Linux/Unix下grep命令使用的幾個例子 grep Examples

grep 語法grep 'word' filenamegrep 'string1 string2'  filenamecat otherfile | grep 'something'command | grep 'something'command option1 | grep 'data'grep --co

Linux/Unix下tar命令詳解

                tar命令是Linux/Unix系統下的打包壓縮工具,可以將多個檔案合併為一個檔案,打包後的檔案字尾為“.tar”。這裡首先需要明確兩個概念:打包和壓縮。打包是指將一大堆檔案或目錄合併成一個總的檔案;壓縮則是將一個大容量的檔案通過一些壓縮演算法(gzip、bzip2等命令)變成

Unix/Linux】【命令】【檔案,目錄操作工具】列出所有子目錄與檔案——ls (ll)命令

ls命令是Linux下最常用的命令。ls命令就是list的縮寫。預設下ls用來列印當前目錄的清單。如果ls指定其他目錄,那麼就會顯式指定目錄裡的檔案及資料夾清單。通過ls命令不僅可以檢視linux資料夾包含的檔案,而且可以檢視檔案許可權等等。 命令格式: ls [選項]

Unix/Linux】【命令】【檔案,目錄操作工具】複製檔案或目錄——cp命令

cp命令用來複制檔案或者目錄,是Linux系統中最常用的命令之一。 一般情況下,shell會設定一個別名,在命令列下複製檔案時,如果目標檔案已經存在,就會詢問是否覆蓋,不管你是否使用-i引數。但是如果是在shell指令碼中執行cp時,沒有-i引數時不會詢問是否覆蓋。這說明命

sshxcute --java遠端執行linux/unix命令的工具類

原文地址:https://www.ibm.com/developerworks/cn/opensource/os-sshxcute/ ----------------------------------------------------------------------