linux開發常用命令

這樣的宋哥哥發表於2020-11-06

經常使用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 對一個檔案加密碼   不輸入密碼就是取消
:! 跳出vim執行命令
: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 6 6hYIUhhNP$u8JDuxPNqr3jNBelzMut5P8FWVMimifq8Ojcywii/OV/gS3iR

                                 date of last password change  

J5LJatOWQAp7DTyHzEFB6Bs59Ft7qRKnyptZ/:16246:0:99999:7:::

磁碟分割槽

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格式的

  1. 拔出再插入,檢視自動掛載視窗有沒有四個

程式管理

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 關閉防火牆

相關文章