Linux-服务+网络端口号

1、Linux-服务+网络端口号

服务:一般在后台运行

centos6有7种运行级别,系统启动时会按照配置的一个运行级别启动,然后使用init.d再根据此运行级别去判断服务是否在此级别中启动。到centos7时只保留了3和5

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

1-  chkconfig  --list    :查看服务运行级别

2-  service  firewalld  status  查询服务的状态

3-  service firewalld start  启动服务

4- service  firewalld  stop  停止服务

防火墙,端口号一般都被防火墙过滤掉,只暴露22端口号

5-  ll  /etc/init.d/  查看init进程管理的服务文件夹

6-  chkconfig --level 2 network off  设置指定的服务在指定运行级别关闭

7- chkconfig --level 2 network on    设置指定服务在指定运行级别启动

1.2 在centos7中管理服务(centos7天字第一号进程是systemd,只有3和5两个运行级别)

1- systemctl list-unit-files  查看所有的服务列表

ctrl+c 退出列表

查询指定的服务:systemctl  list-unit-files |grep firewalld

2- systemctl status 服务名 :查看服务器的状态

3- systemctl start 服务名  :启动指定服务

4- systemctl  stop 服务名:停止服务

5- systemctl  diable 服务名:设置服务开机禁止启动

6- systemctl enable 服务名: 设置服务开机自启

7-  systemctl get-default : 查看当前系统的运行级别

8- systemctl set-default  multi-user.target/graphical.target: 设置系统的运行级别

1.3  网络端口号查询

netstat  -anp | grep  端口号

将springboot项目上传到虚拟机的/opt目录下

java -jar xxxx.jar 

主机浏览器访问:http://虚拟机ip地址:8080/hello

如果虚拟机控制台没有报错,虚拟机防火墙将请求拦截了

netstat -anp|grep 8080

kill -9 1490 :杀死占用端口号的进程

2、Linux-用户权限命令(了解)

id  用户名: 查看用户

useradd  用户名:新增用户

通过useradd的方式添加的用户都是普通用户,所有的用户的家目录都会创建在/home目录下

passwd  用户名:设置密码

whoami: 查看当前正在使用系统的用户

who am i :查看登录的用户

su 用户名:  切换用户

从超级管理员切换到普通用户不用输入密码

从普通用户到root需要输入密码

userdel -r  用户名:删除用户和他的/home目录下的家目录文件

groupadd  组名: 创建用户组

usermod -g  组名  用户名: 将用户添加到组中

useradd -g 组名  新用户名:新创建用户并分配到组中

groupdel 组名:删除组

groupmod -n 新组名 旧组名:修改组名

/etc/passwd :存储用户的信息

/etc/shadow:存储用户的影子信息[密码]

/etc/group :组

权限:


列表中的第一列代表文件类型权限

代表权限的第一列除了.,剩下10位

第一位:代表文件类型  d代表文件夹,-代表文件, l代表链接

第2~4位: u 代表文件拥有者的权限

rwx:    如果使用-代表其中一个,就表示没有这个权限(r-x  可读可执行  不能写)

r:read  读权限  , w:write写权限 , x:excute执行权限

第5~7位: g 代表文件拥有者所在组的成员拥有的权限

第8~10位:o 代表和文件拥有者不再同一个组的其他成员的权限

修改文件夹的权限:

第一种(不推荐):直接使用  rwx表示权限进行设置

chmod  g=rx  laohan  :添加权限

chmod g-rx  laohan:删除laohan文件夹的组的权限

第二种(推荐):将权限使用数字描述

r=4  w=2  x=1

chmod 750  laohan : 第一组权限全部设置,第二组权限设置rx,第三组没有权限

第三列代表文件的拥有者

第四列代表文件拥有者所在的组

chgrp  组名  文件夹名:修改文件夹所在组

chown -R  用户名  文件夹名:递归修改文件夹和他内部所有文件的拥有者

3、Linux-安装卸载命令

3.1 本地安装

rpm  -qa |grep  -i  firewalld  :查询已安装的程序,并忽略大小写筛选结果

rpm -e  安装包名:  卸载已安装的程序

rpm -ivh  安装包名: 安装程序

安装操作系统时,系统压缩包自带了非常多的应用,可以在光驱加载的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 远程联网安装

centos提供了中央软件库,可以通过yum命令远程连接下载程序自动安装

yum  list |grep  -i  firefox:  联网搜索指定的程序安装包

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

4、Linux-开发环境搭建

4.1 jdk

1、拷贝课件中的已经下载好的jdk到虚拟机的/opt目录下

2、切换到opt目录下,解压缩压缩包

tar -zxvf  压缩包名 :解压缩所有的压缩包

jdk解压可用,无需安装,但是jdk的命令在bin目录下[/opt/jdk1.8.0_152/bin]

在控制台执行jdk的命令时,系统默认从path环境变量中查找对应的命令,我们自己解压的jdk没有配置到环境变量中,所以不能使用


3、将自己解压的jdk的bin目录配置到linux系统的环境变量中

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:重新加载环境变量

====  启动tomcat时

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安装时会安装其他的多个依赖]

rpm -e --nodeps mariadb-libs

3、检查mysql以后要使用的文件夹的权限[/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服务端

  如果报以下错误,表示mysql服务没有启动

systemctl start mysql

ps -aux|grep -i mysql

//连接mysql,初始化安装mysql没有密码

mysql -hlocalhost -P3306 -uroot -p

7、修改mysql编码

//连接mysql后,查看mysql的字符编码

show variables like '%char%';

//mysql默认编码为latin1,需要修改为UTF-8

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

linuxmysql启动时,优先在/etc下查找my.cnf配置文件作为mysql的配置,如果/etc下没有此文件,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,设置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服务加载修改后的配置文件

service  mysql restart

mysql -uroot -p


8、修改mysql密码

mysql5.5 密码存在mysql 库中的user表中

mysql保存用户信息时存在mysql.user表中

host代表ip地址,user代表账号,password代表密码,xxx_priv 代表权限

访问mysql时,mysql识别用户是通过 登录账号+登录时的ip地址组合判断账号

root@localhost

删除localhost  root以外的其他用户: delete语句+条件删除

修改用户密码:

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

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

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

修改后需要重启mysql服务: service mysql restart

9、远程连接mysql[主机使用sqlyog去连接虚拟机中的mysql]

原因: mysql  user表中,只有localhost地址才可以使用root用户连接mysql服务

修改user表中的root@localhost用户,将host修改为%(通配符,统配所用)

重启mysql,再次使用sqlyog远程连接

10、安装web测试工具  ab

使用yum安装: yum install -y  httpd-tools

使用:

ab --help

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

5、Nosql数据库简介

6、redis简介

redis之前的版本只支持linux

只有linux才能最优化的使用redis

7、redis安装+启动停止

7.1 将redis安装包拷贝到 虚拟机的/opt目录下

7.2 解压缩redis的压缩包:tar -zxvf redis.tar.gz


7.3 查看redis的文件夹发现解压之后的src是redis的源码,需要先编译才能安装

redis是使用c语言开发的,需要使用c语言的编译命令

在redis目录下执行:make命令时,报错,原因:系统中没有安装c语言的环境

1、安装c语言和c++的语言环境

yum install -y gcc

yum install -y gcc-c++

gcc -v

g++ -v

2、删除上次make产生的错误文件

make distclean

3、再执行make进行编译

4、再执行安装命令: make install

5、如果执行  redis-server  能够看到redis的启动界面,就代表redis安装成功

ctrl+c  可以关闭redis-server

redis安装之后,命令存放在usr/local/bin下,命令可以在任意的地方执行

redis-server  :redis服务端启动命令

redis-cli  :redis客户端启动的命令

8、修改redis为后台启动

redis默认前台启动(阻塞启动)

8.1 在/下创建存放redis配置文件的文件夹

mkdir  /myredis

8.2 拷贝redis的配置文件到/myredis目录下

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

8.3 编辑 /myredis/redis.conf  设置后台启动

vim  /myredis/redis.conf

136行设置daemonize  改为yes

保存退出

8.4 指定配置文件启动redis服务

redis-server /myredis/redis.conf

服务端默认端口号:6379

8.5 redis客户端连接redis 

redis-cli  默认连接本机的6379端口号的redis服务端

ctrl+c退出redis-cli连接

redis-cli -h 127.0.0.1 -p 6379 :连接指定ip指定端口的redis服务


8.6 关闭redis服务

在redis-cli的连接中,ctrl+c只会关闭redis客户端

方式1: 在linux命令中执行  redis-cli  -h 127.0.0.1 -p 6379 shutdown

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

方式3: 可以通过redis进程id杀死进程  kill  进程id

8.7 redis简单使用+特点

redis默认有16个库。一般使用默认的索引为0的库:select 0

dbsize  :查看redis存储数据的条数

flushdb  : 清空当前库(慎用)

flushall:  清空redis所有的库

内存数据库存储数据都是在内存中操作,内存操作速度非常快,每个命令执行时的时间短

Redis是单线程+多路IO复用技术

Memcached 是串行+多线程的方式

redis和Memcached三点不同: 支持多数据类型,支持持久化,单线程+多路IO复用

9、redis-key操作

1、查看所有的键:keys *

2、判断某个键是否存在: exists  key 

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

3、查看键对应值的类型: type  key

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

5、给键设置过期时间:  expire key  seconds

6、查看键的过期时间:  ttl  key

返回>=0的数字,代表剩余数字对应的秒数

返回-2 ,代表键已过期被删除

返回-1 ,代表键永不过期

10、redis-五大数据类型-string

redis最常使用的数据类型就是string类型: java对象可以转为字符串,图片也可以转为图片

redis中string类型的大小最大可以为512m,redis的字符串二进制安全

1、向redis中存入string键值对:set  k  v

如果键相同,后设置的值会覆盖之前的

2、获取redis中指定键的值:  get  k

3、给redis中指定键的值追加内容: append  k    appendStr


4、获取键的值的长度:  strlen  key

5、当键不存在时才设置键值对:  setnx  k    v

分布式锁

6、设置值自增1  :  incr  k   

如果k的值已存在,必须时整形才可以自增

如果k不存在,默认在0的基础上+1

应用场景: 计数器、密码今天输错的次数、秒杀库存自减

7、设置值自减1 :  decr  k

8、自定义步长增减:  incrby  k  count , decrby  k  count

9、设置键值对同时设置过期时间: setex  key  secods  val

使用场景:  保存手机验证码

10、批量操作

1、批量存入多个键值对: mset k v k  v ....

2、批量获取多个键的值: mget k1 k2 k3...

3、批量设置键值对当键不存在时:  msetnx k1 v1 k2 v2...

当有一个键如果存在时,所有的数据都保存失败

所有的键都不存在时,才可以存储成功

redis命令具有原子性,命令执行时,必须成功或者失败

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

不是,执行时,分为三步:先获取i的变量的值,执行i++操作,将计算后的结果设置到内存中

i=0;两个线程分别对i进行++100次,值是多少?2~200

11、获取值指定范围内的内容:getrange  k    start  end

获取时,start和end索引都包含

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

12、替换字符串指定范围的内容:setrange  k  start    replacestr

13、设置值并返回被替换的内容:getset k  newVal 

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350