root用戶與超級用戶的切換
(1) sudo -i
(2) sudo su
(3) su root
安裝升級
查看軟件xxx安裝內容
dpkg -L xxx
查找軟件庫中的軟件
apt-cache search 正則表達式 或 aptitude search 軟件包
顯示系統安裝包的統計信息
apt-cache stats
顯示系統全部可用包的名稱
apt-cache pkgnames
顯示包的信息
apt-cache show k3b
查找文件屬於哪個包
dpkg -S filename apt-file search filename
查看已經安裝了哪些包
dpkg -l
也可用
dpkg -l | less
翻頁查看
查詢軟件xxx依賴哪些包
apt-cache depends xxx
查詢軟件xxx被哪些包依賴
apt-cache rdepends xxx
增加一個光盤源
sudo apt-cdrom add
系統更新
sudo apt-get update (這一步更新包列表)
sudo apt-get dist-upgrade (這一步安裝所有可用更新) 或者 sudo apt-get upgrade (這一步安裝應用程序更新,不安裝新內核等)
清除所有已刪除包的殘餘配置文件
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
如果報如下錯誤,證明你的系統中沒有殘留配置文件了,無須擔心。
dpkg: --purge needs at least one package name argument
Type dpkg --help for help about installing and deinstalling packages [*];
Use `dselect' or `aptitude' for user-friendly package management;
Type dpkg -Dhelp for a list of dpkg debug flag values;
Type dpkg --force-help for a list of forcing options;
Type dpkg-deb --help for help about manipulating *.deb files;
Type dpkg --license for copyright license and lack of warranty (GNU GPL) [*].
Options marked [*] produce a lot of output - pipe it through `less' or `more' !
編譯時缺少h文件的自動處理
sudo auto-apt run ./configure
查看安裝軟件時下載包的臨時存放目錄
ls /var/cache/apt/archives
備份當前系統安裝的所有包的列表
dpkg --get-selections | grep -v deinstall > ~/somefile
從上面備份的安裝包的列表文件恢復所有包
dpkg --set-selections < ~/somefile sudo dselect
清理舊版本的軟件緩存
sudo apt-get autoclean
清理所有軟件緩存
sudo apt-get clean
刪除系統不再使用的孤立軟件
sudo apt-get autoremove
如果使用
sudo apt-get autoremove --purge
的話會把這些孤立軟件的殘留配置文件也一並移除
查看包在服務器上面的地址
apt-get -qq --print-uris download 軟件包名稱 | cut -d\' -f2
徹底刪除Gnome
sudo apt-get --purge remove liborbit2
徹底刪除KDE
sudo apt-get --purge remove libqt3-mt libqtcore4
一鍵安裝 LAMP 服務
sudo tasksel install lamp-server
刪除舊內核
sudo aptitude purge ~ilinux-image-.*\(\!\(`uname -r`\|generic-.*\)\)
導入ppa源的key值
#W: GPG簽名驗證錯誤: http://ppa.launchpad.net jaunty Release: 由於沒有公鑰,下列簽名無法進行驗證: NO_PUBKEY 5126890CDCC7AFE0 sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 5126890CDCC7AFE0 #5126890CDCC7AFE0替換為你需要導入的Key值
增加 add-apt-repository 命令
sudo apt-get install software-properties-common
增加一個ppa源
sudo add-apt-repository ppa:user/ppa-name #使用 ppa 的地址替換 ppa:user/ppa-name
添加163鏡像源
sudo add-apt-repository "deb http://mirrors.163.com/ubuntu/ `lsb_release -cs` main restricted universe multiverse" sudo add-apt-repository "deb http://mirrors.163.com/ubuntu/ `lsb_release -cs`-updates main restricted universe multiverse" sudo add-apt-repository "deb http://mirrors.163.com/ubuntu/ `lsb_release -cs`-security main restricted universe multiverse"
系統升級
- 這里指的是版本間的升級,例如 9.04=>10.04。
- 使用該升級方式通常需要使用 backports 源。
sudo apt-get update sudo apt-get install update-manager-core sudo do-release-upgrade
系統
查看內核
uname -a
查看系統是32位還是64位
#查看long的位數,返回32或64 getconf LONG_BIT #查看文件信息,包含32-bit就是32位,包含64-bit就是64位 file /sbin/init
或者使用
uname -m
查看Ubuntu版本
lsb_release -a 或 cat /etc/lsb-release
查看內核加載的模塊
lsmod
查看PCI設備
lspci
查看USB設備
lsusb #加參數 -v 可以顯示USB設備的描述表(descriptors) lsusb -v
查看網卡狀態
sudo apt-get install ethtool sudo ethtool eth0
激活網卡的 Wake-on-LAN
sudo apt-get install wakeonlan 或 sudo ethtool -s eth0 wol g
查看CPU信息
cat /proc/cpuinfo
顯示當前硬件信息
sudo lshw
查看內存型號
sudo dmidecode -t memory
獲取CPU序列號或者主板序列號
#CPU ID sudo dmidecode -t 4 | grep ID #Serial Number sudo dmidecode | grep Serial #CPU sudo dmidecode -t 4 #BIOS sudo dmidecode -t 0 #主板: sudo dmidecode -t 2 #OEM: sudo dmidecode -t 11
顯示當前內存大小
free -m |grep "Mem" | awk '{print $2}'
查看硬盤溫度
sudo apt-get install hddtemp sudo hddtemp /dev/sda
顯示系統運行時間
uptime
查看系統限制
ulimit -a
查看內核限制
ipcs -l
查看當前屏幕分辨率
xrandr
硬盤
查看塊設備
lsblk
查看硬盤的分區
sudo fdisk -l
硬盤分區
#危險!小心操作。 sudo fdisk /dev/sda
硬盤格式化
#危險!將第一個分區格式化為 ext3 分區, mkfs.reiserfs mkfs.xfs mkfs.vfat sudo mkfs.ext3 /dev/sda1
硬盤檢查
#危險!檢查第一個分區,請不要檢查已經掛載的分區,否則容易丟失和損壞數據 sudo fsck /dev/sda1
硬盤壞道檢測
sudo badblocks -s -v -c 32 /dev/sdb #得到壞的塊后,使用分區工具隔離壞道。
分區掛載
sudo mount -t 文件系統類型 設備路經 訪問路經 #常用文件類型如下: iso9660 光驅文件系統, vfat fat/fat32分區, ntfs ntfs分區, smbfs windows網絡共享目錄, reiserfs、ext3、xfs Linux分區 #如果中文名無法顯示嘗試在最後增加 -o nls=utf8 或 -o iocharset=utf8 #如果需要掛載後,普通用戶也可以使用,在 -o 的參數後面增加 ,umask=022 如:-o nls=utf8,umask=022
分區卸載
sudo umount 目錄名或設備名
只讀掛載ntfs分區
sudo mount -t ntfs -o nls=utf8,umask=0 /dev/sdb1 /mnt/c
可寫掛載ntfs分區
sudo mount -t ntfs-3g -o locale=zh_CN.utf8,umask=0 /dev/sdb1 /mnt/c
掛載fat32分區
sudo mount -t vfat -o iocharset=utf8,umask=0 /dev/sda1 /mnt/c
掛載共享文件
sudo mount -t smbfs -o username=xxx,password=xxx,iocharset=utf8 //192.168.1.1/share /mnt/share
掛載ISO文件
sudo mount -t iso9660 -o loop,utf8 xxx.iso /mnt/iso
查看IDE硬盤信息
sudo hdparm -i /dev/sda
查看軟raid陣列信息
cat /proc/mdstat
參看硬raid陣列信息
dmesg |grep -i raid cat /proc/scsi/scsi
查看SATA硬盤信息
sudo hdparm -I /dev/sda 或 sudo apt-get install blktool sudo blktool /dev/sda id
查看硬盤剩余空間
df
df --help 顯示幫助
查看目錄占用空間
du -hs 目錄名
閃盤沒法卸載
sync fuser -km /media/閃盤卷標
使用文件來增加交換空間
#創建一個512M的交換文件 /swapfile sudo dd if=/dev/zero of=/swapfile bs=1M count=512 sudo mkswap /swapfile sudo swapon /swapfile #sudo vim /etc/fstab #加到fstab文件中讓系統引導時自動啟動 /swapfile swap swap defaults 0 0
查看硬盤當前讀寫情況
# 首先安裝 sysstat 包 sudo apt-get install sysstat #每2秒刷新一次 sudo iostat -x 2
測試硬盤的實際寫入速度
dd if=/dev/zero of=test bs=64k count=512 oflag=dsync
進程
查看當前的內存使用情況
free
連續監視內存使用情況
watch -d free # 使用 Ctrl + c 退出
動態顯示進程執行情況
top top指令運行時輸入H或?打開幫助窗口,輸入Q退出指令。
查看當前有哪些進程
ps -AFL
查看進程的啟動時間
ps -A -opid,stime,etime,args
查看目前登入用戶運行的程序
w
查看當前用戶程序實際內存占用,並排序
ps -u $USER -o pid,rss,cmd --sort -rss
統計程序的內存耗用
ps -eo fname,rss|awk '{arr[$1]+=$2} END {for (i in arr) {print i,arr[i]}}'|sort -k2 -nr
按內存從大到小排列進程
ps -eo "%C : %p : %z : %a"|sort -k5 -nr
列出前十個最耗內存的進程
ps aux | sort -nk +4 | tail
按cpu利用率從大到小排列進程
ps -eo "%C : %p : %z : %a"|sort -nr ps aux --sort -pcpu |head -n 20
查看當前進程樹
pstree
中止一個進程
kill 進程號(就是ps -A中的第一列的數字) 或者 killall 進程名
強制中止一個進程(在上面進程中止不成功的時候使用)
kill -9 進程號 或者 killall -9 進程名
圖形方式中止一個程序
xkill 出現骷髏標志的鼠標,點擊需要中止的程序即可
查看進程打開的文件
lsof -p 進程的pid
統計進程打開的文件數並排序
lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr
顯示開啟文件abc.txt的進程
lsof abc.txt
顯示22端口現在運行什么程序
lsof -i :22
顯示nsd進程現在打開的文件
lsof -c nsd
在後台運行程序,退出登錄後,並不結束程序
nohup 程序 & #查看中間運行情況 tail nohup
在后台運行交互式程序,退出登錄后,並不結束程序
sudo apt-get install screen screen vim a.txt #直接退出后使用 screen -ls # 1656.pts-0.ubuntu (Detached) screen -r 1656 #恢復 #熱鍵,同時按下Ctrl和a鍵結束后,再按下功能鍵 C-a ? #顯示所有鍵綁定信息 C-a w #顯示所有窗口列表 C-a C-a #切換到之前顯示的窗口 C-a c #創建一個新的運行shell的窗口並切換到該窗口 C-a n #切換到下一個窗口 C-a p #切換到前一個窗口(與C-a n相對) C-a 0..9 #切換到窗口0..9 C-a a #發送 C-a到當前窗口 C-a d #暫時斷開screen會話 C-a k #殺掉當前窗口
在后台運行交互式程序,退出登錄后,並不結束程序
tmux 進入后再運行其它命令 tmux attach #恢復 #熱鍵,同時按下Ctrl和b鍵結束后,再按下功能鍵 C-b c #創建一個新的運行shell的窗口並切換到該窗口 C-b n #切換到下一個窗口 C-b p #切換到前一個窗口(與C-a n相對) C-b 0..9 #切換到窗口0..9 C-b d #暫時斷開會話 C-b & #殺掉當前窗口
詳細顯示程序的運行信息
strace -f -F -o outfile <cmd>
增加系統最大打開文件個數
#ulimit -SHn sudo vim /etc/security/limits.conf 文件尾追加 * hard nofile 4096 * soft nofile 4096
sudo vim /etc/pam.d/su 將 pam_limits.so 這一行注釋去掉 重起系統
清除僵屍進程
ps -eal | awk '{ if ($2 == "Z") {print $4}}' | xargs sudo kill -9
將大於120M內存的php-cgi都殺掉
ps -eo pid,fname,rss|grep php-cgi|grep -v grep|awk '{if($3>=120000) print $1}' | xargs sudo kill -9
Linux系統中如何限制用戶進程CPU占用率
renice +10 `ps aux | awk '{ if ($3 > 0.8 && id -u $1 > 500) print $2}'` #或直接編輯/etc/security/limits.conf文件。
網絡
根據IP查網卡地址
arping IP地址
根據IP查電腦名
nmblookup -A IP地址
查看當前IP地址
ifconfig eth0 |awk '/inet/ {split($2,x,":");print x[2]}'
查看當前外網的IP地址
w3m -no-cookie -dump www.ip138.com/ip2city.asp|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' w3m -no-cookie -dump ip.loveroot.com|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' curl ifconfig.me
查看當前監聽80端口的程序
lsof -i :80
查看當前網卡的物理地址
ifconfig eth0 | head -1 | awk '{print $5}'
或者
cat /sys/class/net/eth0/address
同一個網卡增加第二個IP地址
#在網卡eth0上增加一個1.2.3.4的IP: sudo ifconfig eth0:0 1.2.3.4 netmask 255.255.255.0 #刪除增加的IP: sudo ifconfig eth0:0 down
立即讓網絡支持nat
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward sudo iptables -t nat -I POSTROUTING -j MASQUERADE
查看路由信息
netstat -rn sudo route -n
手工增加一條路由
sudo route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
手工刪除一條路由
sudo route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
修改網卡MAC地址的方法
sudo ifconfig eth0 down #關閉網卡 sudo ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE #然后改地址 sudo ifconfig eth0 up #然后啟動網卡
永久改地址方法
sudo gedit /etc/network/interfaces
在 iface eth0 inet static 后面添加一行:
pre-up ifconfig eth0 hw ether 01:01:01:01:01:01
配置文件應該像如下
iface eth0 inet static pre-up ifconfig eth0 hw ether 01:01:01:01:01:01 address 192.168.1.10 netmask 255.255.255.0 gateway 192.168.1.1
最后是 logout 或者reboot
統計當前IP連接的個數
netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n netstat -na|grep SYN|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
統計當前所有IP包的狀態
netstat -nat|awk '{print awk $NF}'|sort|uniq -c|sort -n
統計當前20000個IP包中大於100個IP包的IP地址
tcpdump -tnn -c 20000 -i eth0 | awk -F "." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | awk ' $1 > 100 '
屏蔽IPV6
echo "blacklist ipv6" | sudo tee /etc/modprobe.d/blacklist-ipv6
察看當前網絡連接狀況以及程序
sudo netstat -atnp
查看網絡連接狀態
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
查看當前系統所有的監聽端口
nc -zv localhost 1-65535
查看網絡的當前流量
#安裝 ethstatus 軟件 sudo apt-get install ethstatus #查看 ADSL 的速度 sudo ethstatus -i ppp0 #查看 網卡 的速度 sudo ethstatus -i eth0 #或安裝 bwm-ng sudo apt-get install bwm-ng #查看當前網絡流量 bwm-ng
查看域名的注冊備案情況
whois baidu.cn
查看到某一個域名的路由情況
tracepath baidu.cn
重新從服務器獲得IP地址
sudo dhclient
從當前頁面開始鏡像整個網站到本地
wget -r -p -np -k http://www.21cn.com · -r:在本機建立服務器端目錄結構; · -p: 下載顯示HTML文件的所有圖片; · -np:只下載目標站點指定目錄及其子目錄的內容; · -k: 轉換非相對鏈接為相對鏈接。
如何多線程下載
sudo apt-get install axel axel -n 5 http://xxx.xxx.xxx.xxx/xxx.zip 或者 lftp -c "pget -n 5 http://xxx.xxx.xxx.xxx/xxx.zip“
如何查看HTTP頭
w3m -dump_head http://www.example.com 或 curl --head http://www.example.com
快速使用http方式共享目錄
#進入需要共享的目錄后運行: python -m SimpleHTTPServer #其它電腦使用http://ip:8000 來訪問 #自定義端口為8080: python -m SimpleHTTPServer 8080
SSH 遠程端口轉發
ssh -v -CNgD 7070 username@sshhostipaddress
監控網絡所有的tcp數據
sudo apt-get install snort #安裝snort入侵檢測程序 sudo snort -vde
監控TCP/UDP連接的流量
sudo apt-get install iftop sudo iftop #或 sudo apt-get install iptraf sudo iptraf
掃描某個IP的端口
nc -v -w 1 192.168.1.1 -z 1-1000
壓縮
增加 7Z 壓縮軟件
#支持 7Z,ZIP,Zip64,CAB,RAR,ARJ,GZIP,BZIP2,TAR,CPIO,RPM,ISO,DEB 壓縮文件格式 sudo apt-get install p7zip p7zip-full p7zip-rar #將所有已txt結尾的文件都加入到files.7z 7z a -t7z files.7z *.txt #解壓縮files.zip 7z x files.zip #刪除 files.zip中所有已bak結尾的文件 7z d -r files.zip *.bak #列出file.7z中所有的文件信息 7z l files.7z #測試files.zip中所有doc結尾文件的正確性 7z t -r files.zip *.doc #更新files.zip中的所有doc結尾的文件(不是所有的壓縮格式都支持更新這一選項) 7z u files.zip *.doc
增加 rar 格式解壓和壓縮支持
#解壓 sudo apt-get install unrar #壓縮 #源里的rar包有文件名亂碼問題,不建議使用。 #如果確實需要rar壓縮功能,請到以下網址直接下載RAR for Linux #http://www.rarlab.com/download.htm
增加 zip 格式解壓和壓縮支持
#解壓 sudo apt-get install unzip #壓縮 sudo apt-get install zip
解壓縮 xxx.tar.gz
tar -xf xxx.tar.gz
解壓縮 xxx.tar.bz2
tar -xf xxx.tar.bz2
解壓縮 xxx.tar.xz
tar -Jxf xxx.tar.xz
壓縮aaa bbb目錄為xxx.tar.gz
tar -zcvf xxx.tar.gz aaa bbb
壓縮aaa bbb目錄為xxx.tar.bz2
tar -jcvf xxx.tar.bz2 aaa bbb
壓縮aaa bbb目錄為xxx.tar.xz
tar -Jcvf xxx.tar.xz aaa bbb
增加 lha 支持
sudo apt-get install lha
增加解 cab 文件支持
sudo apt-get install cabextract
Nautilus
顯示隱藏文件
Ctrl+h
顯示地址欄
Ctrl+l
特殊 URI 地址
* computer:/// - 全部掛載的設備和網絡 * network:/// - 瀏覽可用的網絡 * burn:/// - 一個刻錄 CDs/DVDs 的數據虛擬目錄 * smb:/// - 可用的 windows/samba 網絡資源 * x-nautilus-desktop:/// - 桌面項目和圖標 * file:/// - 本地文件 * trash:/// - 本地回收站目錄 * ftp:// - FTP 文件夾 * ssh:// - SSH 文件夾 * fonts:/// - 字體文件夾,可將字體文件拖到此處以完成安裝 * themes:/// - 系統主題文件夾
查看已安裝字體
fc-list |grep 文 獲取安裝的中文字體信息
文件管理器(比如nautilus)的地址欄里輸入 ~/.fonts ,就可以查看當前用戶擁有的fonts——而系統通用字體位於 /usr/share/fonts
日期和時間
顯示日歷
cal # 顯示當月日歷 cal 2 2007 # 顯示2007年2月的日歷
顯示農歷
#sudo apt-get install lunar date '+%Y %m %d %H' |xargs lunar --utf8
設置日期
date -s mm/dd/yy
設置時間
date -s HH:MM
將時間寫入CMOS
hwclock --systohc
查看CMOS時間
hwclock --show
讀取CMOS時間
hwclock --hctosys
從服務器上同步時間
sudo ntpdate ntp.ubuntu.com sudo ntpdate time.nist.gov
設置電腦的時區為上海
sudo dpkg-reconfigure tzdata
然后根據提示選擇 Asia/Shanghai。這樣在升級了 tzdata 包之后時區也是對的。
XP 和 Ubuntu 相差了 8 小時的時差
#關閉UTC,將當前時間寫入CMOS。 sudo sed -ie 's/UTC=yes/UTC=no/g' /etc/default/rcS sudo hwclock --systohc
將時間截轉為時間
date -d@1234567890
工作區
不同工作區間切換
Ctrl + ALT + ← Ctrl + ALT + → 或者,將滾輪鼠標放在工作區圖標上滾動
控制台
指定控制台切換
Ctrl + ALT + Fn(n:1~7)
控制台下滾屏
SHIFT + pageUp/pageDown
控制台抓圖
setterm -dump n(n:1~7)
只是支持tty1-7。沒中文。沒顏色代碼序列。
回到上一次的目錄
cd –
以root的身份執行上一條命令
sudo !!
數據庫
mysql的數據庫存放路徑
/var/lib/mysql
從mysql中導出和導入數據
mysqldump 數據庫名 > 文件名 #導出數據庫 mysqladmin create 數據庫名 #建立數據庫 mysql 數據庫名 < 文件名 #導入數據庫
忘了mysql的root口令怎么辦
sudo /etc/init.d/mysql stop sudo mysqld_safe --skip-grant-tables & sudo mysqladmin -u user password 'newpassword sudo mysqladmin flush-privileges
修改mysql的root口令
sudo mysqladmin -u root -p password '你的新密碼'
如何優化mysql
wget http://www.day32.com/MySQL/tuning-primer.sh chmod +x tuning-primer.sh ./tuning-primer.sh
mysql命令行中文顯示?號
mysql> set names utf8;
常用mysql管理語句
show table status; #查詢表狀態 show full processlist; #查詢mysql進程 alter table site_stats engine=MyISAM; #轉換表為MyISAM類型,轉表鎖為行鎖。 show variables; #查看mysql 變量
mysql的自動備份
#備份 forum myweb 數據庫到 /backup/mysql 目錄,並刪除7天之前的備份記錄 mysqldump --opt --skip-lock-tables -u root forum | gzip -9 > /backup/mysql/forum.`date +%Y%m%d`.sql.gz mysqldump --opt --skip-lock-tables -u root myweb | gzip -9 > /backup/mysql/myweb.`date +%Y%m%d`.sql.gz find /backup/mysql/ -type f -ctime +7 -exec rm {} \;
控制
如何使用命令關閉顯示器
xset dpms force off
設置CPU的頻率
sudo apt-get install cpufrequtils #查看cpu當前頻率信息 sudo cpufreq-info 設置模式,對應於{最省電(最低頻率),用戶控制,最高或最低,正常,最大性能} cpufreq-set -g {powersave, userspace, ondemand, conservative, performance}
命令關機
sudo halt sudo shutdown -h now #現在關機
定時關機
sudo shutdown -h 23:00 #晚上11點自動關機 sudo shutdown -h +60 #60分鍾后關機
命令重啟電腦
sudo reboot sudo shutdown -r now
如何修改ssh登錄提示
sudo gedit /etc/motd
如何關閉ssh登錄提示
sudo gedit /etc/ssh/sshd_config 修改這一行為: PrintLastLog no
如何使用命令關閉筆記本的觸摸板
synclient touchpadoff=1 那么開啟觸摸板就是: synclient touchpadoff=0
從命令行通知桌面消息
#sudo apt-get install libnotify-bin notify-send "hello world"
統計
統計最常用的10條命令
history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10
統計每個單詞的出現頻率,並排序
awk '{arr[$1]+=1 }END{for(i in arr){print arr[i]"\t"i}}' FILE_NAME | sort -rn
統計80端口的連接個數並按照從大到小排列
netstat -na|grep :80|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n
編輯器
vim中刪除技巧
:%s/[Ctrl-v][Enter]//g 刪除DOS方式的回車^M :%s= *$== 刪除行尾空白 :%!sort -u 刪除重復行 :%s/^.{-}pdf/new.pdf/ 只是刪除第一個pdf :%s/// 刪除多行注釋 :g/^$/d 刪除所有空行 :g!/^dd/d 刪除不含字符串'dd'的行 :v/^dd/d 刪除不含字符串'dd'的行 :g/str1/,/str2/d 刪除所有第一個含str1到第一個含str2之間的行 :v/./.,/./-1join 壓縮空行 :g/^$/,/./-j 壓縮空行 ndw 或 ndW 刪除光標處開始及其后的 n-1 個字符。 d0 刪至行首。 d$ 刪至行尾。 ndd 刪除當前行及其后 n-1 行。 x 或 X 刪除一個字符。 Ctrl+u 刪除輸入方式下所輸入的文本。 D 刪除到行尾 x,y 刪除與復制包含高亮區 dl 刪除當前字符(與x命令功能相同) d0 刪除到某一行的開始位置 d^ 刪除到某一行的第一個字符位置(不包括空格或TAB字符) dw 刪除到某個單詞的結尾位置 d3w 刪除到第三個單詞的結尾位置 db 刪除到某個單詞的開始位置 dW 刪除到某個以空格作為分隔符的單詞的結尾位置 dB 刪除到某個以空格作為分隔符的單詞的開始位置 d7B 刪除到前面7個以空格作為分隔符的單詞的開始位置 d) 刪除到某個語句的結尾位置 d4) 刪除到第四個語句的結尾位置 d( 刪除到某個語句的開始位置 d) 刪除到某個段落的結尾位置 d{ 刪除到某個段落的開始位置 d7{ 刪除到當前段落起始位置之前的第7個段落位置 dd 刪除當前行 d/text 刪除從文本中出現“text”中所指定字樣的位置,一直向前直到下一個該字樣所出現的位置(但不包括該字樣)之間的內容 dfc 刪除從文本中出現字符“c”的位置,一直向前直到下一個該字符所出現的位置(包括該字符)之間的內容 dtc 刪除當前行直到下一個字符“c”所出現位置之間的內容 D 刪除到某一行的結尾 d$ 刪除到某一行的結尾 5dd 刪除從當前行所開始的5行內容 dL 刪除直到屏幕上最后一行的內容 dH 刪除直到屏幕上第一行的內容 dG 刪除直到工作緩存區結尾的內容 d1G 刪除直到工作緩存區開始的內容 ci{ 刪除修改光標所在的{}中的所有內容,change in { 的簡寫 ca{ 刪除修改光標所在的{}中的所有內容,包括{} ci" 刪除修改光標所在的""中的所有內容,change in " 的簡寫 ca" 刪除修改光標所在的""中的所有內容,包括{} ci( 刪除修改光標所在的()中的所有內容,change in ( 的簡寫 ca( 刪除修改光標所在的()中的所有內容,包括{}
vim一個遠程文件
vim scp://username@host//path/to/somefile
如何配置Emacs
打開新立得或者命令行,查找emacs, 選擇你想要的版本,比如emacs22或者emacs21.
之后的配置參考Emacs 常見問題及其解決方法
vim 如何顯示彩色字符
sudo cp /usr/share/vim/vimcurrent/vimrc_example.vim /usr/share/vim/vimrc
讓 vim 直接支持編輯 .gz 文件
sudo apt-get install vim-full
vim 如何顯示行號,在~/.vimrc中加入
set number
如果沒有~/.vimrc文件,則可以在/etc/vim/vimrc中加入
set number
vim配色方案 (~/.vimrc)
colorscheme scheme 可用的 scheme 在 /usr/share/vim/vim71/colors/
解決vim中文編碼問題,在~/.vimrc中加入
let &termencoding=&encoding set fileencodings=utf-8,gbk,ucs-bom,cp936
#再提供一個實踐中覺得不錯的配置: " Encoding related set encoding=UTF-8 set langmenu=zh_CN.UTF-8 language message zh_CN.UTF-8 set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 set fileencoding=utf-8
gedit中文亂碼的解決
gsettings set org.gnome.gedit.preferences.encodings auto-detected "['GB18030', 'UTF-8', 'CURRENT', 'ISO-8859-15', 'UTF-16']"
編譯和打包
安裝通用編譯環境
sudo apt-get install build-essential
通用的編譯安裝步驟
./configure && make && sudo make install
如何編譯安裝軟件 kate
sudo apt-get install apt-build sudo apt-build install kate
獲得源代碼包
sudo apt-get source mysql-server
解壓縮還原源代碼包
dpkg-source -x mysql-dfsg-5.1_5.1.30-1.dsc
安裝編譯打包環境
sudo apt-get build-dep mysql-server
重新編譯並打包Debian化的源碼
dpkg-buildpackage -rfakeroot
獲得源碼並重新打包
apt-get source php5-cgi #或手工下載源碼后使用 dpkg-source -x php5_5.2.6.dfsg.1-3ubuntu4.1.dsc 解開源碼 sudo apt-get build-dep php5-cgi cd php5-5.2.6.dfsg.1 dpkg-buildpackage -rfakeroot -uc -b
給源代碼打補丁
patch -p0 < mysql.patch
安裝 gtk+ 編譯環境
sudo apt-get install build-essential libgtk2.0-dev
其它
把終端加到右鍵菜單
sudo apt-get install nautilus-open-terminal
如何刪除Totem電影播放機的播放歷史記錄
rm ~/.recently-used
清除桌面掛載硬盤圖標
gconftool-2 --set /apps/nautilus/desktop/volumes_visible 0 --type bool
恢復:
gconftool-2 --set /apps/nautilus/desktop/volumes_visible 1 --type bool
如何更換gnome程序的快捷鍵
點擊菜單,鼠標停留在某條菜單上,鍵盤輸入任意你所需要的鍵,可以是組合鍵,會立即生效; 如果要清除該快捷鍵,請使用backspace
man 如何顯示彩色字符
vim ~/.bashrc #增加下面的內容: export LESS_TERMCAP_mb=$'\E[01;31m' export LESS_TERMCAP_md=$'\E[01;31m' export LESS_TERMCAP_me=$'\E[0m' export LESS_TERMCAP_se=$'\E[0m' export LESS_TERMCAP_so=$'\E[01;44;33m' export LESS_TERMCAP_ue=$'\E[0m' export LESS_TERMCAP_us=$'\E[01;32m' #生效文件 #source .bashrc
如何在命令行刪除在會話設置的啟動程序
cd ~/.config/autostart rm 需要刪除啟動程序
如何提高wine的反應速度
sudo sed -ie '/GBK/,/^}/d' /usr/share/X11/locale/zh_CN.UTF-8/XLC_LOCALE
可能造成某些游戲幀數降低
iptables
防止外網用內網IP欺騙
#eth0 為外網網卡 sudo iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP sudo iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP sudo iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
查看nat規則
sudo iptables -t nat -L
查看filter規則
sudo iptables -L -n
取消nat規則
sudo iptables -t nat -F
取消filter規則
sudo iptables -F
阻止一個IP連接本機
#規則位於最后 sudo iptables -t filter -A INPUT -s 192.168.1.125 -i eth0 -j DROP
關閉 1234 端口
sudo iptables -A OUTPUT -p tcp --dport 1234 -j DROP
開啟 80 端口
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
限制訪問80端口的外部IP最大只有50個並發
sudo iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 --connlimit-mask 32 -j DROP
禁止一個IP或者一個IP段訪問服務器端口服務
#80端口 ,規則插入到前面 sudo iptables -t filter -I INPUT -s 192.168.2.0/24 -p tcp --dport http -j DROP #21端口,規則插入到前面 sudo iptables -t filter -I INPUT -s 192.168.1.23 -p tcp --dport ftp -j DROP
安全
檢查本地是否存在安全隱患
sudo apt-get install rkhunter sudo rkhunter --checkall
防止服務器被暴力破解ssh密碼
sudo apt-get install denyhosts
查看系統的登錄情況
last
查看所有帳號的登錄情況
lastlog
服務
查看全部服務狀態
service --status-all
添加一個服務
sudo update-rc.d 服務名 defaults 99
刪除一個服務
sudo update-rc.d 服務名 remove
臨時重啟一個服務
service 服務名 restart
臨時關閉一個服務
service 服務名 stop
臨時啟動一個服務
service 服務名 start
用戶管理
增加用戶
sudo adduser 用戶名
刪除用戶
sudo deluser 用戶名
修改當前用戶的密碼
passwd
修改用戶密碼
sudo passwd 用戶名
修改用戶資料
sudo chfn userid
如何禁用/啟用某個帳戶
sudo usermod -L 用戶名 #鎖定用戶 sudo usermod -U 用戶名 #解鎖 或 sudo passwd -l 用戶名 #鎖定用戶 sudo passwd -u 用戶名 #解鎖
增加用戶到admin組,讓其有sudo權限
sudo usermod -G admin -a 用戶名
如何切換到其他帳號(需要該用戶的密碼)
su 用戶名
如何切換到root帳號
sudo -s sudo -i sudo su
設置
配置默認Java環境
sudo update-alternatives --config java
設置系統http代理
export http_proxy=http://xx.xx.xx.xx:xxx
設置系統https代理
export https_proxy=http://xx.xx.xx.xx:xxx
修改系統登錄信息
sudo vim /etc/motd
使用eclipse等其他自帶java編譯器的軟件,換回sun的編譯器方法
對於Java JDK6 (就是1.6,sun縮短Java的版本名字了):
sudo update-java-alternatives -s java-6-sun
對於Java JDK1.5
sudo update-java-alternatives -s java-1.5.0-sun
文件管理
創建一個空文件
> file.txt touch file.txt
一屏查看文件內容
cat 文件名
不顯示以#開頭的行
cat /etc/vsftpd.conf |grep -v ^#
分頁查看文件內容
more 文件名
可控分頁查看文件內容
less 文件名
帶行號顯示文件的內容
nl 文件名 cat -n 文件名
去除文件中的行號
cut -c 5- a.py
刪除文件中的重復行
cat file.txt |sort -u
根據字符串匹配來查看文件部分內容
grep 字符串 文件名
顯示包含或者不包含字符串的文件名
grep -l -r 字符串 路徑 #顯示內容包含字符串的文件名 grep -L -r 字符串 路徑 #顯示內容不包含字符串的文件名 find . -path './cache' -prune -o -name "*.php" -exec grep -l "date_cache[$format]['lang']" {} \; #顯示當前目錄下不包含cache目錄的所有含有“date_cache[$format]['lang']”字符串的php文件。 find . -type f -name \*.php -exec grep -l "info" {} \;
快速查找某個文件
whereis filename find 目錄 -name 文件名 locate 文件名 # 注意,為了得到更好的效果,運行前可以更新下數據庫,運行 sudo updatedb 即可,但這個命令每隔一段時間會自動運行,所以不用太在意
創建兩個空文件
touch file1 file2
遞歸式創建一些嵌套目錄
mkdir -pv /tmp/xxs/dsd/efd
遞歸式刪除嵌套目錄
rm -fr /tmp/xxs
回當前用戶的宿主目錄
cd ~ # 這個是波浪線,在 Tab 鍵的上面 # 或者更簡單的 cd
回到上一次的目錄
cd - # 這個是連字符,在退格鍵的左邊兩個
查看當前所在目錄的絕對路經
pwd
獲得文件的后綴名
echo xxx.xxx.rmvb |sed 's/.*\(\..*$\)/\1/'
去除文件的后綴名
echo xxx.xxx.rmvb |sed 's/\(.*\)\..*$/\1/'
列出當前目錄下的所有文件,包括以.開頭的隱含文件的具體參數
ls -al
或(在 Ubuntu 中)
ll
移動路徑下的文件並改名
mv 路徑/文件 /新路徑/新文件名
復制文件或者目錄
cp -av 原文件或原目錄 新文件或新目錄
查看文件類型
file filename
查看文件的時間
stat filename
對比兩個文件之間的差異
diff file1 file2
一邊比較一邊編輯還是彩色的:(需要安裝 Vim)
vimdiff file1 file2
顯示xxx文件倒數6行的內容
tail -6 xxx
讓tail不停地讀取最新的內容
tail -10f /var/log/apache2/access.log
或者
tailf /var/log/apache2/access.log
查看文件中間的第五行(含)到第10行(含)的內容
sed -n '5,10p' /var/log/apache2/access.log
查找關於xxx的命令
apropos xxx man -k xxx
通過ssh傳輸文件
scp -rp /path/filename username@remoteIP:/path #將本地文件拷貝到服務器上 scp -rp username@remoteIP:/path/filename /path #將遠程文件從服務器下載到本地
tar cvzf - /path/ | ssh username@remoteip "cd /some/path/; cat -> path.tar.gz" #壓縮傳輸 tar cvzf - /path/ | ssh username@remoteip "cd /some/path/; tar xvzf -" #壓縮傳輸一個目錄並解壓
rsync -avh /path/to/file/or/dir user@host:/path/to/dir/or/file rsync -avh user@host:/path/to/file/or/dir /path/to/file/or/dir
把所有文件的後輟由rm改為rmvb
rename 's/.rm$/.rmvb/' *
把所有文件名中的大寫改為小寫
rename 'tr/A-Z/a-z/' *
刪除特殊文件名的文件,如文件名:--help.txt
rm -- --help.txt 或者 rm ./--help.txt
查看當前目錄的子目錄
ls -d */ 或 echo */
將當前目錄下最近30天訪問過的文件移動到上級back目錄
find . -type f -atime -30 -exec mv {} ../back \;
查找當前目錄下最近30天訪問過的文件打包備份
find . -type f -atime -30 | xargs tar zrvpf backup.tar.gz find . -type f -atime -30 -print -exec tar rvpf backup.tar {} \;
顯示系統服務器一小時以內的包含 xxxx 的所有郵件
find /home/ -path "*Maildir*" -type f -mmin -60|xargs -i grep -l xxxx '{}'
將當前目錄下最近2小時到8小時之內的文件顯示出來
find . -mmin +120 -mmin -480 -exec more {} \;
刪除修改時間在30天之前的所有文件
find . -type f -mtime +30 -exec rm -v {} \;
刪除訪問時間在30天之前的所有文件
find . -type f -atime +30 -exec rm -v {} \;
查找guest用戶的以avi或者rm結尾的文件並刪除掉
find . -name '*.avi' -o -name '*.rm' -user 'guest' -exec rm {} \;
查找不以java和xml結尾,並7天沒有使用的文件刪除掉
find . ! -name *.java ! -name ‘*.xml’ -atime +7 -exec rm {} \;
查找目錄下所有有包含abcd文字的文本文件,並替換為xyz
grep -rIl "abcd" ./* --color=never | xargs sed -i "s/abcd/xyz/g" #注意grep的一個參數是大寫的i,一個參數是小寫的L
刪除當前目錄里面所有的 .svn 目錄
find . -name .svn -type d -exec rm -fr {} \;
刪除當前目錄所有以“~”結尾的臨時文件
find . -name "*~" -exec rm {} \;
刪除包含 aaa 字符串的所有文件
grep -rl "aaa" * |xargs rm -fv
統計當前文件個數
echo $(($(ll|wc -l)-3));
統計當前目錄下所有jpg文件的尺寸
find . -name *.jpg -exec wc -c {} \;|awk '{print $1}'|awk '{a+=$1}END{print a}'
統計當前目錄個數
ls -l /usr/bin|grep ^d|wc -l
統計當前目錄下占空間最大的前10名文件或目錄
du -sm * | sort -nr | head -10
顯示當前目錄下2006-01-01的文件名
ls -l |grep 2006-01-01 |awk '{print $8}'
備份當前系統到另外一個硬盤
sudo rsync -Pa / /media/disk1 --exclude=/media/* --exclude=/home/* --exclude=/sys/* --exclude=/tmp/* --exclude=/proc/* --exclude=/mnt/*
使用ssh方式同步遠程數據到本地目錄
rsync -Pa -I --size-only --delete --timeout=300 Remote_IP:/home/ubuntu/back /backup
使用ftp方式同步遠程數據到本地目錄
lftp -c "open Remote_IP;user UserName Password;set cache:enable false;set ftp:passive-mode false;set net:timeout 15;mirror -e -c /back /backup;"
去掉文件中的^M
#注意不要使用同樣的文件名,會清空掉原文件 cat -A filename| tr -d "^M$" > newfile 或者
cat -A word|sed -e 's/\^M\$//g' > newfile
直接修改文件
ex "+:%s/[Ctrl+V][Enter]//g" "+:wq" filename
或者
dos2unix filename
轉換Dos文本文件到Unix文本文件
tr -d '\15\32' < dosfile.txt > unixfile.txt #dos = > unix awk '{ sub("\r$", ""); print }' dosfile.txt > unixfile.txt #dos = > unix awk 'sub("$", "\r")' unixfile.txt > dosfile.txt #unix = > dos
轉換bin/cue到iso文件
#sudo apt-get install bchunk bchunk image.bin image.cue image
轉換目錄到iso文件
mkisofs -o isofile.iso dirname
轉換CD到iso文件
dd if=/dev/cdrom of=isofile.iso
將一個文件作為附件發到郵箱
#sudo apt-get install mailutils sharutils uuencode xxx.tar.gz xxx.tar.gz |mail xxx@xxx.com (echo "hello, please see attached file"; uuencode xxx.tar.gz xxx.tar.gz)| mail xxx@xxx.com
合並多個pdf文件到一個pdf文件
#apt-get install gs pdftk gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=output.pdf -dBATCH input1.pdf input2.pdf
比較兩個目錄里面的文件是否有相同
diff -r dir1 dir2
比較一個遠程文件和一個本地文件
ssh user@host cat /path/to/remotefile | diff /path/to/localfile -
當file.log里出現Finished: SUCCESS時候就退出tail
tail -f /path/to/file.log | sed '/^Finished: SUCCESS$/ q'
統計py代碼行數,不包括空行
find . -name "*.py" | xargs grep '^.' | wc -l find . \( -path '*migrations*' -prune -o -name '*.py' \) -type f | xargs grep '^.' | wc -l
統計java代碼行數,不包括空行和公共目錄
find . -path './src/java/com/xxx/common' -prune -o -name '*.java' -print | xargs grep '^.' | wc -l
給文件增加行號
nl HelloWorld.java > HelloWorldCode.java
影像
播放swf文件
安裝swf解碼器
sudo apt-get install swfmill
如何保存串流視頻(mms/rtsp)
mplayer -dumpfile dump.rm -dumpstream rstp://....
批量將rmvb轉為avi
#ipod touch可用 for i in *.rmvb; do mencoder -vf harddup -oac mp3lame -lameopts vbr=3 -ovc xvid -xvidencopts fixed_quant=4 -of avi $i -o `echo $i | sed -e 's/rmvb$/avi/'`; done
批量將DVD轉為avi
for i in *.VOB; do mencoder -oac mp3lame -lameopts aq=7:vbr=2:q=6 -srate 44100 -ovc xvid -xvidencopts fixed_quant=4 -of avi $i -o `echo $i | sed -e 's/VOB$/avi/'`; done
批量將任何格式的電影轉為ogv
#sudo apt-get install ffmpeg2theora #firefox3.5或chrome直接支持播放,無需安裝任何解碼器,注意不支持rmvb,rmvb會出現a/v不同步問題 for i in *; do ffmpeg2theora --optimize --deinterlace $i; done
批量將rmvb格式的電影轉為ogv
#!/bin/bash for i in *; do mkfifo "/tmp/$i" mencoder -quiet -vf harddup -ovc raw -oac pcm -o "/tmp/$i" "$i" & ffmpeg2theora --optimize --deinterlace "/tmp/$i" -o "`echo $i | sed 's/\(.*\)\..*$/\1/'`.ogv" rm "/tmp/$i" done
利用gst來轉換任意電影為ogv
#!/bin/bash for i in *; do gst-launch-0.10 filesrc location="$i" ! decodebin name=demux \ { oggmux name=mux ! filesink location="`echo $i | sed 's/\(.*\)\..*$/\1/'`.ogv" } \ { demux. ! queue ! audioconvert ! vorbisenc ! queue ! mux. } \ { demux. ! queue ! ffmpegcolorspace ! videorate ! theoraenc ! mux. } done
批量轉換任意文件為ipod touch使用的mp4
#!/bin/bash #ubuntu10.04自帶的mencoder由於版權問題,不支持h264編碼,需要重新編譯;也可以直接參考下面的壓縮方法。 #sudo apt-get install mencoder mplayer find . -name '*.avi' -o -name '*.rm' -o -name '*.rmvb' -o -name '*.wmv' -o \ -name '*.vob' -o -name '*.asf' -o -name '*.mpg' -o -name '*.ts' -o \ -name '*.flv' -o -name '*.mpeg' -o -name '*.ogv' -o -name '*.mov' -o \ -name '*.mkv' -o -name '*.dat' | while read i; do basename=`echo $i | sed 's/\(.*\)\..*$/\1/'` font="WenQuanYi Zen Hei" if [ -f "${basename}.srt" ] ; then cp "${basename}.srt" $$.srt m0="-vf scale=480:-10,harddup -sub $$.srt -unicode -subcp GB18030 -subfont-text-scale 3"; else m0="-vf scale=480:-10,harddup"; fi x0="-lavfopts format=mp4 -faacopts mpeg=4:object=2:raw:br=160 -oac faac -ovc x264 -sws 9 -x264encopts nocabac:level_idc=30:bframes=0:global_header:threads=auto:subq=5:frameref=6:partitions=all:trellis=1:chroma_me:me=umh:bitrate=500 -of lavf -ofps 24000/1001"; mencoder $m0 -fontconfig -font "${font}" $x0 -o "$$.mp4" "$i" mv "$$.mp4" "${basename}.mp4" if [ -f "${basename}.mp4" ] ; then rm "$i" fi done
轉換任意格式的視頻到H264
#!/bin/bash #sudo apt-get install faac x264 gpac mplayer mencoder basename=`echo $1 | sed 's/\(.*\)\..*$/\1/'` #獲得視頻的長寬和幀數 mplayer -vo null -ao null -identify -frames 0 "$1" 2>/dev/null > video.info FPS=`cat video.info | grep ID_VIDEO_FPS | cut -d = -f 2` #FPS=23.976 W=`cat video.info | grep ID_VIDEO_WIDTH | cut -d = -f 2` H=`cat video.info | grep ID_VIDEO_HEIGHT | cut -d = -f 2` WIDTH=480 HEIGHT=`expr $WIDTH \* $H \/ $W` echo $1 FPS=$FPS WIDTH=$WIDTH HEIGHT=$HEIGHT mkfifo audio.wav video.yuv faac -o audio.aac audio.wav & mplayer -ao pcm:file=audio.wav:fast -vc null -vo null "$1" x264 --profile baseline --fps $FPS -o video.264 video.yuv ${WIDTH}x${HEIGHT} & mencoder -vf scale=$WIDTH:$HEIGHT,harddup,pp=fd,format=i420 -nosound -ovc raw -of rawvideo -ofps $FPS -o video.yuv "$1" MP4Box -new -add video.264 -add audio.aac -fps $FPS "$basename.mp4" rm video.info audio.aac video.264 audio.wav video.yuv #使用方法將上面的腳本保存為 x264.sh , x264.sh xxx.avi 來進行轉化。
壓制DVD到H264,支持ipod
#sudo apt-get install faac x264 gpac mplayer FPS=29.970 mkfifo audio.wav cat VTS_01_1.VOB VTS_02_1.VOB VTS_02_2.VOB VTS_03_1.VOB VTS_04_1.VOB | mplayer -nocorrect-pts -vo null -vc null -ao pcm:file=audio.wav:fast - & faac audio.wav -o audio.aac mkfifo video.y4m cat VTS_01_1.VOB VTS_02_1.VOB VTS_02_2.VOB VTS_03_1.VOB VTS_04_1.VOB | mplayer -vo yuv4mpeg:file=video.y4m -vf scale=480:-3,harddup,pp=fd -nosound - & x264 --profile baseline --muxer mp4 --demuxer y4m video.y4m -o video.mp4 MP4Box -add video.mp4 -add audio.aac -fps $FPS video.mp4
圖形界面為ipod touch轉mp4的方法
先確保有zenity和memcoder
wget http://linuxfire.com.cn/~lily/toIpod -O ~/.gnome2/nautilus-scripts/toIpod && chmod +x ~/.gnome2/nautilus-scripts/toIpod
在nautilus里對視頻文件點右鍵,選擇"腳本"-"toIpod".
詳情請查看出處。
轉換flv到MP4
#sudo apt-get install ffmpeg ffmpeg -i 矜持.flv -ar 22050 矜持.mp4
mencoder/mplayer 反拉絲參數
-vf lavcdeint
合並多個 rm 文件為一個 avi 文件
mencoder -ovc lavc 1.rm -oac mp3lame -o 1.avi mencoder -ovc lavc 2.rm -oac mp3lame -o 2.avi mencoder -idx 1.avi -ovc copy -oac copy -o o1.avi mencoder -idx 2.avi -ovc copy -oac copy -o o2.avi cat o1.avi o2.avi | mencoder -noidx -ovc copy -oac copy -o output.avi -
合並視頻到一個文件
mencoder -ovc copy -oac copy -idx -o 目標文件名 文件名1 文件名2
CD 抓軌為 mp3 (有損)
#sudo apt-get install abcde abcde -o mp3 -b
CD 抓軌為 Flac (無損)
#sudo apt-get install abcde abcde -o flac -b
ape 轉換為 flac
#sudo apt-get install flac shntool iconv mac #iconv -f GB2312 -t UTF-8 example.cue -o example_UTF-8.cue #shntool split -t "%n.%p-%t" -f example_UTF-8.cue -o flac example.ape -d flacOutputDir #sudo apt-get install libav-tools ffmpeg -i example.ape example.flac
ape/flac 轉換為 mp3
#sudo apt-get install shntool iconv libav-tools ffmpeg -i CDImage.ape CDImage.flac iconv -f gbk -t utf-8 CDImage.cue | shntool split -t "%n.%p-%t" -o 'cust ext=mp3 lame --quiet - %f' CDImage.flac
批量將 ape 轉為 flac
find . -name "*.ape" -exec bash -c 'avconv -i "$0" "${0/%ape/flac}"' {} \; #此命令將當前目錄(包括子目錄)的所有ape文件轉換為flac
批量將 ape 轉為 mp3
for f in *.ape; do gst-launch-0.10 filesrc location="$f" ! decodebin ! audioconvert ! lame vbr=0 bitrate=320 ! id3mux ! filesink location="${f%.ape}.mp3"; done #需要安裝 shntool for i in *.ape; do shnconv -i ape -o "cust ext=mp3 lame -b 320 - %f" "$i" -d mp3OutputDir; done
批量將 ape 轉為 m4a
for f in *.ape; do ffmpeg -i "$f" -acodec alac "${f%.ape}.m4a"; done
批量將 ape 轉為 aac
for f in *.ape; do ffmpeg -i "$f" -acodec aac -strict experimental -ab 256k "${f%.ape}.aac"; done
批量將 flac 轉為 mp3
for i in *.flac; do shnconv -i flac -o "cust ext=mp3 lame -b 320 - %f" "$i" -d mp3OutputDir; done
批量將svg轉為png
for i in *.svg; do inkscape $i --export-png=`echo $i | sed -e 's/svg$/png/'`; done
批量轉換格式到mp3
#sudo apt-get install lame mplayer for i in *; do base=${i%.*}; mplayer -quiet -vo null -vc dummy -af volume=0,resample=44100:0:1 -ao pcm:waveheader:file="$i.wav" "$i" ; lame -V0 -h -b 192 -vbr-new "$i.wav" "$base.mp3"; rm -f "$i.wav" ; done
批量縮小圖片到30%
for i in *.jpg; do convert -resize 30%x30% "$i" "sm-$i"; done
批量轉換jpg到png
for i in *.jpg; do convert $i `echo $i | sed -e 's/jpg$/png/'`; done
將文字轉為圖片
convert -size 200x30 xc:transparent -font /usr/share/fonts/truetype/wqy/wqy-microhei.ttc -fill red -pointsize 16 -draw "text 5,15 '測試中文轉為圖片'" test.png
如何壓縮png圖片
#sudo apt-get install optipng optipng -o7 old.png new.png #或 sudo apt-get install pngcrush #pngcrush -brute old.png new.png
將多張圖片合並到一個PDF文件
convert *.jpg out.pdf
批量把pdf轉換為txt並格式化
sudo apt-get install poppler-utils poppler-data find ./ -name '*.txt' | while read i; do cat $i | awk '{if ($0 ~ "^space:”) {printf “\n”$0} else {printf $0}}’ | sed ‘/^space:*digit:*$/d’ | sed ’s/^space:\+/ /’ | sed ’s/"/”/g’ > “../txt/$i”; done
轉換 pdf 到 png
#sudo apt-get install imagemagick convert -density 196 FILENAME.pdf FILENAME.png
獲取jpg的擴展信息(Exif)
identify -verbose xxx.jpg
獲取視頻文件 xxx.avi 的信息
mplayer -vo null -ao null -frames 0 -identify "xxx.avi" 2>/dev/null | sed -ne '/^ID_/ { s/[]()|&;<>`'"'"'\\!$" []/\\&/g;p }'
查看MKV視頻文件 xxx.mkv 的信息
#sudo apt-get install mkvtoolnix mkvinfo -v xxx.mkv
抓取桌面操作的視頻
ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg
命令行讀出文本
espeak -vzh "從前有座山"
命令行抓屏
scrot -s screenshot.png
如何命令行刻錄
mkisofs -o test.iso -Jrv -V test_disk /home/carla/ cdrecord -scanbus scsibus1: 1,1,0 101) 'HL-DT-ST' 'CD-RW GCE-8481B ' '1.04' Removable CD-ROM cdrecord -v -eject speed=8 dev=1,1,0 test.iso
http://www.ibm.com/developerworks/cn/linux/l-cdburn/index.html
延遲抓圖
gnome-screenshot -d 10 #延遲10秒抓圖 gnome-screenshot -w -d 5 #延遲5秒抓當前激活窗口
回收站在哪里
~/.local/share/Trash/
強制清空回收站
sudo rm -fr $HOME/.local/share/Trash/files/
默認打開方式的配置文件在哪里
#全局 /etc/gnome/defaults.list #個人 ~/.local/share/applications/mimeapps.list
Firefox 的緩存目錄在哪里
ls ~/.mozilla/firefox/*.default/Cache/
查看samba的用戶
sudo pdbedit -L
增加一個用戶到samba
sudo pdbedit -a username
從samba賬戶中刪除一個用戶
sudo pdbedit -x username
顯示samba賬戶信息
sudo pdbedit -r username
測試samba賬戶是否正常
smbclient -L 192.168.1.1 -U username -d 3
samba的數據庫存在哪里
/var/lib/samba/passdb.tdb
samba用戶Windows下無法登錄
在Windows的運行輸入 cmd ,進入終端,輸入 net use 命令,將顯示已經連接的帳號如 \\192.168.1.1\username 再輸入 net use \\192.168.1.1\username /delete 刪除現有的共享連接,再嘗試進入另外一個目錄就可以正常登錄了。
Pidgin 的聊天記錄在哪里
~/.purple/logs/
安裝PDF打印機
sudo apt-get install cups-pdf #打印生成的pdf文件在 ~/PDF 文件夾里面
nvidia快速重設顯示設置及配置多顯示器
sudo dpkg-reconfigure xserver-xorg sudo nvidia-xconfig #nvidia-settings 用於設置分辨率和多顯示器 sudo nvidia-settings
kacpid進程大量占用CPU
硬件驅動中不要激活無線網卡驅動即可
替換上一條命令中的一個短語
^foo^bar^ !!:s/foo/bar/
AMD64位系統安裝免費的殺毒軟件 avast!
wget http://files.avast.com/files/linux/avast4workstation_1.3.0-2_i386.deb sudo dpkg --force-architecture -i avast4workstation_1.3.0-2_i386.deb sudo apt-get install ia32-libs #然后打開 http://www.avast.com/registration-free-antivirus.php 去申請免費一年的許可證號
應用合適的字體顯示尺寸
獲取信息
xdpyinfo | grep -B1 dot
例如
dimensions: 1440x900 pixels (333x212 millimeters) resolution: 110x108 dots per inch
獲取X server信息
grep DPI /var/log/Xorg.0.log
例如
[ 19.244] (--) NVIDIA(0): DPI set to (110, 108); computed from "UseEdidDpi" X config
這里設置的X DPI會被桌面的頂替,找到你自己的替換,如上的DPI從默認的96改為109。
重新配置鍵盤類型
sudo dpkg-reconfigure keyboard-configuration
重新載入聲卡驅動模塊
有時候折騰系統突軟聲卡無法發聲了,又不想重啟系統,直接重啟聲卡驅動模塊:
pulseaudio -k && sudo alsa force-reload
或者
sudo service pulseaudio restart