Linux-服務(wù)+網(wǎng)絡(luò)端口號(hào)

1、Linux-服務(wù)+網(wǎng)絡(luò)端口號(hào)

服務(wù):一般在后臺(tái)運(yùn)行

centos6有7種運(yùn)行級(jí)別,系統(tǒng)啟動(dòng)時(shí)會(huì)按照配置的一個(gè)運(yùn)行級(jí)別啟動(dòng),然后使用init.d再根據(jù)此運(yùn)行級(jí)別去判斷服務(wù)是否在此級(jí)別中啟動(dòng)。到centos7時(shí)只保留了3和5

1.1 在centos6中如何管理服務(wù)(centos7也兼容6的服務(wù)管理命令)

1-? chkconfig? --list? ? :查看服務(wù)運(yùn)行級(jí)別

2-? service? firewalld? status? 查詢服務(wù)的狀態(tài)

3-? service firewalld start? 啟動(dòng)服務(wù)

4- service? firewalld? stop? 停止服務(wù)

防火墻,端口號(hào)一般都被防火墻過(guò)濾掉,只暴露22端口號(hào)

5-? ll? /etc/init.d/? 查看init進(jìn)程管理的服務(wù)文件夾

6-? chkconfig --level 2 network off? 設(shè)置指定的服務(wù)在指定運(yùn)行級(jí)別關(guān)閉

7- chkconfig --level 2 network on? ? 設(shè)置指定服務(wù)在指定運(yùn)行級(jí)別啟動(dòng)

1.2 在centos7中管理服務(wù)(centos7天字第一號(hào)進(jìn)程是systemd,只有3和5兩個(gè)運(yùn)行級(jí)別)

1- systemctl list-unit-files? 查看所有的服務(wù)列表

ctrl+c 退出列表

查詢指定的服務(wù):systemctl? list-unit-files |grep firewalld

2- systemctl status 服務(wù)名 :查看服務(wù)器的狀態(tài)

3- systemctl start 服務(wù)名? :?jiǎn)?dòng)指定服務(wù)

4- systemctl? stop 服務(wù)名:停止服務(wù)

5- systemctl? diable 服務(wù)名:設(shè)置服務(wù)開(kāi)機(jī)禁止啟動(dòng)

6- systemctl enable 服務(wù)名: 設(shè)置服務(wù)開(kāi)機(jī)自啟

7-? systemctl get-default : 查看當(dāng)前系統(tǒng)的運(yùn)行級(jí)別

8- systemctl set-default? multi-user.target/graphical.target: 設(shè)置系統(tǒng)的運(yùn)行級(jí)別

1.3? 網(wǎng)絡(luò)端口號(hào)查詢

netstat? -anp | grep? 端口號(hào)

將springboot項(xiàng)目上傳到虛擬機(jī)的/opt目錄下

java -jar xxxx.jar?

主機(jī)瀏覽器訪問(wèn):http://虛擬機(jī)ip地址:8080/hello

如果虛擬機(jī)控制臺(tái)沒(méi)有報(bào)錯(cuò),虛擬機(jī)防火墻將請(qǐng)求攔截了

netstat -anp|grep 8080

kill -9 1490 :殺死占用端口號(hào)的進(jìn)程

2、Linux-用戶權(quán)限命令(了解)

id? 用戶名: 查看用戶

useradd? 用戶名:新增用戶

通過(guò)useradd的方式添加的用戶都是普通用戶,所有的用戶的家目錄都會(huì)創(chuàng)建在/home目錄下

passwd? 用戶名:設(shè)置密碼

whoami: 查看當(dāng)前正在使用系統(tǒng)的用戶

who am i :查看登錄的用戶

su 用戶名:? 切換用戶

從超級(jí)管理員切換到普通用戶不用輸入密碼

從普通用戶到root需要輸入密碼

userdel -r? 用戶名:刪除用戶和他的/home目錄下的家目錄文件

groupadd? 組名: 創(chuàng)建用戶組

usermod -g? 組名? 用戶名: 將用戶添加到組中

useradd -g 組名? 新用戶名:新創(chuàng)建用戶并分配到組中

groupdel 組名:刪除組

groupmod -n 新組名 舊組名:修改組名

/etc/passwd :存儲(chǔ)用戶的信息

/etc/shadow:存儲(chǔ)用戶的影子信息[密碼]

/etc/group :組

權(quán)限:


列表中的第一列代表文件類型權(quán)限

代表權(quán)限的第一列除了.,剩下10位

第一位:代表文件類型? d代表文件夾,-代表文件, l代表鏈接

第2~4位: u 代表文件擁有者的權(quán)限

rwx:? ? 如果使用-代表其中一個(gè),就表示沒(méi)有這個(gè)權(quán)限(r-x? 可讀可執(zhí)行? 不能寫)

r:read? 讀權(quán)限? , w:write寫權(quán)限 , x:excute執(zhí)行權(quán)限

第5~7位: g 代表文件擁有者所在組的成員擁有的權(quán)限

第8~10位:o 代表和文件擁有者不再同一個(gè)組的其他成員的權(quán)限

修改文件夾的權(quán)限:

第一種(不推薦):直接使用? rwx表示權(quán)限進(jìn)行設(shè)置

chmod? g=rx? laohan? :添加權(quán)限

chmod g-rx? laohan:刪除laohan文件夾的組的權(quán)限

第二種(推薦):將權(quán)限使用數(shù)字描述

r=4? w=2? x=1

chmod 750? laohan : 第一組權(quán)限全部設(shè)置,第二組權(quán)限設(shè)置rx,第三組沒(méi)有權(quán)限

第三列代表文件的擁有者

第四列代表文件擁有者所在的組

chgrp? 組名? 文件夾名:修改文件夾所在組

chown -R? 用戶名? 文件夾名:遞歸修改文件夾和他內(nèi)部所有文件的擁有者

3、Linux-安裝卸載命令

3.1 本地安裝

rpm? -qa |grep? -i? firewalld? :查詢已安裝的程序,并忽略大小寫篩選結(jié)果

rpm -e? 安裝包名:? 卸載已安裝的程序

rpm -ivh? 安裝包名: 安裝程序

安裝操作系統(tǒng)時(shí),系統(tǒng)壓縮包自帶了非常多的應(yīng)用,可以在光驅(qū)加載的ISO鏡像中找到火狐瀏覽器的安裝包(/run/media/root/CentOS 7 x86_64/Packages)

cd? /run/media/root/CentOS 7 x86_64/Packages

?

rpm -ivh firefox-52.2.0-2.el7.centos.x86_64.rpm

3.2 遠(yuǎn)程聯(lián)網(wǎng)安裝

centos提供了中央軟件庫(kù),可以通過(guò)yum命令遠(yuǎn)程連接下載程序自動(dòng)安裝

yum? list |grep? -i? firefox:? 聯(lián)網(wǎng)搜索指定的程序安裝包

yum? install? firefox.x86_64? : 安裝指定的程序

4、Linux-開(kāi)發(fā)環(huán)境搭建

4.1 jdk

1、拷貝課件中的已經(jīng)下載好的jdk到虛擬機(jī)的/opt目錄下

2、切換到opt目錄下,解壓縮壓縮包

tar -zxvf? 壓縮包名 :解壓縮所有的壓縮包

jdk解壓可用,無(wú)需安裝,但是jdk的命令在bin目錄下[/opt/jdk1.8.0_152/bin]

在控制臺(tái)執(zhí)行jdk的命令時(shí),系統(tǒng)默認(rèn)從path環(huán)境變量中查找對(duì)應(yīng)的命令,我們自己解壓的jdk沒(méi)有配置到環(huán)境變量中,所以不能使用


3、將自己解壓的jdk的bin目錄配置到linux系統(tǒng)的環(huán)境變量中

vim /etc/profile

在文件最后:shift+g

JAVA_HOME=/opt/jdk1.8.0_152

PATH=/opt/jdk1.8.0_152/bin:$PATH

exportJAVA_HOME PATH

source /etc/profile:重新加載環(huán)境變量

====? 啟動(dòng)tomcat時(shí)

4.2 mysql

1、檢查是否存在已安裝的mysql

[root@atguigu bin]# rpm -qa|grep -i maria

mariadb-libs-5.5.56-2.el7.x86_64

2、卸載已安裝的mysql[mysql安裝時(shí)會(huì)安裝其他的多個(gè)依賴]

rpm -e --nodeps mariadb-libs

3、檢查mysql以后要使用的文件夾的權(quán)限[/tmp]

chmod 777 /tmp

4、安裝mysql

cd /opt/MySQL/

rpm -ivh MySQL-client-5.5.54-1.linux2.6.x86_64.rpm

rpm -ivh MySQL-server-5.5.54-1.linux2.6.x86_64.rpm

5、檢查是否安裝成功

rpm -qa|grep -i mysql

6、使用mysql客戶端連接mysql服務(wù)端

? 如果報(bào)以下錯(cuò)誤,表示mysql服務(wù)沒(méi)有啟動(dòng)

systemctl start mysql

ps -aux|grep -i mysql

//連接mysql,初始化安裝mysql沒(méi)有密碼

mysql -hlocalhost -P3306 -uroot -p

7、修改mysql編碼

//連接mysql后,查看mysql的字符編碼

show variables like '%char%';

//mysql默認(rèn)編碼為latin1,需要修改為UTF-8

//mysql安裝后,配置文件保存在 /usr/share/mysql/my-huge.cnf

linuxmysql啟動(dòng)時(shí),優(yōu)先在/etc下查找my.cnf配置文件作為mysql的配置,如果/etc下沒(méi)有此文件,mysql再到/usr/share/mysql/my-huge.cnf.

//將my-huge配置文件拷貝到/etc下一份,并改名為my.cnf

cp /usr/share/mysql/my-huge.cnf /etc/my.cnf

//修改/etc/my.cnf,設(shè)置mysql的編碼格式為utf-8

在17行[client]下添加

default-character-set=utf8

在26行[mysqld]下添加

character_set_server=utf8

character_set_client=utf8

collation-server=utf8_general_ci

在138行[mysql]添加

default-character-set=utf8

保存退出

重啟mysql服務(wù)加載修改后的配置文件

service? mysql restart

mysql -uroot -p


8、修改mysql密碼

mysql5.5 密碼存在mysql 庫(kù)中的user表中

mysql保存用戶信息時(shí)存在mysql.user表中

host代表ip地址,user代表賬號(hào),password代表密碼,xxx_priv 代表權(quán)限

訪問(wèn)mysql時(shí),mysql識(shí)別用戶是通過(guò) 登錄賬號(hào)+登錄時(shí)的ip地址組合判斷賬號(hào)

root@localhost

刪除localhost? root以外的其他用戶: delete語(yǔ)句+條件刪除

修改用戶密碼:

select host ,user,password , select_priv? from mysql.user;

update mysql.user set password = password('123123');

或者 set password=password('123456');

?

修改后需要重啟mysql服務(wù): service mysql restart

9、遠(yuǎn)程連接mysql[主機(jī)使用sqlyog去連接虛擬機(jī)中的mysql]

原因: mysql? user表中,只有l(wèi)ocalhost地址才可以使用root用戶連接mysql服務(wù)

修改user表中的root@localhost用戶,將host修改為%(通配符,統(tǒng)配所用)

重啟mysql,再次使用sqlyog遠(yuǎn)程連接

10、安裝web測(cè)試工具? ab

使用yum安裝: yum install -y? httpd-tools

使用:

ab --help

ab -n8000 -c800? http://192.168.1.130:8080/hello

5、Nosql數(shù)據(jù)庫(kù)簡(jiǎn)介

6、redis簡(jiǎn)介

redis之前的版本只支持linux

只有l(wèi)inux才能最優(yōu)化的使用redis

7、redis安裝+啟動(dòng)停止

7.1 將redis安裝包拷貝到 虛擬機(jī)的/opt目錄下

7.2 解壓縮redis的壓縮包:tar -zxvf redis.tar.gz


7.3 查看redis的文件夾發(fā)現(xiàn)解壓之后的src是redis的源碼,需要先編譯才能安裝

redis是使用c語(yǔ)言開(kāi)發(fā)的,需要使用c語(yǔ)言的編譯命令

在redis目錄下執(zhí)行:make命令時(shí),報(bào)錯(cuò),原因:系統(tǒng)中沒(méi)有安裝c語(yǔ)言的環(huán)境

1、安裝c語(yǔ)言和c++的語(yǔ)言環(huán)境

yum install -y gcc

yum install -y gcc-c++

gcc -v

g++ -v

2、刪除上次make產(chǎn)生的錯(cuò)誤文件

make distclean

3、再執(zhí)行make進(jìn)行編譯

4、再執(zhí)行安裝命令: make install

5、如果執(zhí)行? redis-server? 能夠看到redis的啟動(dòng)界面,就代表redis安裝成功

ctrl+c? 可以關(guān)閉redis-server

redis安裝之后,命令存放在usr/local/bin下,命令可以在任意的地方執(zhí)行

redis-server? :redis服務(wù)端啟動(dòng)命令

redis-cli? :redis客戶端啟動(dòng)的命令

8、修改redis為后臺(tái)啟動(dòng)

redis默認(rèn)前臺(tái)啟動(dòng)(阻塞啟動(dòng))

8.1 在/下創(chuàng)建存放redis配置文件的文件夾

mkdir? /myredis

8.2 拷貝redis的配置文件到/myredis目錄下

? ? ? cp /opt/redis-4.0.0/redis.conf /myredis/

8.3 編輯 /myredis/redis.conf? 設(shè)置后臺(tái)啟動(dòng)

vim? /myredis/redis.conf

136行設(shè)置daemonize? 改為yes

保存退出

8.4 指定配置文件啟動(dòng)redis服務(wù)

redis-server /myredis/redis.conf

服務(wù)端默認(rèn)端口號(hào):6379

8.5 redis客戶端連接redis?

redis-cli? 默認(rèn)連接本機(jī)的6379端口號(hào)的redis服務(wù)端

ctrl+c退出redis-cli連接

redis-cli -h 127.0.0.1 -p 6379 :連接指定ip指定端口的redis服務(wù)


8.6 關(guān)閉redis服務(wù)

在redis-cli的連接中,ctrl+c只會(huì)關(guān)閉redis客戶端

方式1: 在linux命令中執(zhí)行? redis-cli? -h 127.0.0.1 -p 6379 shutdown

方式2:如果在redis-cli的連接中? shutdown

方式3: 可以通過(guò)redis進(jìn)程id殺死進(jìn)程? kill? 進(jìn)程id

8.7 redis簡(jiǎn)單使用+特點(diǎn)

redis默認(rèn)有16個(gè)庫(kù)。一般使用默認(rèn)的索引為0的庫(kù):select 0

dbsize? :查看redis存儲(chǔ)數(shù)據(jù)的條數(shù)

flushdb? : 清空當(dāng)前庫(kù)(慎用)

flushall:? 清空redis所有的庫(kù)

內(nèi)存數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)都是在內(nèi)存中操作,內(nèi)存操作速度非???,每個(gè)命令執(zhí)行時(shí)的時(shí)間短

Redis是單線程+多路IO復(fù)用技術(shù)

Memcached 是串行+多線程的方式

redis和Memcached三點(diǎn)不同: 支持多數(shù)據(jù)類型,支持持久化,單線程+多路IO復(fù)用

9、redis-key操作

1、查看所有的鍵:keys *

2、判斷某個(gè)鍵是否存在: exists? key?

返回1代表存在,0代表不存在

3、查看鍵對(duì)應(yīng)值的類型: type? key

4、刪除指定的鍵(鍵在值在,鍵光值亡): del key

5、給鍵設(shè)置過(guò)期時(shí)間:? expire key? seconds

6、查看鍵的過(guò)期時(shí)間:? ttl? key

返回>=0的數(shù)字,代表剩余數(shù)字對(duì)應(yīng)的秒數(shù)

返回-2 ,代表鍵已過(guò)期被刪除

返回-1 ,代表鍵永不過(guò)期

10、redis-五大數(shù)據(jù)類型-string

redis最常使用的數(shù)據(jù)類型就是string類型: java對(duì)象可以轉(zhuǎn)為字符串,圖片也可以轉(zhuǎn)為圖片

redis中string類型的大小最大可以為512m,redis的字符串二進(jìn)制安全

1、向redis中存入string鍵值對(duì):set? k? v

如果鍵相同,后設(shè)置的值會(huì)覆蓋之前的

2、獲取redis中指定鍵的值:? get? k

3、給redis中指定鍵的值追加內(nèi)容: append? k? ? appendStr


4、獲取鍵的值的長(zhǎng)度:? strlen? key

5、當(dāng)鍵不存在時(shí)才設(shè)置鍵值對(duì):? setnx? k? ? v

分布式鎖

6、設(shè)置值自增1? :? incr? k? ?

如果k的值已存在,必須時(shí)整形才可以自增

如果k不存在,默認(rèn)在0的基礎(chǔ)上+1

應(yīng)用場(chǎng)景: 計(jì)數(shù)器、密碼今天輸錯(cuò)的次數(shù)、秒殺庫(kù)存自減

7、設(shè)置值自減1 :? decr? k

8、自定義步長(zhǎng)增減:? incrby? k? count , decrby? k? count

9、設(shè)置鍵值對(duì)同時(shí)設(shè)置過(guò)期時(shí)間: setex? key? secods? val

使用場(chǎng)景:? 保存手機(jī)驗(yàn)證碼

10、批量操作

1、批量存入多個(gè)鍵值對(duì): mset k v k? v ....

2、批量獲取多個(gè)鍵的值: mget k1 k2 k3...

3、批量設(shè)置鍵值對(duì)當(dāng)鍵不存在時(shí):? msetnx k1 v1 k2 v2...

當(dāng)有一個(gè)鍵如果存在時(shí),所有的數(shù)據(jù)都保存失敗

所有的鍵都不存在時(shí),才可以存儲(chǔ)成功

redis命令具有原子性,命令執(zhí)行時(shí),必須成功或者失敗

java中的i++是否是原子操作?

不是,執(zhí)行時(shí),分為三步:先獲取i的變量的值,執(zhí)行i++操作,將計(jì)算后的結(jié)果設(shè)置到內(nèi)存中

i=0;兩個(gè)線程分別對(duì)i進(jìn)行++100次,值是多少?2~200

11、獲取值指定范圍內(nèi)的內(nèi)容:getrange? k? ? start? end

獲取時(shí),start和end索引都包含

end如果是-1? 代表獲取到最后

12、替換字符串指定范圍的內(nèi)容:setrange? k? start? ? replacestr

13、設(shè)置值并返回被替換的內(nèi)容:getset k? newVal?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容