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