linux學習

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容