linux中各种软件环境问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bingdianone/article/details/85070029

网络配置

cd /etc/sysconfig/network-scripts/

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="7feff812-8241-4243-a55e-7cfc1af48964"
DEVICE="ens33"
ONBOOT="yes"

#修改
BOOTPROTO=static #这里讲dhcp换成ststic
ONBOOT=yes #将no换成yes
#新增
DNS1=114.114.114.114 #DNS
IPADDR=192.168.232.7 #静态IP
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.232.1 #默认网关

systemctl restart network.service

防火墙的配置和端口开启

记得操作之前需要配置  hosts文件里的ip
systemctl 命令 服务
service 服务 命令
CentOS7使用firewalld打开关闭防火墙与端口
1、firewalld的基本使用
启动: systemctl start firewalld
查看状态: systemctl status firewalld 
停止: systemctl stop firewalld
禁用: systemctl disable firewalld
 
2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
systemctl stop iptables.service
systemctl status iptables.service
systemctl disable iptables.service
开放端口,编辑配置
vim /etc/sysconfig/iptables
添加
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
重启即可
启动指令:systemctl start iptables.service
重启指令: restart
关闭指令: stop

systemctl status firewalld.service
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-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
 
那怎么开启一个端口呢
添加
firewall-cmd --zone=public --add-port=9200/tcp --permanent    (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看所有打开的端口: firewall-cmd --zone=public --list-ports
查看
firewall-cmd --zone=public --query-port=9200/tcp
netstat -ntlp | grep 9200 显示主机IP:9200  远程才能连上;
删除
firewall-cmd --zone=public --remove-port=9200/tcp --permanent

其他常用命令

查看用户目录:

 ll /usr/sbin/user*

查看用户组目录:

ll /usr/sbin/group*

查看用户:

ll /usr/sbin/user*

查看用户组:

ll /usr/sbin/group*

添加用户:

useradd xxx
删除之后如果再次创建的时候会提示家目录已经存在
当前创建的用户:
    id 用户
    gid:主组
    groups:所有组

删除用户:

userdel 用户

创建用户组:

groupadd 用户组

把用户添加到用户组:

usermod -a -G 用户组 用户

修改用户的密码:

passwd 用户

怎样切换用户():*

su 用户
su - 用户
    - :执行切换用户的环境变量,进入家目录

退出当前用户:

su
su -

临时获取root的最大权限(****):

 sudo

修改某个用户具有root的权限:

vi /etc/sudoers 
    xxx ALL=(root) NOPASSWD:ALL

怎样查看进程(*

ps -ef | grep ntpd
    ntp :进程运行user
    1393:pid
    1:父进程id

ps aux|grep elasticsearch

杀死进程:

kill -9 进程的pid

怎样查看端口号(*

netstat -nlp | grep ntp

题目:

打开某个xxx服务的web页面:ip+port http://ip:root
    ps -ef | grep xxx --> pid --> netstat -nlp | grep pid
    等价于
    netstat -nlp | grep xxx
0.0.0.0 代表当前机器的ip

权限(*):

读 r 4
写 w 2
执行 x 1
- : 无权限,占位
-rw-r--r--:
    第一位:- 文件 d文件夹 l连接
    第一组:rw-  root这个用户对这个文件  只有读写权限
    第二组:r--  root这个组的所有用户对这个文件只有读权限
    第三组:r--  其他用户组的所有用户对这个文件只有读权限

chown:修改文件夹或文件的所属的用户及用户组

chown [-R] xxx:xxx /xxx
chown xxx:xxx /root/xxx.log

chmod:修改文件夹或文件的权限

chmod -R 777 /xxx
chmod 644 /root/xxx.log
chmod +x /root/xxx.log 所有的都加上可执行操作

rw-r--r-- ===> 644
rwxrwxrwx ===> 777
r-x ===> 5

文件夹: -R 递归,只出现在chown和chmod
补充:rm -r -f /xxx
安装rpm:

yum install httpd
yum -y install httpd 可选的
启动:
    service httpd start | status | stop | restart
查看端口号:
    netstat -nlp | grep 3606

搜索rpm:

yum search xxx

搜索、卸载rpm:

过滤:
    rpm --qa | grep http
rpm -e xxx
rpm --nodes -e xxx

--nodeps 不验证包的依赖关系,强行卸载

命令或某个文件在哪? -->搜索

which xxx 定位命令
locate xxx
find / -name "*xxx*"

查看磁盘大小:

df -h

查看内存大小:

free -m/-g
-m:多少兆,一般是-m
-g:多少g

实时打印当前机器的负载情况(系统情况查看):

top

怎样下载软件包:

wget http下载地址

压缩包解压():*

tar -zxvf xxx.tar.gz
unzip xxx.zip

文件压缩:

tar -czf jpg.tar.gz *.xxx
最常用的 频率最高的
zip ***.zip *.xxx

压缩解压:

https://jingyan.baidu.com/article/6d704a13f9981a28da51ca70.html
tar 压缩解压
zip 压缩
unzip 解压

注意:

如果进入创建的用户hadoop之后是-bash-4.1$,但是希望显示的是[hadoop@admin ~],那么执行以下内容:
[root@admin ~]# cp -pr /etc/skel/.bash* /home/hadoop/
[root@admin ~]# chown -R hadoop /home/hadoop/
[root@admin ~]# su - hadoop
rz和sz的安装 
yum install lrzsz  
创建新用户
adduser ***
passwd ***
root切换到普通用户
su - es
查看当前进程
ps -ef | grep XXX
查看内存
free -h
查看磁盘
df -h

查看逻辑CPU个数

#cat /proc/cpuinfo |grep "processor"|sort -u|wc -l
24

查看物理CPU个数:
#grep "physical id" /proc/cpuinfo|sort -u|wc -l                   
2
#grep "physical id" /proc/cpuinfo|sort -u                   
physical id     : 0
physical id     : 1

查看每个物理CPU内核个数:
#grep "cpu cores" /proc/cpuinfo|uniq
cpu cores       : 6

每个物理CPU上逻辑CPU个数:
#grep "siblings" /proc/cpuinfo|uniq
siblings        : 12

判断是否开启了抄超线程:
如果多个逻辑CPU的"physical id"和"core id"均相同,说明开启了超线程
或者换句话说
逻辑CPU个数 > 物理CPU个数 * CPU内核数   开启了超线程
逻辑CPU个数 = 物理CPU个数 * CPU内核数   没有开启超线程

查看CPU个数脚本

#!/bin/bash
 
physicalNumber=0
coreNumber=0
logicalNumber=0
HTNumber=0
 
logicalNumber=$(grep "processor" /proc/cpuinfo|sort -u|wc -l)
physicalNumber=$(grep "physical id" /proc/cpuinfo|sort -u|wc -l)
coreNumber=$(grep "cpu cores" /proc/cpuinfo|uniq|awk -F':' '{print $2}'|xargs)
HTNumber=$((logicalNumber / (physicalNumber * coreNumber)))
 
echo "****** CPU Information ******"
echo "Logical CPU Number  : ${logicalNumber}"
echo "Physical CPU Number : ${physicalNumber}"
echo "CPU Core Number     : ${coreNumber}"
echo "HT Number           : ${HTNumber}"
 
echo "*****************************"


执行结果:

#./cpuinfo  
****** CPU Information ******
Logical CPU Number  : 24
Physical CPU Number : 2
CPU Core Number     : 6
HT Number           : 2
*****************************

给普通用户授权sudo

1)切换root用户,可以用vim /etc/sudoers对文件编辑(先赋权限chmod u+w /etc/sudoers),但最好使用visudo命令编辑,原因两点:一是它能够防止两个用户同时修改它;二是它也能进行有限的语法检查。
2)找到"root ALL=(ALL) ALL",在下面加一行“XXX ALL=(ALL) ALL”即完成授权 
“XXX”是用户名。
3)此时该用户拥有root所有权限,要做一下限制,先说一下上面三个ALL的含义:
①网络中的主机名(建议用ALL,实际不确定远程主机名),
②目标用户,也就是以谁的身份去执行命令(建议ALL)
③命令(最好不用ALL,否则方法二就没意义了,多个命令逗号隔开),默认5分钟sudo密码过期,怕麻烦命令前加“NOPASSWD:”  
所以上面增加内容应改为:
“XXX ALL=(ALL) NOPASSWD:/sbin/service”

查看端口和线程占用情况

linux下通过进程名查看其占用端口:
1、先查看进程pid
ps -ef | grep 进程名
2、通过pid查看占用端口
netstat -nap | grep 进程pid

#查看nginx进程pid:
命令:
ps -ef | grep nginx
结果:
root      9836     1  0 Jul11 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody    9841  9836  0 Jul11 ?        00:00:09 nginx: worker process      

#通过nginx进程pid查看占用端口(进程pid为9836)
命令:
netstat -nap | grep 9836
结果:
tcp        0      0 0.0.0.0:8081                0.0.0.0:*                   LISTEN      9836/nginx          
tcp        0      0 0.0.0.0:81                  0.0.0.0:*                   LISTEN      9836/nginx          
tcp        0      0 0.0.0.0:8082                0.0.0.0:*                   LISTEN      9836/nginx          
tcp        0      0 0.0.0.0:8083                0.0.0.0:*                   LISTEN      9836/nginx

linux通过端口查看进程:
netstat -nap | grep 端口号
-p 显示端口进程

例:查看8081号端口对应的进程名

命令:
netstat -nap | grep 8081
结果:
tcp        0      0 0.0.0.0:8081                0.0.0.0:*                   LISTEN      9836/nginx

top

top命令的第一行:

top - 21:31:26 up 15:16,  5 users,  load average: 0.61, 0.82, 0.75

依次对应:系统当前时间 up 系统到目前为止i运行的时间, 当前登陆系统的用户数量, load average后面的三个数字分别表示距离现在一分钟,五分钟,十五分钟的负载情况。
这行信息与命令uptime显示的信息相同
注意:load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

top命令的第二行:

Tasks: 240 total,   2 running, 238 sleeping,   0 stopped,   0 zombie

依次对应:tasks表示任务(进程),240 total则表示现在有240个进程,其中处于运行中的有2个,238个在休眠(挂起),stopped状态即停止的进程数为0,zombie状态即僵尸的进程数为0个。

top命令的第三行

cpu状态:
%Cpu(s): 13.7 us,  1.5 sy,  0.0 ni, 84.2 id,  0.6 wa,  0.0 hi,  0.0 si,  0.0 st

依次对应:
us:user 用户空间占用cpu的百分比
sy:system 内核空间占用cpu的百分比
ni:niced 改变过优先级的进程占用cpu的百分比
空闲cpu百分比
wa:IO wait IO等待占用cpu的百分比
hi:Hardware IRQ 硬中断 占用cpu的百分比
si:software 软中断 占用cpu的百分比
st:被hypervisor偷去的时间

top命令第四行

内存状态:
KiB Mem :  3775264 total,   250100 free,  2495300 used,  1029864 buff/cache

依次对应:物理内存总量(3.7G),空闲内存总量(2.5G),使用中的内存总量(2.4G),缓冲内存量
第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心

top命令第五行

swap交换分区:
KiB Swap:  4064252 total,  2789544 free,  1274708 used.   527664 avail Mem 

依次对应:交换区总量(4G),空闲交换区总量(2.7G),使用的交换区总量(1.2G),可用交换取总量
对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

top命令第六行是空行

top命令第七行

各进程的监控:
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND    

依次对应:
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)

MySQL

  1. 卸载:rpm -qa | grep -i mysql
  2. 使用以下命令依次删除上面的程序
    yum remove mysql-xxx-xxx-
  3. 卸载前先关闭musql服务
    systemctl stop mysqld.service/service mysql stop
  4. 删除mysql的配置文件,卸载不会自动删除配置文件,首先使用如下命令查找出所用的配置文件;
    find / -name mysql
  5. 根据需求使用以下命令 依次 对配置文件进行删除
    rm -rf /var/lib/mysql
  6. 官网下载后安装 yum repo文件并更新 yum 缓存;
    rpm -ivh mysql57-community-release-el7-11.noarch.rpm
    执行结果:会在/etc/yum.repos.d/目录下生成两个repo文件
  7. 更新 yum 命令
    yum clean all
    yum makecache
  8. 查看mysql yum仓库中mysql版本,使用如下命令
    yum repolist all | grep mysql
  9. 使用 yum-config-manager 命令修改相应的版本为启用状态最新版本为禁用状态
    yum-config-manager --disable mysql80-community
    yum-config-manager --enable mysql57-community
    或者可以编辑 mysql repo文件
    cat /etc/yum.repos.d/mysql-community.repo
  10. 安装mysql 命令如下:
    yum install mysql-community-server
  11. 开启mysql 服务
    systemctl start mysqld.service
  12. mysql在安装后会创建一个root@locahost账户,并且把初始的密码放到了/var/log/mysqld.log文件中:
    cat /var/log/mysqld.log | grep password
  13. 使用初始密码登录mysql
    mysql -u root -p
  14. 更改加密方式:
    ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER;
    更改参数
    set global validate_password.policy=0;
    set global validate_password.length=4;
    或者
    set global validate_password_policy=0;
    set global validate_password_length=6;
    更改密码:
    ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘1234’;
    刷新:
    FLUSH PRIVILEGES;
  15. 远程访问权限
一.can‘t connect to MySql server on ‘192.168.X.X’

这是因为mysql端口被防火墙拦截,需用linux执行如下指令:

1.#/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

2.#/etc/rc.d/init.d/iptables save

3.#/etc/init.d/iptables restart

4.查看端口是否开启#/etc/init.d/iptables status

二.1130-host ... is not allowed to connect to this MySql server

方法一:

mysql -u root -p password>use mysql;

mysql>update user set host = '%' where user = 'root';

mysql>FLUSH   PRIVILEGES;

mysql>select host, user from user;

方法二:

1) 从任何主机连接到mysql服务器

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

FLUSH   PRIVILEGES;

2)只允许用户root从ip为192.168.x.x的主机连接到mysql服务器,并使用password作为密码

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.x.x' IDENTIFIED BY 'password' WITH GRANT OPTION;

FLUSH   PRIVILEGES;

如果你想允许用户root从ip为192.168.x.x'的主机连接到mysql服务器的某个数据库,并使用password作为密码

GRANT ALL PRIVILEGES ON 数据库名.* TO 'root'@'192.168.x.x' IDENTIFIED BY 'password' WITH GRANT OPTION;

FLUSH   PRIVILEGES;

在使用 Navicat for Mysql连接mysql 8.0时会报如下错误:

Authentication plugin 'caching_sha2_password' cannot be loaded: 

mysql8.0 引入了新特性 caching_sha2_password;这种密码加密方式客户端不支持;客户端支持的是mysql_native_password 这种加密方式;

我们可可以查看mysql 数据库中user表的 plugin字段;
在这里插入图片描述
可以使用命令将他修改成mysql_native_password加密模式:

update user set plugin='mysql_native_password' where user='root';

再用Navicat链接 就可以链接成功;

猜你喜欢

转载自blog.csdn.net/bingdianone/article/details/85070029