1. 程式人生 > >linux開發中常用命令

linux開發中常用命令

ipad fdisk == lld 格式化 cmd priority showmount 地址

經常使用linux進行開發,軟件安裝,環境部署等,會用到一些常用的命令,下面是我平時使用或收集到的linux下的常用命令集:


type command 查看一條命令是外部命令還是內部命令
[root@upl test]# type cd
cd is a shell builtin
cd 是內部命令

[root@upl test]# type mount
mount is /bin/mount
mount 是外部命令


內部命令可以直接訪問環境變量,外部命令不可以


查看內部命令集合體
man type


環境變量
查看環境變量
echo $PATH
env 查看所有環境變量


自已設定環境變量
[root@upl test]# AA=hello
[root@upl test]# echo $AA
hello
查看環境變量要給$


環境變量配置角本  /etc/profile


查看命令或者函數在哪一章
whatis command
man -f command


man文檔
1.基本的shell指令 whatis ls
2.系統調用命令   whatis open
3.系統調用庫命令  whatis malloc
4.
5.文件接口 whatis passwd whatis inittab whatis shadow
7.總述  雜項   whatis signal whatis socket
8.網絡接口,內核接口  whatis ifconfig whatis mii-tool


info command
help


ls list directory contents


ls file or directory
ls -l 以列表的形式 ==> ll
ls -a 所有的文件
ls -R 遞歸文件夾
ls -h 文件大小帶有單位
ls -t 以時間順序排列


touch 創建一個文件
1.假如文件不存在,會創建一個文件
2.如果文件存在,改變文件的時間戳,不會改變文件內容




cd change working directory 改變工作目錄
cd directory
cd . 當前目錄
cd .. 上一層
cd - 返回上一次跳過來之前的目錄
cd 到相應用戶的家目錄
cd ~ 到相應用戶的家目錄




絕對路徑  從根出發

相對路徑 從當前的工作目錄出發


rm remove a files or a directorys
rm -r 刪除一個目錄
rm -f force 強制刪除


mkdir create a directory
mkdir directorys
mkdir dir1/dir2/dir3 -p 創建多級目錄


cp copy a file or a directory


cp file1 file2
cp file directory
cp directory1 directory2 -r
\cp file directory 覆蓋模式


mv    
1.剪切
mv file1 directory
mv file1 ../file1
2.重命名
mv file1 file2




權限
  7 7 7
- rwx    rwx    rwx
 所屬用戶  所屬組  其它
r-- 4
rw- 6


chmod 0777 file 給某文件設置權限
chmod 0777 directory -R 所有都置成一樣的權限
chmod a+x file 給所有位添加x
chmod a-x file 把所有位刪除x




umask 查看當前用戶的掩碼
默認情況下是0022


創建文件的最大權限是666
創建文件夾最大權限是777


maxpriority - umask = file or directory priority
文件夾 777 - 022 = 755
文件  666 - 022 = 644




- normal file 普通文件 黑色
d directory 目錄   藍色
c characterdevice 字符設備  黃色
b blockdevice 塊設備
s socketdevice 網絡設備
l link 鏈接文件 淺藍色
p pipe 管道文件


/root 超級用戶的家
/home  普通用戶的家
/bin 普通用戶的命令
/sbin  超級用戶的命令
/dev 設備
/etc  配置文件的目錄
/net /sys 網絡相關  系統相關
/media 自動掛載外設
/mnt  手動掛載外設,網絡資源
/misc  自動掛載本機硬盤資源
/proc 自動生成,設備參數
/var 系統日誌和服務
/usr 第三軟件自動安裝目錄
/opt 手動安裝第三方軟件
/selinux SELINUX 防火墻
/lost+found ext2 ext3 ext4 磁盤格式
/boot 內核,grub引導 一盤獨立分區


vim 編輯器


三種模式
命令模式  
末行模式  
插入模式 

插入模式
補全  ctrl + p
刪除整行  ctrl + u

命令模式
命令模式轉入插入模式
i 在當前光標前插入
I 在當前光標的行首插入
a  在當前光標後插入
A 在當前光標的行尾插入
o 在當前光標的下一行的開頭插入
O 在當前光標的上一行的開頭插入


yy 復制一行
4yy 復制從當前光標以下四行
dd 刪除一行
4dd 刪除從當前光標以下四行
d + 上鍵 刪除當前光標這一行以及上一行
d + 下鍵 刪除當前光標這一行以有下一行
p 粘貼在當前光標所在當行的下一行
P 粘貼在當前光標所在當行的上一行
r + 所替換的字符  替換掉當前光標的一個字符

可視塊
刪除
ctrl + v 把需要操作的字符拉黑  +delete 將拉黑的字符刪除
添加
ctrl + v 把需要添加的光標拉黑 + I 編輯 + esc
替換
ctrl + v 把需要替換的拉黑+ r + 所需要替換的字符比如:a


末行模式
:! 強制 相對於超級用戶
:w 保存
:q 退出
:wq 保存以及退出  :qw 不行
:x 保存以及退出
:X 對一個文件加密碼   不輸入密碼就是取消
:!<commad> 跳出vim執行<commad>命令
:sh 創建出新的一個shell保存當前編輯狀態,操作完之後,用ctrl+d回復當前編輯狀態




如何將一個程序掉到後臺
ctrl + z 掉到後臺停止運行
./a.out & 將一個程序掉到後臺執行
查看後臺任務
jobs

後臺任務掉到前臺
fg


查找
/target 查找target對象 從當前光標向下查找
n 向下查找下一個
N 向上查找上一個
?target 向上查找target對象

取消高亮
:nohl ==> no high light


讓vim顯示行標
set number ==> set nu
讓vim不顯示行標
set nonumber ==> set nonu


修改配置文件
設置行標
vim /etc/vimrc

在空行處寫 
set number 或者 set nu
保存退出

修改tab長度
vim /etc/vimrc
set ts=4
保存退出




替換
% 所有行 s替換 g 一行所有 c check 檢查
:%s/this/that   把所有行的首個this替換成that
:%s/this/that/g 所所有行的所有this替換成that
:14,16s/this/that/g 從第14行到16行的this替換成that
:%s/this/that/gc 檢查訪問模式替換


查看時間
date
date +%F 查看當前時間
date +%F --date="1 days ago"
date +%F --date="1 day ago"
date +%F --date="1 day"
date +%F --date="1 days"

設置時間
date -s 2014-07-14   設置當前時間
//date -s 2014/07/14
date -s 11:40     
clock -w        write同步時間


查看當前命令的歷史
history
history -w 保存當前操作的歷史命令  
//  ~/.bash_history
history -c 清除當前操作的歷史記錄

查看當前系統支持的語言
locale
locale -a 查看所有
locale -a | grep zh 查看支持中文件格式
//管道過濾
cat txt | grep hello 查看txt這個文件裏面帶有hello這個單詞的行


linux系統運行級別 run level
0 關機
1 單用戶模式,沒有網絡,沒有服務,主動獲得root權限
2 多用戶模式,有服務,沒有網絡
3 多用戶模式,有服務,有網絡,服務器模式
4 保留
5 圖形界面,x11
6 重啟


配置角本
/etc/inittab
id:5:initdefault

init 0
shutdown -r +10 10分鐘後重啟
shutdown -h now 現在關機
halt 也是關機
halt -p -f 強制關機,直接掉電
reboot 重啟
init 6
init + runlevel

ctrl + F2-F7 進入字符界面
ctrl + F1 回復圖形界面


stdin stdout stderr
標準輸入 標準輸出  標準出錯
0 1 2


重定向
默認情況下是標準輸出重定向   清空該文件
echo "hello world" > txt 如果txt不存在,將會被創建
標準出錯重定向
echo "hello world" 2> txt
(ls && fjdkslf) 2> txt 只把標準出錯重定向
把標準出錯和標準輸出都重定向
(ls && fjdksfj) &> txt

追加
echo "hello world " >> txt 不會清空該文件
錯誤追加
(ls && fdkfjdk) 2>> txt
(ls && fdkfdjf) &>> txt




網絡配置
192.168.110.254
//網段  網絡ip
IP 網絡IP
網關 路由器  --》 交換機 沒有外網轉發功能
子網掩碼  255.255.255.0 如果255固定,0可變
DNS解析 把域名轉成具體的服務器IP

如何查看本地有無網卡
ping 127.0.0.1
ping得通證明有網卡,如果ping不通,證明沒有網卡

查看網線有沒有連接
mii-tool eth0 (網卡接口名字)  eth0 eth1
[root@upl ~]# mii-tool eth1
eth1: negotiated 100baseTx-FD, link ok
//no link

關掉網絡管理後臺進程
service NetworkManager stop // restart start




配置主機IP
1.臨時配置IP
ifconfig eth0 192.168.110.xxx
將本機配置成192.168.110.xxx
只要網絡服務重啟。就會失效
service network restart

2.手動配置IP
/etc/sysconfig/network-scrpts/ifcf-eth0
應該具有:
DEVICE=eth0 設備名字
BOOTPROTO=none 或者(靜態) static 或者是 dhcp(動態獲取IP地址)
ONBOOT=yes 開啟本網卡工作*
IPADDR=192.168.110.xxx IP地址
// GATEWAY=192.168.110.1  網關
NETMASK=255.255.255.0  子網掩碼

配置保存之後得重啟網絡
service network restart
第二次打可以用簡寫
!ser


查看網關
route -n
添加一個網關
route add default gw 192.168.110.1
刪除一個網關
route del default gw 192.168.110.1

查看並配置DNS
nslookup
-> server
Default server: 192.168.2.1
Address: 192.168.2.1#53
-> exit 退出

設置DNS
/etc/resolv.conf
nameserver 192.168.2.1
// 8.8.8.8
// DNS1=8.8.8.8


  配置子網     虛擬網卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0
DEVICE=eth0:0 修改網卡名字

改成2網段的某一個IP 
GATEWAY=192.168.2.1

保存
service network restart
ping 192.168.2.1
ping 得通

DNS是否可以用
nslookup
->server
192.168.2.1 --> 8.8.8.8
-> exit

nslookup www.baidu.com
如果解析成功。將會看到解析地址

ping www.baidu.com
如果ping得通 就可以上網了


wireless
# ls usbwifi.sh
# ls wireless_tools.29/
# yum -y install zd1211*
# ifconfig -a 查看wlan0
# ifconfig wlan0 up
# ./usbwifi.sh --> 改ESSID "AndroidAP"
# wpa --> wpa_tool


配置主機名

1.查看自己主機名
1> echo $HOSTNAME //環境變量方式   容易改動
2> hostname     //命令方式
3> cat /etc/sysconfig/network | grep HOSTNAME


2.設置主機名
/etc/sysconfig/network
HOSTNAME=xxxx.xxxx.com


//要重啟 讓主機名生效
reboot


3.將本機的IP與本機主機名建立連接
/etc/hosts
IP + 主機名  + 主機名的簡稱
192.168.110.xxx xxxx.xxxx.com xxxx

ping 192.168.110.xxxx
ping xxxx.xxxx.com
ping xxxx
都可以ping得通 OK

userID 用戶ID

useradd xxxx
useradd -c xxxx 註釋
useradd -s /bin/bash -c "hello world" xxxx
useradd -g root -G test -s /bin/bash

-c 註釋
-s 指定shell
-g 指定所屬組
-G 指定所屬的附組
-u 指定用戶ID
-d 指定用戶的家目錄
-m 如果不存在創建

userdel xxxx  刪除一個用戶
userdel -r xxxx 刪除一個用戶還有對應的家目錄

usermod -c "hello world" -s /bin/bash -g root -G test -d /home/bbbb xxxx

給一個用戶密碼
passwd xxxx
**
/etc/passwd
用戶ID 
0  root超級用戶
500+ 普通用戶 有家目錄,可以登錄系統
> 0 && < 500 普通用戶 /sbin/nologin
用戶名 有密碼 用戶ID 所屬組ID 註釋  家目錄 指定的shell
root:  x:   0:   0:     root:  /root: /bin/bash


/etc/shadow
用戶名 MD5加密過後的密碼encrypted password
root:$6$hYIUhhNP$u8JDuxPNqr3jNBelzMut5P8FWVMimifq8Ojcywii/OV/gS3iR


date of last password change
J5LJatOWQAp7DTyHzEFB6Bs59Ft7qRKnyptZ/:16246:0:99999:7:::
man 5 shadow


磁盤分區

1.先插入需要分區的磁盤
2.解掛所以自動掛載的磁盤分區
umount /media/*
3.D格磁盤
1> 確認磁盤設備節點
fdisk -l 比如:/dev/sdb1 ==》最終用整個磁盤/dev/sdb
2> D格
dd if=/dev/zero of=/dev/sdb bs=1024 count=1
3> 確認D格有無成功
fdisk -l 如果查看不到子分區則成功
4.寫分區表
1> fdisk /dev/sdb
a 設置某個分區為活動分區
n 增加一個新的分區
d 刪除一個分區
p 打印分區信息
t 改變分區格式
L 打印磁盤格式與對應的ID號 最大0xff
q 退出但是不保存修改
w 寫入分區表到磁盤並退出
2> 確認分區信息是否已經寫入分區表
fdisk -l
如果獲得的分區表信息跟你所分的信息一致。則分區表寫入成功
5. 把相應的分區格式 格式式成相應的文件系統格式
1> 查看具體的分區格式
fdisk -l
2> partx -a /dev/sdb
如果查看不到對應的設備節點
ls /dev/sdb*
/dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4
拔出再插入 , 直到可以看到具體的分區設備節點
3> 格式化文件系統
mkfs.vfat /dev/sdb1
mkfs.vfat /dev/sdb2
mkfs.ext2 /dev/sdb3
mkfs.ext3 /dev/sdb4
註意,在linux系統裏面,是沒有ntfs格式的

6. 拔出再插入,查看自動掛載窗口有沒有四個



進程管理

1.查看當前系統運行的進程
ps -auxf 長 ps -xf 短
snapshot snapshot 快照模式


USER   用戶信息
PID    進程ID號
%CPU   CPU占用率
%MEM 內存占用率
VSZ 虛擬內存
RSS 真實內存
TTY 是否有控制終端
START 開始時間
TIME 運行時間
COMMAND 運行此進程所執行的命令
STAT 進程狀態


D 不可中斷的睡眠(深度睡眠)
S 可中斷的睡眠
R 真在執行的或者是準備就續的進程
T 暫停的進程
X 死掉的進程(不可見)
Z zombie或者defunct process

< 高優先級
N 低優先級
s session leader
L 頁鎖
l muti-thread多線程
+ foreground前臺運行的 相對於background後臺


2.監控模式
top
可以按h來提供幫助


3.殺死一條進程
kill -9 processID
man 7 signal 查看第9號信號

killall
通過進程名字殺死一個或者多個進程

4.pstree
用樹的方式相看進程
只能看到父子關系








服務
yum源查尋
yum search vsftpd
安裝
yum -y install vsftpd
刪除
yum -y remove vsftpd


1.ftp服務
//-------------------------------------
//服務端
file transport proctol
文件傳輸協議

安裝ftp服務
yum -y install vsftpd

默認開啟ftp服務的路徑
/var/ftp/pub

重啟服務
service vsftpd restart

設置開機啟動
chkconfig vsftpd on

給ftp目錄權限
chmod 777 /var/ftp/* -R


保證
防火墻是關的
setup
-> firewall --> 去掉* --> 確定
關掉SElinux
setenforce 0


//----------------------------------------
//客戶端
1.打開firefox --> ftp://192.168.110.xxx
2.位置-->連接到服務器-->輸入ftp服務器的IP-->確定
3.yum -y install lftp
lftp 192.168.110.xxx
->commad 命令
目標機 本機
-> get xxxx -o /root/xxxx
-> exit

//--------------------------------------------------
//yum 源
ls /var/ftp/pub/rhel-server-6.4-i386-dvd.iso


1.將iso裏面的安裝包掛出來
mount -o loop /var/ftp/pub/rhel-server-6.4-i386-dvd.iso /mnt

2.確認已經掛載
df -h
[root@www pub]# df -h
文件系統 容量 已用 可用 已用%% 掛載點
/var/ftp/pub/rhel-server-6.4-i386-dvd.iso
3.0G 3.0G 0 100% /mnt


//配置yum源的角本
// /etc/yum.repos.d/xxxx.repo
// 名字 xxxx可以隨便寫,但是結尾一定要 .repo
// 最好保證裏面只有一個xxxx.repo

3.vim /etc/yum.repos.d/xxxx.repo
[xxxx] //yum源的主題
baseurl=file:///mnt/
enabled=1 //開啟yum源服務
gpgcheck=0 // 檢查密鑰




4.yum clean all // 清yum源的緩存
yum list
如果成功 之前配置的主題




//-------------------------------------
//本地非掛載

1.mount -o loop /var/ftp/pub/rhel-server-6.4-i386-dvd.iso /mnt
2.echo $? 如果是零就OK 或者 df -h 看一下是否有掛載
3.mkdir /yum
4.cp /mnt/* /yum/ -r
5.vim /etc/yum.repos.d/xxxx.repo
[xxxxx]
baseurl=file:///yum/
enabled=1
gpgcheck=0
6.yum clean all
7.yum list


//做一個yum源的服務器
//ftp
服務端
1.yum源發布出去
/var/ftp/pub
2.mkdir /var/ftp/pub/yum
3.cp /yum/* /var/ftp/pub/yum -r
4.service vsftpd restart

客戶端
vim /etc/yum.repos.d/server.repo
[xxxx]
1.先測試服務端的yum源路徑
打開firefox ftp://192.168.110.xxx
baseurl=ftp://192.168.110.254/pub/rhel6.4_32/
enabled=1
gpgcheck=0
2.yum clean all
3.yum list


安裝源碼包
./configure ==> 生成Makefile
make ==> 生成可執行文件
make install ==> 將可執行文件拷到系統相應目錄

清包
make clean ==> 刪除已經編好生成的可執行文件或者中間文件
make distclean ==> 清除包的鏈接關系,最主要是刪除Makefile


註意:
如果包過大
make -j4


nfs 服務
怎麽查看主機發布的nfs服務
showmount -e 192.168.110.xxx

1. mkdir /test 假如/test就是我們需要發布的目錄
2. vim /etc/exports
/test *(rw) *所有IP r 可讀 w 可寫
3. service nfs restart
4. showmount -e 192.168.110.xxx
如果發現
Export list for 192.168.110.254:
/test *
發布成功

客戶端連接主機nfs服務
1.showmount -e 192.168.110.xxx (主機IP)
Export list for 192.168.110.254:
/test *
2. mount -t nfs 192.168.110.xxx:/test /mnt (客戶機目錄)
3.df -h
192.168.110.254:/test
193G 33G 151G 18% /mnt
證明掛載成功

*註意:客戶端
如果處理完事情要及時解掛
umount /mnt
如果沒有及時解掛,只要服務器意外關機,客戶端將死機(慢慢)




//cifs
mount -t cifs 192.168.2.211:/share /mnt
df -h
umount /mnt



ssh
ssh 192.168.110.xxx

禁止
service sshd stop
chkconfig sshd off

開啟
service sshd restart
chkconfig sshd on

遠程拷備
scp
從本機拷給其它機器
scp direcotry/file 192.168.110.xx:/directory/file
passpwd:
從其它機器拷到本機
scp 192.168.110.xxx:/directory/file /directory/file
註意
這些目錄不可以有一個寫錯




掛載U盤
mount /dev/sdb1 /mnt

ntfs格式
裝ntfs包
ntfs-3g /dev/sdb1 /mnt
mount -t ntfs-3g /dev/sdb1 /mnt

打包 解包
xxx.zip xxx.bz2 xxx.gz aaa.xz
xxx.tar.gz xxx.tar.bz2 xxx.tar.xz


打包
zip xxx.zip xxx
//把xxx打包成xxx.zip

gzip xxx ==> xxx.gz
bzip2 xxx ==> xxx.bz2
xz xxx ==> xxx.xz

解包
unzip xxx.zip ==> xxx
gunzip xxx.gz ==> xxx
bunzip2 xxx.bz2 ==> xxx
xz -d xxx.xz ==> xxx
或者
unxz xxx.xz ==> xxx

復合包
xxx.tar.gz xxx.tar.bz2 xxx.tar.xz

復合包打包(嚴格)
tar -cf xxx.tar xxx
或者
tar -cvf xxx.tar xxx
//將xxx打包成xxx.tar
//-c create 創建
//-f file 文件
//-v 打包的目錄或者解壓的目錄可以看得到
//-t 查看包的內容
//-x 解壓

tar -zcvf xxx.tar.gz xxx
直接將xxx打包成xxx.tar.gz

tar -jcvf xxx.tar.bz2 xxx
直接將xxx打包成xxx.tar.bz2

xz xxx.tar ==> xxx.tar.xz

復合包的解包

tar -xvf xxx.tar ==> xxx
tar -zxvf xxx.tar.gz ==> xxx
tar -jxvf xxx.tar.gz ==> xxx
unxz xxx.tar.xz ==> xxx.tar
tar -xvf xxx.tar ==> xxx

bin/startup.sh #啟動tomcat
  bin/shutdown.sh #停止tomcat
  tail -f logs/catalina.out #看tomcat的控制臺輸出

#看是否已經有tomcat在運行了
  ps -ef | grep tomcat
  #如果有,用kill;
  kill -9 pid #pid 為相應的進程號
#直接查看指定端口的進程pid
  netstat -anp|grep 8196

遠程登入mysql
mysql -uroot -p -h192.168.9.161 -P3306


開啟防火墻:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --permanent --zone=public --add-port=8080/udp
firewall-cmd --reload
firewall-cmd --state 查看防火墻狀態
systemctl stop firewalld.service 關閉防火墻

linux開發中常用命令