[toc]
记录自己开发过程中,一些运维工作与命令,欢迎补充指错!
基础服务
如何开启22好端口
22端口bai是ssh服务的,你只要启动ssh服务就可以了,du可以执行命令“/etc/init.d/sshd start”。然后用netstat -antulp |zhi grep ssh看是否能看到相关信息就可dao以了。
netstat -aptn |grep 4000 查看端口q
Linux 网络配置方法 nmtui 配置
查看端口情况
1,lsof -i:端口号
lsof -i 用以显示符合条件的进程情况,lsof(list open files)是一个列出当前系统打开文件的工具。以root用户来执行lsof -i命令,如下图
lsof输出的每列的意义是:
COMMAND:进程的名称或者进程开启的方式
PID:进程id
USER:进程所有者
FD:文件描述符
TYPE:协议类型
DEVICE:端口号
SIZE/OFF:偏移
NODE:协议名
NAME:节点名
2,netstat -tunlp|grep 端口号
netstat -tunlp用于显示tcp,udp的端口和进程等相关情况,如下图
命令里的t,u,n,l,p均有不同含义:
-t 仅显示和tcp相关的
-u 仅显示和udp相关的
-n 不限时别名,能显示数字的全部转换为数字
-l 仅显示出于Listen(监听)状态的
-p 显示建立这些连接的程序名
防火墙
firewalld
1、firewalld的基本使用
启动: systemctl start firewalld
查看状态: systemctl status firewalld
停止: systemctl disable firewalld
禁用: systemctl stop firewalld
2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
启动一个服务:systemctl start firewalld.service 关闭一个服务:systemctlstop firewalld.service 重启一个服务:systemctlrestart firewalld.service 显示一个服务的状态:systemctlstatus firewalld.service 在开机时启用一个服务:systemctlenable firewalld.service 在开机时禁用一个服务:systemctldisable firewalld.service 查看服务是否开机启动:systemctlis-enabled firewalld.service 查看已启动的服务列表:systemctllist-unit-files|grep enabled 查看启动失败的服务列表:systemctl--failed
3.配置firewalld-cmd
查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd--zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息: firewall-cmd--get-active-zones
查看指定接口所属区域: firewall-cmd--get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic
那怎么开启一个端口呢
添加
1 firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新载入
1 firewall-cmd --reload
查看
1 firewall-cmd --zone=public --query-port=80/tcp
删除
1 firewall-cmd --zone=public --remove-port=80/tcp --permanent
查看firewall是否运行,下面两个命令都可以
1 2 3 systemctl status firewalld.service
firewall-cmd --state
查看当前开了哪些端口
其实一个服务对应一个端口,每个服务对应/usr/lib/firewalld/services下面一个xml文件。
1 firewall-cmd --list-services
查看还有哪些服务可以打开
1 firewall-cmd --get-services
查看所有打开的端口:
1 firewall-cmd --zone=public --list-ports
更新防火墙规则:
1 firewall-cmd --reload
文件操作
显示当前目录 pwd
给文件附上可执行权限 chmod 777 tomcat.sh
vim
查找
一,全匹配:
1,从上往下查找,比如“string” : /string
2,从下往上查找,比如“string” : ?string
二,模糊匹配(正则表达式)
1,. :通配1个字符 ,如 匹配 server, 可以用 /se...r
2,* :通配多个字符,如 匹配 privilege,可以用 p*ge
三,快速查找
1, Shift + * :让光标停留在想要查找的单词的任意一个字母上面, 然后输入 Shift + * ,即可快速选中该单词,并且通过 n 或 N 进行上一个或下一个的匹配。
2,yw :让光标停留在单词的第一个字母上, 然后输入yw拷贝该单词, 然后输入 / (Ctrl + R) 0 (即 /”0),回车, 就查找到了第一个匹配的单词, 并且通过 n 或 N 进行上一个或下一个的匹配。
软件安装
服务配置
spring.druid配置
spring.datasource.druid.url=jdbc:mysql://dbv3.ruipos:3306/standard_cos_v3?useUnicode=true&zeroDateTimeBehavior=convertToNull&useSSL=true&characterEncoding=UTF-8&serverTimezone=Hongkong&autoReconnect=true
spring.datasource.druid.username=hyy
spring.datasource.druid.password=2$VbCtXALqq
#连接池属性
#连接池初始化大小、最大、最小
spring.datasource.druid.initial-size=1
spring.datasource.druid.max-active=100
spring.datasource.druid.min-idle=2
#连接最大时长 单位秒
spring.datasource.druid.max-wait=7200
#检查空闲连接的频率,单位毫秒, 非正整数时表示不进行检查
spring.datasource.druid.time-between-eviction-runs-millis=60000
#池中某个连接的空闲时长达到 N 毫秒后, 连接池在下次检查空闲连接时,将回收该连接,要小于防火墙超时设置
spring.datasource.druid.min-evictable-idle-time-millis=60000
#程序 申请 连接时,进行连接有效性检查(低效,影响性能)
spring.datasource.druid.test-on-borrow=false
#程序 返还 连接时,进行连接有效性检查(低效,影响性能)
spring.datasource.druid.test-on-return=false
#当程序请求连接,池在分配连接时,是否先检查该连接是否有效。(高效)
spring.datasource.druid.test-while-idle=true
#检查池中的连接是否仍可用的 SQL 语句,drui会连接到数据库执行该SQL, 如果正常返回,则表示连接可用,否则表示连接不可用
spring.datasource.druid.validation-query=SELECT 1
spring.datasource.druid.validation-query-timeout=1000
#程序没有close连接且空闲时长超过minEvictableIdleTimeMillis,则会执行validationQuery指定的SQL,以保证该程序连接不会池kill掉,其范围不超过minIdle指定的连接个数。
spring.datasource.druid.keep-alive=true
#要求程序从池中get到连接后, N 秒后必须close,否则druid 会强制回收该连接,不管该连接中是活动还是空闲, 以防止进程不会进行close而霸占连接。
spring.datasource.druid.remove-abandoned=false
spring.datasource.druid.remove-abandoned-timeout=180
#当druid强制回收连接后,是否将stack trace 记录到日志中
spring.datasource.druid.log-abandoned=true
#缓存通过以下两个方法发起的SQL:public PreparedStatement prepareStatement(String sql) public PreparedStatement prepareStatement(String sql,int resultSetType, int resultSetConcurrency)
spring.datasource.druid.pool-prepared-statements=false
#每个连接最多缓存多少个SQL
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
#这里配置的是插件,常用的插件有:监控统计: filter:stat 日志监控: filter:log4j 或者 slf4j 防御SQL注入: filter:wall
spring.datasource.druid.filters=stat,wall,slf4j
#合并多个DruidDataSource的监控数据
spring.datasource.druid.use-global-data-source-stat=true
#连接属性。比如设置一些连接池统计方面的配置。
spring.datasource.druid.connect-properties.mergeSql=true
spring.datasource.druid.connect-properties.slowSqlMillis=5000
数据库
数据库备份与还原
备份
mysqldump -u username -p dbname [tbname ...]> filename.sql
还原
mysql -u username -P [dbname] < filename.sql
查询数据库超时配置
show variables like '%timeout%'
mysql查询、修改等命令导致进程卡住的时候
>show full processlist; // 列出进程,找出处于waiting的process,要杀死这些process
>kill ID; // ID号就是指的列出的第一列“Id”
查询慢sql
SELECT * FROM information_schema.PROCESSLIST WHERE length(info) > 0 ORDER BY TIME
添加用户、权限
创建用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
username – 你将创建的用户名说明:
host – 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如 果想让该用户可以从任意远程主机登陆,可以使用通配符%
password – 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登 陆服务器
例子:
CREATE USER 'javacui'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'javacui'@'172.20.0.0/255.255.0.0' IDENDIFIED BY '123456';
CREATE USER 'javacui'@'%' IDENTIFIED BY '123456';
CREATE USER 'javacui'@'%' IDENTIFIED BY '';
CREATE USER 'javacui'@'%';
授权
GRANT privileges ON databasename.tablename TO 'username'@'host'; privileges – 用户的操作权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).如果要授予所 的权限则使用ALL说明:
databasename – 数据库名
tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用* 表示, 如*.*
例子:
GRANT SELECT, INSERT ON test.user TO 'javacui'@'%';
GRANT ALL ON *.* TO 'javacui'@'%';
注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
设置与更改用户密码
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
如果是当前登陆用户用
SET PASSWORD = PASSWORD("newpassword");
撤销用户权限
REVOKE privilege ON databasename.tablename FROM 'username'@'host'; 例子说明: privilege, databasename, tablename – 同授权部分
REVOKE SELECT ON . FROM 'javacui'@'%'; 假如你在给用户’javacui’@'%’授权的时候是这样的(或类似 的):GRANT SELECT ON test.user TO ‘javacui’@'%’, 则在使用 REVOKE SELECT ON . FROM ‘javacui’@'%’;命令并不能撤销该用户对test数据库中user表的SELECT 操作注意:
相反,如果授权使用的是GRANT SELECT ON . TO ‘javacui’@'%’;则 REVOKE SELECT ON test.user FROM ‘javacui’@'%’;命令也不能撤销该用户对test数据库中user表的 Select 权限
具体信息可以用命令SHOW GRANTS FOR ‘javacui’@'%’; 查看
删除用户
DROP USER ‘username’@'host’;
操作后切记刷新数据库
flush privileges;
nginx
配置文件在 /etc/nginx
检查配置语法是否正确 nginx -t
重启让配置文件生效 nginx -s reload
java.lang.OutOfMemoryError: unable to create new native thread
查阅问题原因 blog.csdn.net/thwsir/arti…
有限制线程数的方法 blog.csdn.net/weixin_3967…
没有使用,优先业务支撑。
ulimit -u 查看服务器最大线程数
pstree -p|wc -l 查询当前线程情况
发现个别服务线程数到1300,记忆中正常情况应该300左右,重启后线程回落正常。
继续查资料,翻到这个讲根本原因的www.zhihu.com/question/64…
查看连接数
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉
netstat -antp | grep 80 | grep ESTABLISHED -c
ssh互通
给A机器生成公钥文件
ssh-keygen -t rsa cat ~/.ssh/id_rsa.pub
给B机器加上A的公钥,从而从B访问A不需要账号密码
在B机器上执行 vim ~/.ssh/authorized_keys chmod 755 ~/.ssh chmod 600 ~/.ssh/authorized_keys
给B机器加上A的公钥,另外一种方式
在A机器上执行 ssh ssh-copy-id root@192.168.1.101
异常情况
执行 ssh-keygen -f "/root/.ssh/known_hosts" -R 192.168.1.101
搭建k8s
配置网络
安装yum
yum install-y yum-utils
安装Docker
安装 Docker 官方源
sudo yum-config-manager \ --add-repo \ download.docker.com/linux/cento…