1. 程式人生 > >Linux常用命令總結

Linux常用命令總結

bashrc 命令 配置環境 bit stat 用戶權限 復制 rtu one

Linux文件的目錄結構:樹狀結構,/為最高的根目錄

技術分享

root:root用戶的個人文件夾(家目錄)
bin:存放多數用戶可用的命令
boot:存放啟動文件和配置信息,系統啟動時會用
dev:存放設備文件,/dev/hdc代表光驅
etc:存放服務配置文件
home:其他用戶的家目錄
lib:存放程序運行所需要的庫文件
media:可移動設備的掛載目錄
mnt:設備掛載目錄
usr:用戶程序存放目錄
var:存放經常改動的數據文件
tmp:存放臨時文件
sbin:存放維護系統所需命令,一般僅root可用
proc:存放核心運行時產生的文件,這些文件位於內存而非硬 盤中
sys:與proc類似,設計比proc更清晰,文件位於內存
srv:服務需要的數據的存放目錄
lost+found:文件系統修復時找回的丟失文件
opt:額外軟件安裝目錄
misc:不方便歸類的雜項文件
selinux:SELinux文件系統實例

查看一個命令的參數及用法:
命令 --help

用戶管理:
id:可以查看當前用戶
[[email protected] ~]$ id
uid=501(lhy) gid=501(lhy) 組=501(lhy) 環境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
whoami:查看當前的用戶
[[email protected] ~]$ whoami
lhy
who:查看當前已經登錄的用戶數
[[email protected] ~]$ who
root pts/0 2017-05-11 21:41 (192.168.20.1)
root pts/1 2017-05-11 22:53 (192.168.20.1)
w:查看當前已經登錄的用戶數
[[email protected]

/* */ ~]$ w
22:58:21 up 2:09, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.20.1 21:41 0.00s 0.11s 0.00s w
root pts/1 192.168.20.1 22:53 1:41 0.03s 0.03s -bash

添加用戶
useradd lhy #添加用戶
useradd -g groupname uername #添加用戶時候制定加入的組名
passwd lhy #給添加的用戶加密碼、還可以重置密碼
用戶默認的家目錄就是在/home/目錄下:
[[email protected]

/* */ ~]# cd /home/
[[email protected] home]# ls
lz

對目錄(文件夾)的操作
pwd 顯示當前你所在路徑
cd 進入哪個目錄(文件夾)

~ 波浪線代表家目錄:
快速回到家目錄:
cd ~
cd

切換用戶:
[[email protected] ~]# su lhy
[[email protected] root]$ ls → root目錄是超級用戶root的家目錄(普通用戶的家目錄在/home下)
ls: 無法打開目錄.: 權限不夠
[[email protected] root]$ exit
exit
[[email protected] ~]# su lhy
[[email protected] root]$ exit
exit
[[email protected] ~]# su - lhy
[[email protected] ~]$
[[email protected] ~]$ pwd
/home/lhy
[[email protected] ~]$ su lz → 當前用戶是lhy,不是超級用戶,要切換到lz用戶就需要輸入密碼
密碼:
su username
su - username
區別就是su - 會重新加載用戶的環境變量

sudo 獲取超級用戶權限
添加普通用戶的sudo權限:
/etc/sudoers文件,找到 root ALL=(ALL) ALL 這一行,在它下面加入
username ALL=(ALL) NOPASSWD:ALL然後保存即可
加好了之後其它用戶輸入"sudo su-"就可以切換超級用戶了
sudo -s 切換root用戶,不會加載環境變量

刪除用戶(必須使用root用戶才能操作)
userdel username
userdel -r xw 刪除用戶的時候也刪除它的家目錄

組管理:
添加組
groupadd name
刪除組
groupdel name

文件操作:
創建文件夾
mkdir
mkdir -p /tmp/besttest/blk

刪除文件夾
rm -rf /
rmdir:只能刪除空文件夾

查看文件下面的東西:
ls -l == ll
ll
ls -a

改名
mv besttest linux
mv besttest /tmp
mv如果後面跟的是文件名改名,如果後面跟的是路徑是移動

復制
cp ax /tmp/ 復制文件
cp -r linux /tmp/ 復制文件夾
cp -rf linux

重命名:

alias lhy=‘cd /opt/lampp‘
永久生效的話,加到/etc/profile這個裏面

路徑:
/頂級目錄,相當於Windows的我的電腦
相對路徑:相當於當前路徑
絕對路徑:實際的路徑
cd ..#回到上一級目錄
cd ../../#回到上兩級目錄
cd - 返回上一次所在的目錄

權限:
所有者的權限 同一組的權限 其他用戶的權限
rw- r-- r--
rwx分別代表讀、寫、執行的權限

加權限:
x代表執行 w代表寫 r代表讀
chmod o+x 其他用戶
chmod g+x 本組用戶
chmod u+x 自己
chmod +rwx 所有
chmod a+x 所有
去掉權限,就是把+變成-
r=4 w=2 x=1 數字模式代表的權限
chmod 755 file
如果加權限的是一個文件夾的話要加 -R

chown 改變文件的所有者
chown file user
如果是一個文件夾的話要加 -R
[[email protected] tmp]# ll SqlTest
-rw-r--r--. 1 lhy lhy 8038 5月 11 16:55 SqlTest
[[email protected] tmp]# chown lz SqlTest
[[email protected] tmp]# ll SqlTest
-rw-r--r--. 1 lz lhy 8038 5月 11 16:55 SqlTest

chgrp 改變文件的所屬組
chgrp file group
如果是一個文件夾的話要加 -R
[[email protected] tmp]# ll
總用量 12
-rw-r--r--. 1 lhy root 0 1月 20 20:52 aa
-rw-r--r--. 1 root root 472 1月 20 20:40 test
[[email protected] tmp]# chgrp lhy aa
[[email protected] tmp]# ll
總用量 12
-rw-r--r--. 1 lhy lhy 0 1月 20 20:52 aa
-rw-r--r--. 1 root root 472 1月 20 20:40 test

wc -l file 統計行數:
|管道符:連接兩條命令,把前面的命令執行結果給後面的命令處理
[[email protected] tmp]# cat test |wc -l
33
[[email protected] tmp]# ls |wc -l
5
&& 連接兩條命令,先後執行
[[email protected] tmp]# ls && wc -l test
aa bitrock_installer.log test yum.log yum_save_tx-2015-11-01-00-38wnqS4B.yumtx
33 test
sh startup.sh && tail -f /logs/catlina.out

對文件的編輯操作:
vi:
切換編輯模式和命令模式:
i:當前位置
o:當前行的下一行
a:下一位置進行編輯
esc:編輯模式切換到命令模式
退出vi:
命令模式下:
退出:
":q"#沒有修改的話可以直接退出
":q!"#不保存退出
":wq"#保存退出
":x"#也是保存退出
查找:
/test 從頭開始找
?test 從文件末尾開始找
顯示行號: ":set nu"
取消顯示行號: ":set nonu"
快去去到某一行:":num"
快速到文件末尾:shift+g
x:刪除單個字符
dd:刪除整行
19dd:刪除19行
u:撤銷
yy:復制一整行
19yy:復制19行
p:粘貼
.:重復前一次操作
$:移動光標到行尾
0:移動光標到行首
替換字符串:
":%s/src_str/new_str/g"

屏幕翻滾類命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
vim:
在命令模式下ctrl+v 進入可視化編輯模式,選擇多列
shfit+i 進入編輯模式,輸入想加的內容
再按esc

查看文件:
cat
more
less
tail -f
ln /opt/lampp/xampp ~/wxy

查找:
find / -name mysql #查找文件/文件夾
grep xxx file 查找文件內容、進程
[[email protected] ~]$ grep select /tmp/SqlTest
select * from Student;
select * from Student where id between 2 and 4;
select id,name,department from Student;
select * from Student where Department="計算機系" or Department="英語系";
grep -v 過濾掉指定的關鍵字
grep -w 匹配指定字符串
tail -f /opt/lampp/logs/access_log |grep lhy

查看進程:
ps -ef|grep mysql|grep -v grep 查找進程,並且不顯示grep進程
ps只是顯示你執行那一時刻的狀態
top 動態的查看進程,但是不能查找

殺進程:
kill -9 pid 殺進程 可以跟多個pid
nohup ./jmeter-server & 在後臺運行某個程序

du -sh * 可以看到當前目錄下所有文件的占用空間
du -sh dirname
df -h 可以看到當前磁盤已經使用了多少

上傳、下載:
ftp工具:直接拖拽、什麽都可以上傳,要sftp協議
rz、sz命令可以直接上傳下載,但是它不能上傳文件夾
rz、sz會話選項x/y/zmodem設置上傳下載目錄
Rzsz命令安裝:使用yum安裝,yum –y install lrzsz,
編譯安裝:http://blog.chinaunix.net/uid-20639775-id-154615.html

開關機、重啟:
關機
shutdown -h 30 #定時關機
shutdown -h now #立即關機
init 0 #立即
reboot 重啟
shutdown -r 20 "我要重啟啦" 定時重啟

註銷用戶
exit

網絡:
ip a
ifconfig
dhclient#自動獲取ip

壓縮、解壓文件
tar cvf linux.tar linux #直接打包,前面是包的名字,後面是你要給誰打包
tar zcvf linux.tgz linux# #壓縮
tar zcvf linux.tar.gz linux #壓縮
tar xvf linux.tar linux #解壓,不管你壓縮沒壓縮都能解開
zip linuz.zip linux 打zip包 → zip需要自己yum
unzip linuz.zip
gzip file 只能對文件打包,打包完原來的文件就沒有了,需要自己yum
gunzip file.gz

重定向:
cat xx > new_xx 覆蓋原有的內容
>xx.log → 清空日誌,不需要重啟服務
cat xx >> new_xx 追加

定時任務:
crontab -e 編輯定時任務
crontab -l 查看當前有哪些定時任務
crontab 文件的格式為“M H D m d cmd”。
其中,M代表分鐘(0~59),H代表小時(0~23),D代表天(1~31),m代表月(1~12),d代表一星期內的天(0~6,0為星期天)。cmd表示要運行的程序,*代表每分鐘都執行
* * * * * sh /opt/lampp/test.sh 表示每分鐘執行一次test.sh這個腳本
*/5 * * * * sh /opt/lampp/test.sh 表示每5分鐘執行一次test.sh這個腳本
30 21 * * * /usr/local/apache/bin/apachectl restart 表示每晚的21:30重啟apache
示例:
crontab -e
* * * * * touch /tmp/lhy
[[email protected] ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
到/tmp文件夾下查看:
[[email protected] tmp]# ls
bitrock_installer.log crontab.SjF8er SqlTest yum.log yum_save_tx-2015-11-01-00-38wnqS4B.yumtx
[[email protected] tmp]# ll lhy
-rw-r--r--. 1 root root 0 5月 12 07:50 lhy
[[email protected] tmp]# ll lhy
-rw-r--r--. 1 root root 0 5月 12 07:51 lhy

查看端口號:

netstat -nlpt|grep 18983 #查詢這個進程號啟動端口號是什麽
netstat -nlpt|grep port #可以查看這個端口號有沒有被占用

環境變量:
環境變量的作用就是讓一個腳本/命令隨便在哪個目錄下都能用
系統環境變量:/etc/profile → 對所有用戶都生效
用戶環境變量:~/.bashrc → 用戶的家目錄
ls -al展示目錄下所有的文件,包括隱藏文件"."開頭的都是隱藏文件
系統總裝了一個mysql,將mysql的目錄加入環境變量中
自己也有個用戶,自己裝個mysql,這時候有兩個mysql,想用自己的mysql,環境變量中加了之前的mysql,那麽這時候,可以將自己的mysql配在用戶的環境變量中
export PATH=$PATH:
source /etc/profile
source ~/.bashrc

/etc/profile環境變量修改:
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi

for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null 2>&1
fi
fi
done

unset i
unset -f pathmunge


export PATH=$PATH:/tmp → 配置環境變量
"/etc/profile" 81L, 1821C written
[[email protected] tmp]# ls
aa bitrock_installer.log lhy test yum.log yum_save_tx-2015-11-01-00-38wnqS4B.yumtx
[[email protected] tmp]# source /etc/profile → 重新引入配置文件

[[email protected] tmp]# whereis ls → whereis 查看命令在哪裏
ls: /bin/ls /usr/share/man/man1/ls.1.gz

env → 用於顯示系統中已存在的環境變量

環境變量的例子:
在tmp目錄下,新建腳本lhy:
[[email protected] tmp]$ vi lhy
echo "love you hongye!"
[[email protected] tmp]$ lhy → 系統只會在配置了環境變量的目錄下找,所以這個腳本要在任何目錄下運行,必須放在已經配置了環境變量的文件夾中
-bash: lhy: command not found
或者指定文件所在的目錄
[[email protected] tmp]$ ./lhy
love you hongye!
[[email protected] tmp]# mv lhy /bin
[[email protected] tmp]# cd
[[email protected] ~]# lhy
love you hongye!!
[[email protected] ~]$ lhy
love you hongye!


shell腳本:
shell其實就是多個命令寫在一起
shell裏邊定義變量必須不能有空格
ps -ef|grep jmeter|grep -v grep |awk ‘{print $2}‘
awk ‘{print $2}‘ #取第二列的數據
示例:
#!/bin/bash
count=`ps -ef|grep jmeter|grep -v grep |awk ‘{print $2}‘|wc -l`
pid=`ps -ef|grep jmeter|grep -v grep |awk ‘{print $2}‘`
if[ $count -gt 0 ]
then
kill -9 $pid
echo "JMeter stoped."
else
echo "JMeter not runing."
fi

linux默認的shell解釋器就是bash

軟件安裝:
rpm:
rpm -ivh xx.rpm #安裝
rpm -e xxxxx #卸載
rpm -qa|grep xxx#查詢是否已經安裝這個軟件
rpm –qa >list.txt 把已經安裝軟件包都輸出到list.txt這個文件中
用rpm安裝包安裝完後,不需要自己加環境變量,會自己創建好
yum:
紅帽系列系統自帶的
xx yum -y install xxx
下載紅帽系統的時候,一般會有兩個ISO文件,一個ISO1是系統的安裝文件,一個ISO2yum源是相關軟件的安裝包,如果上不了外網的話,就將ISO2掛載到系統上,執行安裝
常用命令:
yum install httpd#安裝Apache
yum -y install httpd#如果有選項全部同意安裝
yum list|grep httpd#從yum列表中查找你需要的軟件
yum update httpd #yum升級Apache
yum list installed |grep mysql#查詢是否安裝mysql
yum remove mysql#卸載yum安裝的mysql
源碼安裝:
什麽是gcc:gcc是GNU Compiler Collection的縮寫。最初是作為C語言的編譯器,現在已經支持多種語言了,如C、C++、Java、Pascal、Ada、COBOL語言等
因為linux上的軟件包基本上都是c語言開發的,所以要安裝gcc來編譯源碼進行安裝
yum -y install gcc*

./configure --prefix=/path#生成編譯文件
make #編譯
make install #把編譯好的文件放到你指定的目錄下

Rzsz命令安裝:使用yum安裝,yum –y install lrzsz,
編譯安裝:http://blog.chinaunix.net/uid-20639775-id-154615.html

環境搭建:
1、下載依賴軟件、安裝好
2、獲取源代碼(打包)
根據語言的不同,看看是否需要編譯、打包
3、導入基礎數據
4、修改配置文件
5、啟動
JAVA程序(tomcat、weblogic、jetty、resin、ws)
php、ruby、python(nginx、apache)

日常部署:
1、獲取最新代碼(編譯、打包)
如果有表結構變更,需要執行sql
2、修改配置文件
3、重啟程序

獲取系統時間:
[[email protected] ~]# date +%Y%m%d%H%M%S
20170121095305

1、每天23:59分備份lampp
備份的文件名以當時的時間命名
201612241852_acces.log
/tmp/logs/

cd /opt/lampp/logs/access_log

①在bin中寫一個bak_log.sh腳本:
src_path=‘/opt/lampp/logs/access_log‘
tar_path=‘/tmp/logs/‘
time=`date +%Y%m%d%H%M%S`

cp -rf ${src_path} ${tar_path}${time}_access_log
>${src_path} → 清空源日誌,不需要重啟服務
②crontab -e
59 23 * * * sh bak_log.sh

說明:因bak_log.sh腳本是放在bin目錄下,bin目錄已經配置在環境變量中,故在寫crontab時,bak_log.sh不需要指定文件的絕對路徑
如若bak_log.sh腳本所處的文件夾沒有配置在環境變量中,在寫crontab時,bak_log.sh需要指定文件的絕對路徑,如下:
45 13 * * * sh /tmp/bak_log.sh

------------------------------------------------

相關工具的使用:

sumline:

首選項 → 設置 → 默認  打開配置文件:

將文件末尾的 "ignored_packages": ["Vintage"] 中括號中的"Vintage"去掉,就可以使用linux的vi命令了

//"ignored_packages": ["Vintage"]

"ignored_packages": []

當從windows上傳到linux的文本文件出現亂碼時,是由於windows的編碼方式和linux的不一樣,使用sublime 文件 → 設置文件編碼,使得需要上傳的文件編碼方式和linux上的編碼方式是一樣的(文件另存為也可以設置),就不會出現亂碼了。

XShell:

配置選中文本右鍵粘貼:工具 → 選項 → 鍵盤和鼠標

技術分享

另外xshell中,有個功能可以根據文件名的顏色判斷文件的類型:

1)默認色代表普通文件。 例:install.log

2)綠色代表可執行文件。 例:rc.news

3)紅色代表tar包 文件。 例:vim-7.1.tar.bz2

4)藍色代表目錄文件。 例:lhy

5)水紅代表圖象文件。 例:lhy.jpg

6)青色代表鏈接文件。 例:rc4.d  (此類文件相當於快捷方式)

6)黃色代表設備文件。 例:fd0

------------------------------------------------------------------

技術分享

Linux常用命令總結