1 Linux 目錄結構
常用目錄說明
root管理員所在目錄
home普通用戶的主目錄
bin所有的命令可執行文件所在目錄
etc系統配置文件所在的目錄
usrUnix Share Resource,資源目錄,很多軟件就安裝在這個目錄下
2 Linux命令提示符
3 目錄操作命令
cd [OPTION] [DIR]
Change the current directory to dir, 切換當前路徑
dir
.? 當前目錄
.. 上一級目錄
~ 用戶主目錄
- 上一次的目錄
舉個栗子:
切換到系統根目錄? ? cd /
切換到該目錄下usr目錄? ? cd usr
切換到上一層目錄? ? cd ..
切換到用戶主目錄,如果是root管理員,則是到root目錄
cd /root
或:
cd ~
切換到上一個所在的目錄
cd -
mkdir [OPTION] DIRECTORY
Make directories, 創建目錄
舉個栗子:
進入root目錄
cd ~
在root目錄下創建aaa目錄
mkdir aaa
使用.方式的相對路徑,在當前目錄下創建bbb目錄
mkdir ./bbb
在root目錄下,在bbb目錄下創建ccc目錄
mkdir ~/bbb/ccc
使用..在上一級目錄下創建eee目錄
mkdir ../eee
使用絕對路徑在root下創建目錄fff目錄
mkdir /root/fff
【重點】ls [OPTION] [FILE]
List directory contents, 顯示目錄內容
參數
-l
以詳細的方式顯示文件和目錄。ls -l可以縮寫成ll
-a
顯示所有的文件和目錄包含隱藏的文件和目錄
隱藏的文件和目錄以 . 開頭
舉個栗子:
進入root目錄,以精簡形式查詢當前目錄下的內容
cd /root
cd ~
ls
以詳細形式查詢當前目錄下的內容,可以縮寫成ll
ls -l
ll
在當前目錄下創建一個隱藏的目錄.ccc
mkdir .ccc
以精簡形式查詢當前目錄下的所有的內容,包含隱藏文件
ls -a
以詳細形式查詢當前目錄下的隱藏內容,-la和-al都可,也可以使用ll -a
ls -al
ll -a
第一列字母含義
字母含義
ddirectory, 目錄
-文件
l 鏈接,類似快捷方式
find [PATH] [-name pattern]
search for files in a directory hierarchy, 搜索目錄樹上的所有文件
參數
-name pattern
指定要查詢的字符串
* 匹配多個字符
? 匹配1個字符
舉個栗子:
在/root目錄下,查詢當前目錄下所有的文件和目錄
cd /root
find ?-name ? *
查詢/根目錄下(包括子目錄),名以abc開頭的目錄和文件
cd /
find ?-name ? abc*
查詢根目錄即其子目錄下以cc開頭的三個字符的目錄或文件
cd /
find ?-name ? cc?
1.按照文件名查找
(1)find / -name httpd.conf #在根目錄下查找文件httpd.conf,表示在整個硬盤查找
(2)find /etc -name httpd.conf #在/etc目錄下文件httpd.conf
(3)find /etc -name '*srm*' #使用通配符*(0或者任意多個)。表示在/etc目錄下查找文件名中含有字符串‘srm’的文件
(4)find . -name 'srm*' #表示當前目錄下查找文件名開頭是字符串‘srm’的文件
2.按照文件特征查找?
(1)find / -amin -10 # 查找在系統中最后10分鐘訪問的文件(access time)
(2)find / -atime -2 # 查找在系統中最后48小時訪問的文件
(3)find / -empty # 查找在系統中為空的文件或者文件夾
(4)find / -group cat # 查找在系統中屬于 group為cat的文件
(5)find / -mmin -5 # 查找在系統中最后5分鐘里修改過的文件(modify time)
(6)find / -mtime -1 #查找在系統中最后24小時里修改過的文件
(7)find / -user fred #查找在系統中屬于fred這個用戶的文件
(8)find / -size +10000c #查找出大于10000000字節的文件(c:字節,w:雙字,k:KB,M:MB,G:GB)
(9)find /?-size -1000k #查找出小于1000KB的文件
3.使用混合查找方式查找文件
參數有: !,-and(-a),-or(-o)。
(1)find /tmp -size +10000c -and -mtime +2 #在/tmp目錄下查找大于10000字節并在最后2分鐘內修改的文件
?? ?? (2)find / -user fred -or -user george #在/目錄下查找用戶是fred或者george的文件文件
?? ?? (3)find /tmp ! -user panda #在/tmp目錄中查找所有不屬于panda用戶的文件
mv [OPTION] SOURCE DEST
move (rename) files, 移動、重命名文件或目錄
舉個栗子:
將root文件夾下的aaa目錄改成abc
cd /root
mv aaa abc
使用touch創建一個空文件為aaa,再使用mv將aaa文件改名為xyz
touch aaa
mv aaa xyz
cp [OPTION] SOURCE DEST
copy files and directories, 復制文件或目錄
參數
-r? 遞歸復制目錄,連同子目錄一起復制,recursive
舉個栗子:
當前是root目錄,復制/proc/dma文件到root目錄下的bbb目錄中
cp /proc/dma ./bbb
將/etc目錄下所有c開頭的文件復制到root目錄下的bbb目錄下
cp -r /etc/c* /root/bbb
將/etc目錄下所有h開頭的文件和目錄復制到root目錄下的eee目錄,連同子目錄下的內容一起復制
cp -r /etc/h* /root/eee
rm [OPTION] FILE
remove files or directories, 移除文件或目錄
參數
-r, 遞歸地移除目錄中的內容。recursive
-f, 忽略不存在的文件,并且從不向用戶提示。force
舉個栗子:
同時刪除eee目錄下的hostname和hosts文件
rm /root/eee/hostname*
rm /root/eee/hosts
進入root下的bbb目錄,刪除所有文件名csh,任意擴展名的文件
rm csh.*
進入root目錄下的eee目錄,遞歸刪除httpd目錄和所有子目錄的文件,不進行確認,強制刪除。
rm -rf httpd
【常用】man
an interface to the on-line reference manuals, 在線參考手冊
舉個栗子:
查看mkdir命令的參考手冊
查看ls命令的參考手冊
4 文件操作命令
相關命令概要
cat [OPTION] [FILE]
concatenate files and print on the standard output, 顯示文件內容
more [OPTION] FILE
file perusal filter for crt viewing, 在顯示器上閱讀文件的過濾,分頁顯示文件
[Enter] 逐行顯示
[Space] 逐頁顯示
[Q] 退出
head [OPTION] [FILE]
output the first part of files, 輸出文件的開始部分
參數
-n 顯示指定的前n行,默認10行
tail [OPTION] [FILE]
output the last part of files, 輸出文件的末尾部分
-n 顯示指定的后n行,默認10行
less [OPTION] [FILE]
opposite of more, 分頁或翻頁顯示文件內容
參數
-N 顯示行號
[Ctrl + U]向上翻一頁
[PageUp]向上翻一頁
[Ctrl + D]向下翻一頁
[PageDn]向下翻一頁
[Q] 退出
touch [OPTION] FILE
change file timestamps, 修改文件的時間戳,創建一個文本文件,長度是0個字節
舉個栗子:
查看當前目錄下Demo.java文件的全部內容
cat Demo.java
分頁查看當前目錄下Demo.java文件內容,按回車鍵一行一行的看,按空格健一頁一頁的看
more Demo.java
查看當前目錄下Demo.java文件的前10行內容
head Demo.java
查看當前目錄下Demo.java文件的后10行內容
tail Demo.java
查看當前目錄下Demo.java文件的前5行內容
head -n 5 Demo.java
查看當前目錄下Demo.java文件的后5行內容
tail -n 5 Demo.java
使用less命令顯示Demo.java文件,顯示行號
less -N Demo.java
5 vim文本編輯器
vim的三種模式
模式說明
命令模式可以移動光標、刪除字符等操作,打開文件時即進入這個模式
編輯模式在此模式下可以輸入字符,進行編輯等操作
底行模式可以輸入命令對編輯的文件進行查找,保存,退出等操作
vim三種模式的切換
vim命令
命令描述
i在光標的前面插入字符
a在光標的后面插入字符
o在光標的下一行插入字符
yy復制當前行
p如果之前已經復制了這個就可以粘貼
dd刪除當前行
u撤銷前面的操作undo
/字符串在內容中搜索指定的字符串 n:向后繼續查找 N:向前繼續查找
wq保存并退出
q!強制退出,不保存
wq!強制保存退出,用于只讀文件
操作演示
vim Hello.java? 用vim編輯器創建/打開Hello.java文件,這時進入命令模式。
按i鍵,進入編輯模式,輸入以下內容:
publicclassHello{
publicstaticvoidmain(String[]args) {
System.out.println("Hello!");
? }
}
按Esc鍵,進入命令模式,按冒號進入底行模式
輸入:wq回車,表示存盤退出
使用cat Hello.java查看文件的內容
使用vim打開Hello.java文件,進入命令模式。
將光標移動到System.out這一行,按yy復制
按3次p,粘貼這一行三次
publicclassHello{
publicstaticvoidmain(String[]args) {
System.out.println("Hello!");
System.out.println("Hello!");
System.out.println("Hello!");
System.out.println("Hello!");
? }
}
按dd刪除最后一行
按i進入編輯模式
再任意輸入一些內容
在按Esc進入命令,按冒號進入底行模式
輸入q!回車,不存盤強行退出。
使用cat Hello.java發現Hello.java沒有變化
6 壓縮與解壓命令
壓縮文件擴展名
擴展名分類
.zip或.rar在windows下兩種壓縮文件格式
.tar在Linux下打包文件,不一定壓縮
.gz在Linux下壓縮文件
.tar.gz既打包又壓縮
tar
manipulate tape archives, 操作壓縮文件
參數
-c, --create, 壓縮文件
-v, --verbose, 詳細顯示處理的文件
-z, --gzip, --ungzip, 用 gzip 對存檔壓縮或解壓
-f, --file [HOSTNAME:], 指定存檔
-x, --extract, --get, 從存檔展開文件
-C, --directory DIR, 轉到指定的目錄
舉個栗子:
定位于root目錄,將當前目錄下的Hello.java和Hello.txt文件打包成hello.tar文件,并顯示詳細信息。
tar -cvf hello.tar Hello.java Hello.txt
將當前目錄下的Demo.* 打包并壓縮成demo.tar.gz文件,顯示詳細信息。
tar -zcvf demo.tar.gz Demo.*
定位于root目錄下,刪除所有大寫的Hello開頭的文件
rm -rf Hello*
解壓hello.tar到當前目錄
tar -xvf hello.tar
釋放demo.tar.gz文件到abc目錄下
tar -zxvf demo.tar.gz -C abc
7 其它命令
pwd
print name of current/working directory, 顯示當前工作目錄
ps
process status, 查看進程狀態
Linux進程
操作系統啟動的時候自動啟動的進程
由用戶在終端上(命令行中)輸入的進程
Bash進程
每個用戶登錄以后都會分配一個終端操作的進程
這個進程是所有終端命令的父進程,不要隨意終止這個進程
參數
-a, 顯示所有用戶在終端上啟動的進程
-u, 顯示所有用戶在終端啟動的進程的詳細信息
-x, 顯示所有用戶啟動的所有進程
舉個栗子:
在客戶端中顯示當前用戶通過終端啟動的所有進程
ps
在Linux命令行窗口運行vim Hello.txt編輯文件,顯示所有用戶通過終端啟動的所有進程。
ps -a
顯示所有用戶通過終端啟動的所有進程詳細信息
ps -au
顯示所有用戶所有進程詳細信息
ps -aux
輸出說明
列標題說明
%CPUCPU(處理器)使用百分比
%MEM真實內存使用百分比
CMD正被執行的命令的名稱
COMMAND正被執行的命令的完整名稱
PID進程ID
PPID父進程的進程ID
RSS內存駐留空間大小(內存管理)
START定時啟動的時間
STAT狀態代碼(O, R, S, T, Z)
TIME積累CPU時間
TTY控制終端的完整名稱(?表示沒有控制終端,該進程為守護進程)
USER用戶名
VSZ虛擬大小(單位為KB)
kill [-9] signal
terminate a process, 終止進程
參數
-9 強行終止
操作演示
在Linux命令行上使用vim 編輯Hello.txt文件
在shell客戶端,顯示所有用戶通過終端啟動的所有進程,并殺死vim這個進程。
在Linux命令行可以看到進程被終止
在Linux命令行使用ping www.itcast.cn
在shell客戶端,顯示所有用戶通過終端啟動的所有進程,并強行殺死ping這個進程
在Linux命令行可以看到進程被殺掉
grep? [OPTIONS] PATTERN [FILE...]
print lines matching a pattern, 打印匹配給定模式的行
參數
-n, --line-number, 在輸出的每行前面加上它所在的文件中它的行號
-v, --invert-match, 選擇不匹配的行
-i, --ignore-case, 忽略大小寫
舉個栗子:
在Demo.java中搜索close字符串
grep close Demo.java
在Demo.java中搜索close字符串,并且顯示行號
grep close Demo.java -n
在Demo.java中搜索沒有close的行和行號
grep close Demo.java -nv
在Demo.java中忽略大小寫搜索insert字符串并且顯示行號
grep insert Demo.java -ni
|
管道命令
語法
命令1 | 命令2
解釋
將一個命令(命令1)的執行結果做為另一個命令(命令2)的條件輸入
操作演示
分屏顯示/etc目錄所有文件的詳細信息,將ll的輸出做為more的輸入,即分屏顯示。
ll /etc | more
在root目錄下使用ll顯示所有文件的詳細信息,再在顯示結果中使用grep查詢Demo字符串
ll /root | grep Demo
顯示Linux中所有進程的詳細信息,查詢ssh的字符串
ps -ax | grep ssh
shutdown
halt, power-off or reboot the machine, 停止、關閉或重啟機器
參數
now, 立即關機
poweroff
同shutdown now
reboot
重啟系統
8 權限操作
Linux中對每個目錄和文件都做了規定,只能由滿足條件的用戶才能操作這個目錄或文件,這個規定叫權限。
用戶和組的概念
概念解釋
屬主目錄或文件的所有者
屬組所有者所在的組
其他用戶其他用戶和組
權限位
權限字母-權限數字對照
權限字母權限數字說明
r4Read 讀取
w2Write 寫入
x1eXecute 執行
-0沒有權限
權限范圍
權限范圍說明
u? ? User 屬主
g? ? Group 屬組
o? ? Other 其他用戶
a? ? All 上面所有的用戶
權限操作
權限符號說明
+添加權限
=修改權限
-刪除權限
chmod MODE FILE
change file mode bits
示例
添加權限
chmod u+x Demo.java
Demo.java,屬主,添加可運行權限
chmod g+wx Demo.java
chmod a+rwx Demo.java
chmod u+x, o+w Demo.html
修改權限
chmod u=rwx, g=w, o=x Hello.txt
chmod 666 Hello.txt
刪除權限
chmod 000 Demo.java
chmod u-w, g-w, Hello.txt
9 任務調度命令
crontab [OPTION]
maintains crontab files for individual users, 定時執行指定
參數
-l, 顯示當有已經設置好的定時執行的任務
-e, 使用vim編輯任務
-r, 刪除定時任務
定時任務的配置
一行寫一個任務
每個任務有6個列,前面5列是時間,最后1列是要執行的命令
格式說明
分 時 日 月 周 命令
minute表示分鐘,可以是從0到59之間的任何整數。
hour表示小時,可以是從0到23之間的任何整數。
day表示日期,可以是從1到31之間的任何整數。
month表示月份,可以是從1到12之間的任何整數。
week表示星期幾,可以是從0到7之間的任何整數,0或7代表星期日,1-6表示星期一到六。
command要執行的命令
特殊字符
特殊字符說明
星號(*)代表所有可能的值。如:*,用在月上,表示每月執行;用在分上,表示每分執行
逗號(,)用逗號隔開的值指定某幾個時間點。如:1,2,5,用在小時上,表示1點,2點,5點
短橫(-)表示一個整數范圍。如:2-6,用在日上,表示2號到6號
正斜杠(/)指定時間的間隔頻率。如: 0-10/2,用在小時上,表示0點到10點中每兩小時執行一次。 與星號一起使用。如: /10,用在分鐘字段,表示每10分鐘執行一次。
>>指定輸出的設備如: * * * * * date >> /root/mydate.log
* * * * * command
每分鐘執行一次
30 21 * * * command
每天的晚上9點30分
3,15 * * * * command
每小時的第3分和第15分鐘執行
5,10 8-11 * * * command
每天的8點到11點的第5分和第10分鐘
*/2 * * * * command
每過2分鐘執行1次
date
print or set the system date and time, 打印或設置系統日期和時間
第三部分 Linux 深入
1 主機名配置
hostname
show or set the system's host name, 顯示或臨時設置系統的主機名
hostname [HOSTNAME]
臨時設置主機名為HOSTNAME。如果hostname沒有任何參數,顯示主機名。
hostnamectl
control the system hostname, 永久設置系統的主機名
hostnamectl set-hostname [HOSTNAME]
永久設置主機名為HOSTNAME
舉個栗子:
查看當前的主機名
hostname
設置新的主機名為itheima,再查看當前的主機名
hostname itheima
設置新的主機名為itheima,重啟以后仍然有效
hostnamectl set-hostname itheima
2 服務管理
systemctl list-units *.service
顯示已經啟動的所有服務
systemctl start crond【常用】開啟服務
systemctl stop crond【常用】關閉服務
systemctl status crond【常用】顯示服務當前狀態
systemctl restart crond【常用】重啟服務,先關閉服務,再開啟服務
systemctl reload crond重新加載服務,相當于讀取新的配置
systemctl enable crond
設置服務為開機自啟動
systemctl disable crond
取消服務開機啟動
Linux常用服務
firewalld
3 網絡管理
netstat
Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships.
顯示網絡連接,路由表,接口狀態,偽裝連接,網絡鏈路信息和組播成員組。
參數
-n --numberic, 顯示進程的IP地址和端口號
-t -tcp, 只顯示使用TCP協議進程
-l -listening, 只顯示正在網絡監聽的進程(默認選項)
-p -program, 顯示程序的名字和進程的ID
-r -route, 顯示路由表
舉個栗子:
顯示TCP協議的網絡連接
netstat -t
顯示TCP協議和監聽中的網絡連接
netstat -tl
顯示TCP協議和監聽中的網絡連接,顯示IP地址和端口號
netstat -tln
顯示TCP協議和監聽中的網絡連接,顯示IP地址和端口號,顯示程序的名字
netstat -tlnp
顯示路由表
netstat -r
4 網卡配置
設置ip分為2種類型,dchp和static。
dchp是動態獲取ip
static是配置靜態ip
dhcp動態獲取ip,可能ip經常會發生變化,導致客戶端無法連接到。靜態ip配置后就不會發生改變,這樣客戶端連接服務器具有更好的安全性。
關閉網卡
修改/etc/sysconfig/network-scripts/ifcfg-enp0s3,ONBOOT參數設置為"no"
運行命令systemctl restart network
運行命令ping www.itcast.cn,查看外網能否連接
按原步驟,激活網卡
配置靜態IP地址
運行命令netstat -r,查看網關地址
修改/etc/sysconfig/network-scripts/ifconfig-enp0s8
BOOTPROTO=static
IPADDR=192.168.56.102
GATEWAY=192.168.56.0
NETMASK=255.255.255.0
DNS1=114.114.114.114
5 SSH免密登錄
為什么要登錄
在企業中,多臺Linux機器是可以相互之間進行登錄和退出的。用Linux自帶的SSH客戶端命令,可以通過輸入用戶名和密碼的方式登錄到另一臺Linux機器中。
非對稱加密
非對稱加密特點
密鑰成對出現(公鑰、私鑰)
使用公鑰加密,就使用私鑰解密
使用私鑰加密,就使用公鑰解密
SSH
Secure Shell 協議,安全殼協議。用于Linux之間加密登錄一種協議
SSH兩種驗證機制
直接輸入用戶名和密碼的方式
ssh username@ip
免密登錄,直接登錄,不需要輸入用戶名和密碼
如果網絡中Linux服務器比較多,需要記住每臺服務器的密碼也是比較痛苦的事。你無需知道另一臺機器上的帳號和口令,也可以登錄到遠程主機。我們說的SSH免密登錄,就說的是這種方式
ssh-keygen
生成公鑰和私鑰,生成的公鑰和私鑰在/root/.ssh目錄下。id_rsa是私鑰,id_rsa.pub是公鑰
ssh-copy-id
ssh-copy-id root@192.168.56.102
將新生成的密鑰(公鑰)發送到指定服務器。在服務器的/root/.ssh/autorized_keys文件中。
ssh root@192.168.56.102
不需要輸入密碼了
6 用戶管理命令
useradd [OPTION] LOGIN
create a new user or update default new user information, 創建一個新用戶或更新默認新用戶信息,創建好的用戶信息在/etc/passwd文件中
參數
LOGIN 指定創建的用戶名
-m --create-home 創建用戶的同時,在/home下創建用戶的主目錄[默認參數]
-g --gid <GROUP>
創建用戶的同時,指定用戶所在的組。
?
未指定組名:默認就在一個與用戶同名的組中。組名與用戶名相同。
操作演示
進入/home目錄,查看目錄的內容
cd /home
ll
創建用戶Jack,并且創建用戶主目錄
useradd Jack
再次ll查看/home目錄下存在Jack目錄,默認用戶Jack在一個叫Jack的組中。
ll
創建用戶Tom,把用戶放在Jack這個組中,并且創建Tom主目錄
useradd Tom -g Jack
通過ll查看/home目錄下的信息
ll
查看/etc/passwd文件,可以看到創建的用戶信息
more /etc/passwd
passwd [OPTION] [username]
update user's authentication tokens, 更新用戶密碼。
參數
username 只有管理員才可以給指定的用戶設置密碼,默認為當前用戶。
操作演示
設置Jack的密碼為abc123。如果提示無效的密碼,忽略即可,再次輸入同一個密碼,修改成功。
passwd Jack
在Linux控制臺先logout登出。以Jack登錄,注:用戶名和密碼大小寫是敏感的
whoami
print effective userid, 查看自己的用戶名
su [OPTION] [username]
run a command with subtitute user and group ID, 切換用戶
參數
username 指定要切換的用戶名,默認為root
操作演示
當前用戶是root,臨時切換成Jack,不用輸入密碼
cd進入用戶主目錄,pwd顯示當前的目錄,觀察前面的提示符
從Jack用戶切換回root,需要輸入密碼。
cd進入用戶主目錄,pwd顯示當前的目錄
輸入2次exit再回到root用戶
userdel [OPTION] LOGIN
delete a user account and related files, 刪除用戶賬戶和相關文件
參數
LOGIN 指定刪除的用戶名
-r --remove, 刪除用戶的同時,也刪除它的主目錄
操作演示
使用root刪除用戶Tom,同時刪除Tom的主目錄。如果Tom已經登錄,則刪除失敗
在/home目錄下已經找不到Tom主目錄了
usermod [OPTION] LOGIN
modify a user account, 修改用戶帳戶
參數
LOGIN 指定修改前的原用戶名
-l, login NEW_LOGIN 指定修改后的新用戶名
操作演示
確認Jack這個用戶不在線,如果在線需要將Jack登出
修改Jack的登錄名為Rose
usermod -l Rose Jack
修改以后在Linux控制臺,使用Rose重新登錄
7 用戶組管理命令
groupadd [OPTION] GROUP
create a new group, 創建一個新組。在/etc/group文件中,包含了所有創建組的信息
操作演示
添加一個新的組America
查看/etc/group文件,做為主組的用戶不會顯示出來。
usermod [OPTION] LOGIN
modify a user account, 修改用戶帳戶。一個用戶只能有一個主組,可以有多個從組
參數
-g, --gid GROUP
修改用戶的主組
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
修改用戶的從組(附屬組),可以有多個從組
操作演示
進入/home目錄,ll顯示home目錄的內容可以看到Rose是屬于Jack這個組
將Rose這個用戶的主組Jack修改為America組
使用ll顯示/home目錄,查看Rose用戶所屬組名變成了America
創建兩個組:China和Japan
將Rose添加進China和Japan兩個從組中,組名之間使用逗號隔開。
查看/etc/group文件,查看到Rose與組的關系。文件中主組看不到用戶的列表。
gpasswd [OPTION] GROUP
將用戶從附屬組(從組)中刪除
參數
GROUP
指定要刪除的組名
-d, --delete USER
將用戶從附屬組(從組)中刪除
操作演示
把Rose從America這個組中刪除,刪除失敗。
把Rose從China這個組中刪除
查看/etc/group文件,發現Rose已經從China組中刪除
groupmod [OPTION] GROUP
modify a group definition on the system, 修改組的名字
參數
-n, --new-name NEW_GROUP
將組名改成新的組名
操作演示
在/home目錄下ll查看修改前的信息
將Rose的主組名America改成USA
查看/home目錄信息,發現Rose的組名已經改成USA
groupdel [OPTION] GROUP
delete a group, 刪除一個組
參數
GROUP
刪除指定的組
操作演示
刪除USA組,刪除失敗,因為還有Rose把它做為主組
刪除Japan這個組
刪除China這個組
查看/etc/group文件,發現沒有這兩個組的信息了
8 軟件安裝命令
rpm [OPTION]
Red Hat Package Manager, 對linux中已經安裝的軟件進行管理
參數
-v, --verbose
提供更多的詳細信息輸出
-q 軟件名
查詢當前系統是否安裝了指定的軟件
-a
查詢所有已經安裝的軟件
-h
在安裝的過程中顯示進度條 # 50%
-i, --install 軟件名
安裝指定的軟件
操作演示
查看所有安裝的軟件
rpm -qa
查看gcc-c++這個軟件包是否安裝
rpm -q gcc-c++
安裝指定的軟件
rpm -ivh 軟件名
yum [OPTION] [command] [package ...]
Yellowdog Updater Modified, 從指定的服務器自動下載包并且安裝,可以自動處理依賴關系,一次安裝所有依賴的軟件包。
參數
-y 所有的提問都回答yes
命令
install, 安裝軟件
remove, 卸載軟件
舉個栗子:
安裝gcc-c++ 這個安裝包,安裝的提示全部回答yes
yum –y install gcc-c++
第四部分 Linux服務器搭建
1 JDK安裝
配置Java環境
進入“/soft”目錄,解壓jdk到指定目錄/usr/local下
? tar -xvf jdk-8u211-linux-x64.tar.gz -C /usr/local/
查看解壓后的目錄,目錄中有jdk1.8.0_211為jdk解壓的目錄
配置jdk環境變量,打開/etc/profile配置文件,將下面配置拷貝進去。export命令用于將shell變量輸出為環境變量。
注:在linux下以冒號分隔不同的路徑,而windows下是分號。
注:引用變量在linux下是$變量名, 在windows下是%變量名%
/etc/profile
#set java environment
JAVA_HOME=/usr/local/jdk1.8.0_211
CLASSPATH=.:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
重新加載/etc/profile配置文件,并測試
source /etc/profile
判斷JDK是否安裝成功
java -version
javac -version
編寫Hello World程序
Hello.java
publicclassHello{
publicstaticvoidmain(String[]args) {
System.out.println("Hello World!!!");
? ? }
}
編譯成字節碼文件
javac Hello.java
執行Java程序
java Hello
2 MySQL安裝
MySQL在線下載安裝
注:需要連接互聯網,在線mysql的安裝包,5.6的版本大約86M
查看CentOS是否自帶的MySQL,如果已經安裝需要卸載。如果沒有找到,則表示沒有安裝。
rpm -qa | grep mysql
在線獲取CentOS7的mysql的rpm安裝文件,直接執行如下命令
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
這條語句只是下載了一個rpm文件,25K大小
執行安裝命令
rpm -ivh mysql80-community-release-el7-1.noarch.rpm
得到兩個配置文件,在/etc/yum.repos.d目錄下。
mysql-community.repo用于指定下載哪個版本的安裝包
mysql-community-source.repo用于指定下載哪個版本的源碼
修改MySQL的下載配置文件
vim /etc/yum.repos.d/mysql-community.repo
# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysq.com/yum/mysql-5.6-community/el/7/$baseurl/
# 設置為1,表示下載
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
?
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysq.com/yum/mysql-8.0-community/el/7/$baseurl/
# 設置為0,表示不下載
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
在當前目錄/etc/yum.repos.d下執行下面的命令,開始在線下載:客戶端,服務器端,開發的工具包。
yum -y install mysql-community-client mysql-community-server mysql-community-devel
這里需要比較長的時間,要從互聯網上下載86M左右的內容
使用rpm命令,可以查詢到mysql已經安裝好的包
rpm -qa | grep mysql
啟動MySQL服務并登錄
啟動mysql的服務
systemctl start mysqld
將mysql加到系統服務中并設置開機啟動
systemctl enable mysqld
登錄mysql,root用戶默認沒有密碼
mysql -u root -p
在mysql中修改自己的密碼
set password = password('root');
設置遠程訪問權限
開啟mysql的遠程登錄權限,默認情況下mysql為安全起見,不支持遠程登錄mysql,所以需要設置開啟,并且刷新權限緩存。
遠程登錄mysql的權限登錄mysql后輸入如下命令
grant all privileges on *.* to 'root'@'%' identified by 'root';
flush privileges;
開放Linux的對外訪問的端口3306
#開放3306端口
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
?
#開放的端口永久保存到防火墻
firewall-cmd --zone=public --add-port=3306/tcp --permanent
?
#重啟防火墻
systemctl restart firewalld
客戶端Windows連接MySQL
在本地Windows系統使用Navicat Premium軟件連接虛擬機中的Linux系統安裝的MySQL
3 Tomcat安裝與項目發布
安裝步驟
解壓Tomcat到/usr/local下
tar -xvf apache-tomcat-8.5.27.tar.gz? -C /usr/local/
開放Linux的對外訪問的端口8080
firewall-cmd --zone=public --add-port=8080/tcp --permanent
重啟防火墻
systemctl restart firewalld
進入bin目錄,啟動Tomcat
chmod +x *.sh
?
./startup.sh
在Windows下打開瀏覽器訪問Linux的8080端口
進入bin目錄下,關閉服務器。關閉服務器以后,瀏覽器不能再訪問。
./shutdown.sh
修改mysql底層碼表
問題
由于mysql軟件底層碼表使用的不是utf-8,導致執行sql語句中文亂碼。需要設置客戶端和服務器端的編碼為utf-8
解決方案
修改mysql的配置文件
vim /etc/my.cnf
在mysqld條目下增加以下配置,指定服務器的字符集為utf-8
[mysqld]
?character-set-server=utf8
增加客戶端的默認字符集的配置,指定為utf-8,將下面的配置放到文件的結尾處
[client]
?default-character-set=utf8
文件保存退出后,重啟mysql服務
systemctl restart mysqld