前言:因為用Linux的時間越來越長,所需要做的事也越來越多,效率成了我必需突破的瓶頸。在此總結一下這段時間用過的一些好的Linux技巧。以后時常補充這樣自己要用的時候就很方便了。
Author:Ajian
[文本處理]
1、查看某文件的一部分
如果你只想看文件的前 5 行,可以使用 head 命令,
如:head -5 /etc/passwd
如果你想查看文件的后 10 行,可以使用 tail 命令,
如:tail -10 /etc/passwd
查看文件中間一段,可以使用 sed 命令
如:sed –n '5,10p' /etc/passwd 這樣你就可以只查看文件的第 5 行到第 10 行
2、將 file.txt 里的123改為 456
方法 1
sed 's/123/456/g' file.txt > file.txt.new 修改的保存到其它文件
sed -i 's/123/456/g' file.txt 直接修改原文件
方法 2
vi file.txt
輸入命令:
:%s/123/456/g
注意:如果替換的文件有特殊符號如/就要用\來取消。
例:sed -i 's/\/usr\/local\/apache2\/htdocs/\/var\/www\/html/g' /usr/local/apache2/conf/httpd.conf
如果只是下原有的行后添加就用&
例:sed -i 's/DirectoryIndex index.html index.html.var/& index.htm index.php /g' /usr/local/apache2/conf/httpd.conf
3、echo 典型應用
echo "abcdefg" | perl -lne '{$a = reverse($_); print $a;}' 把一個字符串翻轉
echo bottle|rev 把一個字符串翻轉
[文件目錄管理]
1、刪除幾天以前的所有東西(包括目錄名和目錄中的文件)
1) find . -ctime +3 -exec rm -rf {} \;
2) find ./ -mtime +3 -print|xargs rm -f –r
2、在多級目錄中查找某個文件的方法
1) find /dir -name filename.ext
2) du -a | grep filename.ext
3) locate filename.ext
3、刪除軟硬連接注意點
刪除軟件連接的時候一定要記得不要在刪除的文件夾后加一斜杠,
rm -f filename/
會說這是一個文件夾不能刪除
rm filename
會提示說是否要刪除這個連接。
如果用的第一種可能會把其它文件都刪除
4、刪除目錄中含輸入關鍵字的文件
find /mnt/ebook/ -type f -exec grep "在此輸入關鍵字" {} \; -print -exec rm {} \;
5、在當前目錄下解壓 rpm 文件
cat kernel-ntfs-2.4.20-8.i686.rpm | rpm2cpio | pax –r
6、用命令清空 Root 回收站中的文件
cd /var/.Trash-root
rm -rf *
[系統與安全]
1、讓用戶的密碼必須有一定的長度,并且符合復雜度
vi /etc/login.defs,修改 PASS_MIN_LEN
2、用 dat 查詢昨天的日期
date --date='yesterday'
3、修改系統時
1) 設置你的時區: timeconfig 里選擇Asia/Shanghai (如果你位于 GMT+8 中國區域)
2) 與標準時間服務器校準: ntpdate time.nist.gov
date -s “2003-04-14 cst”,cst 指時區,時間設定用 date -s 18:10
修改后執行 clock -w 寫到 CMOS
3) 將當前軟件系統時間寫入硬件時鐘: hwclock –systohc
4、改變 redhat 的系統語言/字符集
修改 /etc/sysconfig/i18n 文件,如
LANG="en_US",xwindow會顯示英文界面,
LANG="zh_CN.GB18030",xwindow會顯示中文界面。
還有一種方法
cp /etc/sysconfig/i18n $HOME/.i18n
vi $HOME/.i18n 文件,如
LANG="en_US",xwindow會顯示英文界面,
LANG="zh_CN.GB18030",xwindow會顯示中文界面。
這樣就可以改變個人的界面語言,而不影響別的用戶
5、查看系統信息
cat /proc/cpuinfo - CPU (i.e. vendor, Mhz, flags like mmx)
cat /proc/interrupts - 中斷
cat /proc/ioports - 設備 IO端口
cat /proc/meminfo - 內存信息(i.e. mem used, free, swap size)
cat /proc/partitions - 所有設備的所有分區
cat /proc/pci - PCI設備的信息
cat /proc/swaps - 所有 Swap 分區的信息
cat /proc/version - Linux 的版本號 相當于 uname -r
uname -a - 看系統內核等信息
6、讓 linux自動同步時間
vi /etc/crontab
加上一句:
00 0 1 * * root rdate -s time.nist.gov
7、如何防止某個關鍵文件被修改
在 Linux 下,有些配置文件是不允許任何人(包括 root)修改的。為了防止被誤刪除或修改
可以設定該文件的“不可修改位(immutable) ”。命令如下:
# chattr +i /etc/fstab
如果需要修改文件則采用下面的命令:
# chattr -i /etc/fstab
[管理與網絡]
1、 lsof 用法小全
lsof abc.txt 顯示開啟文件 abc.txt 的進程
lsof -i :22 知道 22 端口現在運行什么程序
lsof -c nsd 顯示 nsd 進程現在打開的文件
lsof -g gid 顯示歸屬 gid 的進程情況
lsof +d /usr/local/ 顯示目錄下被進程開啟的文件
lsof +D /usr/local/ 同上,但是會搜索目錄下的目錄,時間較長
lsof -d 4 顯示使用 fd 為4 的進程
lsof -i [i] 用以顯示符合條件的進程情況
語法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
46 --> IPv4 or IPv6
protocol --> TCP or UDP
hostname --> Internet host name
hostaddr --> IPv4 位置
service --> /etc/service中的 service name (可以不止一個)
port --> 端口號(可以不止一個)
例子: TCP:25 - TCP and port 25
@1.2.3.4 - Internet IPv4 host address 1.2.3.4
tcp@ohaha.ks.edu.tw:ftp - TCP protocol host:ohaha.ks.edu.tw service name:ftp
lsof -n 不將 IP轉換為 hostname,預設是不加上-n參數
例子: lsof -i tcp@ohaha.ks.edu.tw:ftp -n
lsof -p 12 看進程號為 12的進程打開了哪些文件
2、grep 不顯示本身進程
#ps -aux|grep httpd|grep -v grep
grep -v grep可以取消顯示你所執行的 grep 本身這個進程,-v 參數是不顯示所列出的進程名
3、查看本機IP
ifconfig |grep "inet" |cut -c 0-36|sed -e 's/[a-zA-Z: ]//g'
hostname –i
4、查看有多少活動的Httpd進程
#!/bin/sh
while (true)
do
pstree |grep "*\[httpd\]$"|sed 's/.*-\([0-9][0-9]*\)\*\[httpd\]$/\1/'
sleep 3
done
同樣可以引用到其它的進程
5、設置 com1口,讓超級終端通過 com1口進行登錄
第一步:確認有/sbin/agetty,編輯/etc/inittab,添加
7:2345:respawn:/sbin/agetty /dev/ttyS0 9600
9600bps 是因為連路由器時缺省一般都是這種速率,也可以設成
19200、38400、57600、115200
第二步:修改/etc/securetty,添加一行:ttyS0,確保 root 用戶能登錄
第三步:重啟機器,就可以拔掉鼠標鍵盤顯示器(啟動時最好還是要看看輸出信息)了
6、查找或刪除正在使用某文件的進程
fuser filename
fuser -k filename
7、已知網絡中一個機器的硬件地址,如何知道它所對應的 IP地址
在 Linux 下,假定要查“00:0A:EB:27:17:B9”這樣一個硬件地址所對應的 IP 地址,可以使
用以下命令:
# cat /proc/net/arp |grep 00:0A:EB:27:17:B9
192.168.2.54 0x1 0x6 00:0A:EB:27:17:B9 *eth2
另外,還可以用“arp -a”命令查詢:
# arp –a|grep 00:0A:EB:27:17:B9
(192.168.2.54)at 00:0A:EB:27:17:B9[ether] on eth2
8、在 Linux下如何綁定 IP地址和硬件地址
可以編輯一個地址對應文件,里面記錄了 IP地址和硬件地址的對應關系,然后執行“arp –
f 地址對應文件”。如果沒有指定地址對應文件,則通常情況下一默認文件/etc/ethers為準。
地址對應文件的格式如下:
192.168.0.1 00:0D:61:27:58:93
192.168.0.2 00:40:F4:2A:2E:5C
192.168.0.3 00:0A:EB:5E:BA:8E
9、更改 eth0是否混雜模式(混雜模式可以監聽其它主機的信息)
網卡 eth0 改成混雜模式:
ifconfig eth0 promisc
關閉混雜模式:
ifconfig eth0 –promisc
10、linux下清空 arp表的命令
#arp -d -a(適用于 bsd)
for HOST in `arp | sed '/Address/d' | awk '{ print $1}'` ; do arp -d $HOST; done
11、如何得到網卡的 MAC地址
arp -a | awk '{print $4}'
ifconfig eth0 | head -1 | awk '{print $5}'
12、一個網卡綁定多 ip
方法一、建立eth0:1在網卡后加冒號和數字的文件
cp /etc/sysconfig/network-scripts/eth0 /etc/sysconfig/network-scripts/eth0:1
再修改下eth0:1就可以了.
方法二、
在/etc/sysconfig/network-scripts/下創建一個文件:ifcfg-ethX-rangeX ("X"為網卡號)
文件內容:
IPADDR_START=<start ip>
IPADDR_END=<end ip>
CLONENUM=0
可以有 256個 ip
13、一個 ip如何綁定兩塊網卡
假設 192.168.0.88 是ip,192.168.0.1 是網關:
/sbin/modprobe bonding miimon=100 mode=1
/sbin/ifdown eth0
/sbin/ifdown eth1
/sbin/ifconfig bond0 192.168.0.88
/sbin/ifenslave bond0 eth0 eth1
/sbin/route add default gw 192.168.0.1
14、設置ssh 上來能不自動斷線
修改自己 HOME 目錄下的.bash_profile文件,加上
export TMOUT=1000000 (以秒為單位)
然后運行 source .bash_profile
15、mount 局域網上其他windows機器共享出的目錄
mount -t smbfs -o username=guest,password=guest //machine/path /mnt/cdrom
16、向登陸到同一臺服務器上的所有用戶發一條信息
1)輸入 wall并回車
2)輸入要發送的消息
3)結束時按“Control-d”鍵,消息即在用戶的控制窗口中顯示
17、向遠程機器上的所有用戶發送消息
使用 rwall(向所有人遠程寫)命令同時發送消息到網絡中的所有用戶。
rwall hostname file
當使用 CDE或 OpenWindows 等窗口系統時,每個窗口被看成是一次單個的登錄;
如果用戶登錄次數超過一次則消息直接發送到控制窗口
18、向網絡中的所有用戶發送消息
發送消息到網絡中的所有用戶
1)輸入 rwall -n netgroup 并回車
2)輸入要發送的消息
3)結束時按“Control-d”鍵,消息即在系統每個用戶的控制窗口中顯示,下面是系統管理員
發消息到網絡組 Eng 每個用戶的例子:
% rwall -n EngSystem will be rebooted at 11:00.(Control-d)
%
用戶控制窗口中的消息:Broadcast message from root on console…System will be rebooted at
11:00.EOF
注意:也可以通過 rwall hostname(主機名)命令到系統的所有用戶
19、 將 top的結果輸出到文件中
top -d 2 -n 3 -b >test.txt
可以把 top 的結果每隔 2秒,打印 3次,這樣后面頁的進程也能夠看見了
20、裝雙系統不能看到另一個系統的解決辦法
首先光盤啟動,進入 rescue 模式,運行 GRUB,進入 grub 提示符 grub>,然后敲入下面的
語句,重啟就好了。
root (hd0,2),setup (hd0)
21、壓縮傳輸文件或目錄
傳輸到遠程:tar czf - www | ssh server "tar zxf -"
壓縮到遠程:tar czf - www | ssh server "cat > www.tar.gz"
解壓到遠程:ssh server "tar zxf -" < www.tar.gz
解壓到本地:ssh server "cat www.tar.gz" | tar zxf -
22、命令行下發送帶附件的郵件
方法 1. uuencode <in_file> <remote_file> | mail -s "title" mail@address
<in_file> 本地需要作為附件的文件名。
<remote_file> 郵件中的附件文件名,可以和<in_file>不同,其實內容一樣。
方法 2. cat <mailcontent.txt> | mutt -s "title" -a <attachfile> mail@address
<mailcontent.txt>郵件正文內容。
<attachfile>本地需要作為附件的文件名。
[Mysql維護]
1、mysql 的數據庫存放在什么地方
1) 如果使用 rpm包安裝,應該在/var/lib/mysql 目錄下,以數據庫名為目錄名
2) 如果源碼安裝在/usr/local/mysql中,應該在/usr/local/mysql/var中,以數據庫名為目錄名
2、 從 mysql 中導出和導入數據
導出數據庫
mysqldump 數據庫名 > 文件名
導入數據庫
mysqladmin create 數據庫名
mysql 數據庫名 < 文件名
3、忘了 mysql 的 root 口令怎么辦
# service mysql stop
# mysqld_safe --skip-grant-tables &
# mysqladmin -u user password 'newpassword''
# mysqladmin flush-privileges
4、 mysqld 起來了,卻無法登錄,提示"/var/lib/mysql/mysql.sock"不存在
這種情況大多數是因為你的 mysql 是使用 rpm 方式安裝的,它會自動尋找
/var/lib/mysql/mysql.sock 這個文件,
通過 unix socket 登錄 mysql。
常見解決辦法如下:
1)創建/修改文件 /etc/my.cnf,至少增加/修改一行
[mysql]
[client]
socket = /tmp/mysql.sock
#在這里寫上你的 mysql.sock 的正確位置,通常不是在 /tmp/ 下就是在 /var/lib/mysql/ 下
2)指定 IP地址,使用 tcp 方式連接mysql,而不使用本地 sock 方式
#mysql -h127.0.0.1 -uuser -ppassword
3)為 mysql.sock 加個連接,比如說實際的 mysql.sock 在 /tmp/ 下,則
# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock即可
5、 導出數據的幾種常用方法
1)使用 mysqldump
#mysqldump -uuser -ppassword -B database --tables table1 --tables table2 >
dump_data_20051206.sql
詳細的參數
2)backup to語法
mysql>BACKUP TABLE tbl_name[,tbl_name...] TO '/path/to/backup/directory';
詳細請查看 mysql 手冊
3)mysqlhotcopy
#mysqlhotcopy db_name [/path/to/new_directory]
或
#mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory
或
#mysqlhotcopy db_name./regex/
詳細請查看 mysql 手冊
4)select into outfile
詳細請查看 mysql 手冊
5)客戶端命令行
#mysql -uuser -ppassword -e "sql statements" database > result.txt
以上各種方法中,以 mysqldump 最常用
6、 如何在命令行上執行 sql 語句
#mysql -uuser -ppassword -e "sql statements" database
7、 導入備份出來文件的常見方法
1)由 mysqldump 出來的文件
#mysql -uuser -ppassword [database] < dump.sql
2)文件類型同上,使用 source 語法
mysql>source /path_to_file/dump.sql;
3)按照一定格式存儲的文本文件或 csv 等文件
#mysqlimport [options] database file1 [file2....]
詳細請查看 mysql 手冊
4)文件類型同上,也可以使用 load data 語法導入
詳細請查看 mysql 手冊
一、Solaris修改主機名
1. 編輯/etc/hosts
2. 編輯/etc/hostname.網卡名
3. 編輯/etc/nodename
4. 編輯/etc/net/ticots/hosts
5. 編輯/etc/net/ticosord/hosts
6. 編輯/etc/net/ticlts/hosts
二、網卡配置方法
1.查看網卡是否已經安裝
# ls /dev |grep “網卡名”
2.配置網卡接口名稱
# vi /etc/hostname.網卡名
Myethernet
3.配置子網掩碼
# vi /etc/inet/netmasks
192.168.0.0 255.255.255.0
4.配置網卡接口地址
# vi /etc/inet/hosts
127.0.0.1 localhost
192.168.0.100 Myethernet
5.統一配置文件
# vi /etc/inet/ipnodes
::localhost
127.0.0.1 localhost
192.168.0.105 Myethernet loghost
三、修改主機名
1.編輯/etc/hosts
2.編輯/etc/hostname.bge0
3.編輯/etc/nodename
4.編輯/etc/net/ticots/hosts
5.編輯/etc/net/ticotsord/hosts
6.編輯/etc/net/ticlts/hosts
四、建立、取消網卡邏輯IP
1.建立
# ifconfig e1000g0:1 plumb up
# ifconfig e1000g0:1 10.0.0.1 netmask 255.255.255.0 up
2.取消
# ifconfig e10000:1 unplumb
3.永久性生效,需要修改/etc/hosts、/etc/hostname.e1000g0:1、/etc/inet/ipnodes 文件。
五、SOLARIS運行級別
0 進入OK狀態 (需要SUN的PROM芯片支持)
1 管理狀態 (單用戶模式,禁止其他用戶登陸)
2 多用戶模式 (沒有網絡文件共享服務)
3 多用戶模式 (有網絡文件共享服務)
4 保留,未使用
5 退出操作系統并關機
6 重啟
S,s 單用戶模式
六、磁盤命名
邏輯設備:在/dev/目錄下的設備名
物理設備:在/device/目錄下的設備名
說明:邏輯設備通常容易被我們區分,而物理設備由KERNEL直接去識別,所以比較難理解。一般我們去記某一設備的邏輯設備名就可以了。
Sun使用下列命名方式定義邏輯設備名
/dev/[r]dsk/cXtXdXsX
c:邏輯控制器號
t:物理總線目標號
d:磁盤式邏輯單元號(LUN SCSI設備為0)
s:分區號
七、文字模式與WINDOWS模式的開關命令
# /usr/dt/bin/dtconfig –[de]
-d disable
-e enable
八、顯示完全程序名的ps命令
/usr/ucb/ps –auxwww
相當于linux下ps –ef –cols
九、Solaris - ping命令查看主機IP地址
ping命令加上-a或-s即可查看主機IP地址:
#ping -a hostname
or
#ping -s hostname
十、ls命令的幾個技巧
按時修改間(modification time)排序:ls -t, ls -lt, ls -1t, ls -Ct
按訪問時間(access time)排序:ls -u
按文件大小排序:ls -lS
顯示所有文件,除了.及..:ls -A
十一、刪除“-”開頭的文件
對于文件名中含-的文件,rm命令容易認為這是命令選項,用rm *報:
rm: ERROR: Illegal option -- c
usage: rm [-fiRr] file...
刪除的方法:
1 rm ./-filename 這樣使-不是第一個字符。
2.rm -- -filename 用--告訴rm這是最后一個選項,參見getopt。有的系統用
rm - -filename
3.ls -i 列出inum ;用find . -inum inum_of_thisfile -exec rm '{}' \;
用這種方法可以刪除含特殊字符的文件。
十二、>重定向
1.你也可以輸出重定向到一個設備里,因為linux把所有設備都看成文件
比如,當多用戶登錄是,A用戶使用的是pts/0終端
你可以用這種方式和他聊天
echo "hi" > /dev/pts/0
不過這種方法很流氓,而且需要你對這個設備有寫權
2.新建文件
>aaa 新建文件aaa
>-aaa 新建文件-aaa
3.清空文件
>aaa
linux技巧
++實現RedHat非正常關機的自動磁盤修復
先登錄到服務器,然后在/etc/sysconfig里增加一個文件autofsck,內容如下:
AUTOFSCK_DEF_CHECK=yes
PROMPT=yes
++改變文件或目錄之最后修改時間(變為當前時間)
執行格式:touch name ( name 可為文件或目錄名稱。)
++如何設置login后歡迎信息
修改/etc/motd,往里面寫入文本即可。
++如何設置login前歡迎界面
修改/etc/issue或者issue.net,往里面寫入文本。
issue的內容是出現在本機登錄的用戶界面上,而issue.net則是在用戶通過網絡telnet的時候出現。
++如何修改網卡MAC地址
首先必須關閉網卡設備,否則會報告系統忙,無法更改。
命令是: /sbin/ifconfig eth0 down
修改 MAC 地址,這一步較 Windows 中的修改要簡單。
命令是:/sbin/ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
重新啟用網卡 /sbin/ifconfig eht0 up
網卡的 MAC 地址更改就完成了
++建立別名/刪除別名
alias cp='cp -i'
unalias cp
++如何知道某個命令使用了什么庫文件
例如要知道ls使用了什么庫文件,可以使用:
$ ldd /bin/ls
++如何使一個用戶進程在用戶退出系統后仍然運行
使用nohup command &,比如:nohup wget -c ftp://test.com/test.iso
#這樣即使用戶退出系統,wget進程仍然繼續運行直到test.iso下載完成為止
++如何限制用戶的最小密碼長度
修改/etc/login.defs里面的PASS_MIN_LEN的值。比如限制用戶最小密碼長度是8:
PASS_MIN_LEN 8
++如何取消root命令歷史記錄以增加安全性
為了設置系統不記錄每個人執行過的命令,就在/etc/profile里設置:
HISTFILESIZE=0
HISTSIZE=0
或者:
ln -s /dev/null ~/.bash_history
++如何測試硬盤性能
使用hdparm -t -T /dev/hdX就可以測試硬盤的buffer-cache reads和buffered disk reads兩個數據,可以用來當作硬盤性能的參考。
同時使用hdparm -c3 /dev/hdaX還能設置硬盤以32bit傳輸,以加快數據傳輸的速度。
++如何列出一個目錄占用的空間
du或du -s或du -k
du -S | sort -n 可以迅速發現那個目錄是最大的。
用df可以看到已安裝的文件系統的空間大小及剩余空間大小。
quota -v查看用戶的磁盤空間信息,如果你用quota限制了用戶空間大小的話。
++如何使新用戶首次登陸后強制修改密碼
#useradd -p ‘’ testuser; chage -d 0 testuser
++在Linux中有時開機不自動檢查新硬件,新安裝的網卡找不到。請問怎么解決?
答:自動檢查新硬件的服務是Kudzu,用戶可以用“ntsysv”命令啟動該服務。下次重啟就會找到用戶的新網卡。
++從臺灣省的一個 網站找到的,如何讓系統密碼和samba密碼一致,并可以讓用戶自行修改他們的密碼.
使用web界面來同步更改system passwd 及 samba password
下載 http://changepassword.sourceforge.net/
安裝就可以了.先看README哈.
附加:
將系統用戶批量倒成samba用戶.
less /etc/passwd | mksmbpasswd.sh >; /etc/samba/smbpasswd
++更改Linux啟動時用圖形界面還是字符界面
cd /etc
vi inittab
將id:5:initdefault: 其中5表示默認圖形界面
改id:3: initdefault: 3表示字符界面
++配置smb可以被哪些IP所用.
cd /etc/samba
Vi smb.conf
找到hosts allow = 192.168.1. 192.168.2. 127.
修改其為哪些機器所用,注意IP之間用逗號分開
舉例:
hosts allow =192.168.1.110,192.168.1.120
++禁止在后臺使用CTRL-ALT-DELETE重起機器
cd /etc/inittab
vi inittab 在文件找到下面一行
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now (注釋掉這一行)
如: # Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
++修改主機名
vi /etc/sysconfig/network
修改HOSTNAME一行為HOSTNAME=主機名
++查看開機檢測的硬件
dmesg | more
++查看硬盤使用情況
df –m
++查看目錄的大小
du –sh dirname
++解壓小全
tar xvfj lichuanhua.tar.bz2
tar xvfz lichuanhua.tar.gz
tar xvfz lichuanhua.tgz
tar xvf lichuanhua.tar
unzip lichuanhua.zip
注:壓縮 tar cvfz FileName.tar.gz DirName
++顯示內存使用情況
free –m
++顯示系統運行了多長時間
uptime
++顯示開機自檢的內容命令
dmesg
++端口的詳細列表
/etc/services
++查看物理信息
lspci
++文本截面的中文支持
RH 9.0自帶安裝包 zhcon_0.2.3_1.rh9.i386.rpm
安裝完成后,執行: zhcon 就可以支持中文了
++linux 控制 windows
(1)用RH9.0自己帶rdesktop,版本是1.2.0
命令:rdesktop –u user –f 192.168.1.70 色默認的是8位
(2)要達到16色,就要下載新版本1.3.0
rdesktop –a 16 –u lichuanhua –g 800*600 192.168.1.70
++不讓顯示器休眠
setterm –blank 0
++顯示最后一個登錄到系統的用戶
last
++查看所有帳號的最后登錄時間
lastlog /var/log/lastlog
++查看系統自開通以來所有用戶的登錄時間和地點
cat /var/log/secure
++顯示當前用戶所屬信息
id
++如何知道Apache的連接數目
ps -ef|grep httpd|wc -l #其它服務可以類推
netstat -nat|grep -i “80″|wc -l # 以上結果再減1吧
++刪除用戶帳號的同時,把用戶的主目錄也一起刪除
userdel -r 用戶名
++修改已有用戶的信息
usermod [參數] 用戶名
參數: -c, -d, -m, -g, -G, -s, -u以及-o與adduser參數意義相同
新參數: -l 新用戶名(指定一個新的賬號,即將原來的用戶名改為新的用戶名)
++改變redhat的系統語言/字符集
改 /etc/sysconfig/i18n 文件,如
LANG=”en_US”,xwindow會顯示英文界面,
LANG=”zh_CN.GB18030″,xwindow會顯示中文界面。
還有一種方法
cp /etc/sysconfig/i18n $HOME/.i18n
修改 $HOME/.i18n 文件,如
LANG=”en_US”,xwindow會顯示英文界面,
LANG=”zh_CN.GB18030″,xwindow會顯示中文界面。
這樣就可以改變個人的界面語言,而不影響別的用戶
vi .bashrc
export LANG=zh_CN.GB2312
export LC_ALL=zh_CN.GB2312
++cd光盤做成iso文件
cp /dev/cdrom xxxx.iso
++快速觀看開機的硬件檢測
dmesg | more
++查看硬盤的使用情況
df -k 以K為單位顯示
df -h 以人性化單位顯示,可以是b,k,m,g,t..
++查看目錄的大小
du -sh dirname
-s 僅顯示總計
-h 以K、M、G為單位,提高信息的可讀性。KB、MB、GB是以1024為換算單 位, -H以1000為換算單位。
++查找或刪除正在使用某文件的進程
fuser filename
fuser -k filename
++linux中讓用戶的密碼必須有一定的長度,并且符合復雜度
vi /etc/login.defs,改PASS_MIN_LEN
++以不同的用戶身份運行程序
su - username -c “/path/to/command”
有時候需要運行特殊身份的程序, 就可以讓su來做
++ adduser m -g cvsroot -s /bin/false
添加用戶m,參數-s /bin/false表示不允許用戶直接登錄服務器
id m
顯示m用戶的uid和gid號。
++ 強制卸載rpm包
rpm -e –nodeps 包名稱
#個別不正常情況下:
rm -f /var/lib/rpm/__*
rpm –rebuilddb
++拒絕除root用戶的其它用戶登陸
touch /etc/nologin
也可以在/etc/passwd中加!對指定用戶限制登陸
++檢查自己所屬之群組名稱
執行格式:groups
++修改文件/文件夾所屬用戶組(支持-R)
chown .組名 文件名(注:組名名勿忘”.”,“:”也可)
也可chgrp 組名 文件名
chown 用戶名.組名 文件名(同時修改所屬用戶及用戶組)
++用fuser命令查看一下是哪些進程使用這個分區上的文件:
fuser –v –m /usr
如果沒有什么重要的進程,用以下命令停掉它們:
fuser -k –v –m /usr
然后就可以重新掛載這些文件系統了。
++網絡喚醒主機
ether-wake 目標網卡MAC
++如何查找大小為500K到1000K之間的文件
find / -type f -size +500k -and -size -1000k
++讓主機不響應ping
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
若想恢復就用
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
#必須是用命令改,不能是vi修改
++自動注銷ROOT
編輯你的配置文件”vi /etc/profile”,在"HISTSIZE="后面加入下面這行:
TMOUT=300
#300,表示300秒
++ls只列出目錄
ls -lF | grep ^d
ls -lF | grep /$
ls -F | grep /$
++讓cron任務不回饋信息
* * * * * cmd > /dev/null 2>&1
++lsof(list open files)用法
lsof -i :xx
lsof abc.txt 顯示開啟文件abc.txt的進程
lsof -i :22 知道22端口現在運行什么程序
lsof -c nsd 顯示nsd進程現在打開的文件
lsof -g gid 顯示歸屬gid的進程情況
++改變sshd 的端口
在/etc/ssh/sshd_config 中加入一行:Port 2222,/etc/init.d/sshd restart 重啟守護進程
++防止任何人使用su 命令成為root
vi /etc/pam.d/su,在開頭添加下面兩行:
auth sufficient /lib/security/pam_rootok.so
auth required /lib/security/Pam_wheel.so group=wheel
然后把用戶添加到“wheel”組:chmod -G10 username
++如何讓ssh 只允許指定的用戶登錄
方法1:在/etc/pam.d/sshd 文件中加入
auth required pam_listfile.so item=user sense=allow file=/etc/sshusers onerr=fail
然后在/etc 下建立sshusers 文件,加入允許使用ssh 服務的用戶名(每一個用戶名都要單獨一行),重新起動sshd
++利用ssh 復制文件
1、從A 復制B(推過去) #scp -rp /path/filename username@remoteIP:/path
2、從B 復制到A(拉過來)#scp -rp username@remoteIP:/path/filename /path
++linux機器掛載windows上的共享文件
windows IP:192.168.1.1
mount -t smbfs -o username=massky,password=massky //192.168.1.1/dbf /mnt/share
如想機器重啟自動掛載,vi /etc/fstab最后加入:
//192.168.1.1/dbf /mnt/share smbfs defaults,auto,username=massky,password=massky 0 0
++定制linux 提示符
在bash 中提示符是通過一個環境變量$PS1 指定的。用export $PS1 查看現在的值,比較直
觀常用的提示符可以設定為export PS1=“[\u@\h \W]\$”。其中\u 代表用戶名,\h 代表主機
名,\W 代表當前工作目錄的最后一層,如果是普通用戶\$則顯示$,root 用戶顯示#。
++清空文件
[echo] > 文件名
++DNS相關
host -a domain.com #顯示相關資訊都列出來
host domain.com 202.106.0.20 #用202.106.0.20這臺DNS服務器查詢domain.com
++前后臺任務相關
jobs 列出屬于當前用戶的進程
bg 將進程搬到后臺運行(Background)
fg 將進程搬到前臺運行(Foreground)
萬一你運行程序時忘記使用“&”了,又不想重新執行。可以先使用ctrl+z掛起程序,然后敲入bg命令,這樣程序就在后臺繼續運行了。
++查找當前目錄下七天前的文件,并刪除
find ./ -mtime +7 -type f -exec rm {} \;
++產生指定大小的文件(bs*count)
dd if=/dev/zero of=filename bs=1000000 count=10
++查找當前目錄下文件并更改擴展名
更改所有.ss文件為.aa
# find ./ -name "*.ss" -exec rename .ss .aa '{}' \;
++修改系統時間
date -s "2005-6-4 17:26"
++讓服務器自動同步時間
0 1 * * * /usr/sbin/ntpdate 210.72.145.44
或 0 1 * * * rdate -s time.nist.gov
++解決打開文件過多的問題
在etc/security/limits.conf 配置文件中設置進程文件描述符極限:
* soft nofile 2048
* hard nofile 4096
系統級文件描述符極限及timeout時間修改,添加如下兩行到 /etc/rc.d/rc.local 啟動腳本中:
# Increase system-wide file descriptor limit.
echo 65536 > /proc/sys/fs/file-max
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
#一般情況下,最大打開文件數比較合理的設置為每4M物理內存256,比如1G內存可以設為65536,
#而最大的使用的i節點的數目應該是最大打開文件數目的3倍到4倍
++如何用tar打包一個目錄時,去掉其中的某些子目錄或指定文件
加參數 –exclude 即可, 可加文件名或目錄名, 可多寫
tar cvf –exclude {dirname,filename} #dirname不要加/
++終端下修改服務器時區
/usr/sbin/timeconfig
或直接#/etc/sysconfig/clock
++關閉啟動時的內存不足256M提示
#vi /etc/rc.sysinit #把最后六行注釋掉
或#vi /var/lib/supportinfo
把其中的 MinRAM: 256M 這個值調低點.
++在多層目錄中查找到某一指定"字符串"
grep string -R /etc/sysconfig/
find ./pathname/ -name '*' | xargs grep 'string'
++占用CPU的一個命令
#yes string #有時候測試用得上。狂占CPU
++Kill相關
kill -STOP [pid]
發送SIGSTOP (17,19,23)停止一個進程,而并不消滅這個進程。
kill -CONT [pid]
發送SIGCONT (19,18,25)重新開始一個停止的進程。
kill -KILL [pid]
發送SIGKILL (9)強迫進程立即停止,并且不實施清理操作。
kill -9 -1
終止你擁有的全部進程。
++在當前目錄下建個bak目錄,然后 cp * bak,會提示略過bak,有其它辦法可以排除指定文件(夾)?
ls -F|grep -v \/|xargs -i cp {} bak #推薦
或 find ! -name "./bak"
++ 根據進程名顯示進程號
# pidof httpd
1846 1845 1844 1843 1842 1841 1840 1839 1820
++e2fsck
檢查使用 Linux ext2 檔案系統的 partition 是否正常工作, 檢查 /dev/hda5 是否正常,如果有異常便自動修復,并且設定若有問答,均回答[是] :
e2fsck -a -y /dev/hda5
++反向輸出
rev 反向輸出(以行為單位)
tac 反向輸出(全文)
++顯示終端號
tty
++文件行數/字數統計
wc –l file 計算文件行數
wc -w file 計算文件中的單詞數
wc -c file 計算文件中的字符數
++出每行第5個到第9個字符
cut -b5-9 file.txt
++刪除文本文件中出現的行列
uniq
++返回文件所在路徑
dirname /bin/tux #將返回 /bin
++fcitx在英文環境下正常使用
#vi ~/.bashrc
xport LC_CTYPE="zh_CN.UTF-8"
export XMODIFIERS="@im=fcitx"
export XIM=fcitx
export XIM_PROGRAM=fcitx
#gnome-session-properties可以把fctix加入登入后自啟動
++split分割合并文件
split -b1440k a_whopping_big_file chunk #拆
cat chunk* > a_whopping_big_file #合
刪除 core 文件
# find ~ -name core -exec file {} ; -exec rm -i {} ;
查看使用文件的進程
# fuser -u /usr/my_application/foo
搜索字符串
#grep "hello world" `find ./ -name "*" -print -exec file {} ; |grep text | cut -d ':' -f 1`
目錄
#alias dir='ls -Lla|grep ^d'
輸出 IP 地址
#ifconfig | grep "inet addr" | grep -v "127.0.0.1" | awk '{print $2;}' | awk -F':' '{print $2;}'
按文件長度排序
#ls -l | grep ^- | sort -nr -k 5 | more
#ls -lR | grep ^- | sort -nr -k 5 | more
二進制文件中的可打印字符
# strings name of binary file
一個月的最后一個星期天執行任務:
18 * * * 0 [`date "+%d"` -gt 24] && /path/to/script
修改擴展名:
# for f in *.abc; do mv $f `basename $f .abc`.def ; done
查看硬盤情況:(Solaris)
# iostat -En
整個目錄樹拷貝:
# cd
# find . -depth -print | cpio -pudm
按長度排序目錄下所有文件
# du -a | sort -n -r | more
檢查文件內每行是否有相同列數
#awk '{print NF}' test.txt |sort -nu|more
去除空行
#sed -e '/^[ ]*$/d' InputFile >OutputFile
查看進程占用的對應文件 inode 號(Solaris)
#/usr/proc/bin/pfiles
刪除指定用戶的所有進程
# kill -9 `ps -fu username |awk '{ print $2 }'|grep -v PID`
Bash 操作快捷鍵:
ctrl-l -- clear screen
ctrl-r -- does a search in the previously given commands so that you don't
have to repeat long command.
ctrl-u -- clears the typing before the hotkey.
ctrl-a -- takes you to the begining of the command you are currently typing.
ctrl-e -- takes you to the end of the command you are currently typing in.
esc-b -- takes you back by one word while typing a command.
ctrl-c -- kills the current command or process.
ctrl-d -- kills the shell.
ctrl-h -- deletes one letter at a time from the command you are typing in.
ctrl-z -- puts the currently running process in background, the process
can be brought back to run state by using fg command.
esc-p -- like ctrl-r lets you search through the previously given commands.
esc-. -- gives the last command you typed.
文件名里的空格替換為下劃線
# for i in $1 ; do mv "$i" `echo $i | sed 's/ /_/g'` ; done
查看遠程主機時間
# telnet remotehostname 13|grep :
只顯示 top 命令的states 行
#while true; do top -d 2 | col -b | grep states; sleep 10; done
加速顯示 tar 文件內容
# tar tvfn
讓 目錄名也能 Spell Check
#shopt -s cdspell
當輸錯命令時,系統會自動進入類似的目錄
查看 Sun 服務器型號
# /usr/platform/`uname -m`/sbin/prtdiag -v | grep `uname -m`
在vi 中一行文字前后添加字符
:/^(.*)/s//我要 1 添加/
查找某包含字符串(Verita)軟件包的詳細信息 (Solaris)
pkginfo -l `pkginfo | grep -i VERITAS | awk '{print $2}'`
億恩科技地址(ADD):鄭州市黃河路129號天一大廈608室 郵編(ZIP):450008 傳真(FAX):0371-60123888
聯系:億恩小凡
QQ:89317007
電話:0371-63322206
本文出自:億恩科技【www.laynepeng.cn】
服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]
|