centos7运维

# 查看访问的ip数据

netstat -anpt|grep 8080|awk '{print $5}'|cut -d: -f1|sort|uniq -c

#安装远程登录
yum install ssh
systemctl start sshd
systemctl status sshd

#查看所使用的bash
echo $SHELL

查看系统语言
echo $LANG
修改系统字符集:
vim /etc/locale.conf
LANG=zh_CN.UTF-8

#查看当前用户
who is it/whoami/id -nu

#查看系统版本:
cat /etc/os-release
lsb_release -a
uname -a #可显示电脑以及操作系统的相关信息
cat /proc/version #说明正在运行的内核版本
cat /etc/issue #显示的是发行版本信息
cat /etc/os-release
rpm -qi centos-release

#查看cpu级别(操作系统位数)
arch

变量在export后 可以在后续的程序中用$来引用 如echo $PATH
变量拼接入path后可直接在控制台用(如tomcat启动)否则要写全($CATALINA_HOME/bin/startup.sh)

环境变量
全局环境变量设置:
不建议在 etc/profile中设置,在子目录/etc/profile.d下添加*.sh

安装netstat
yum -y install net-tools

systemd学习
http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html
http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html

系统命令:
systemctl reboot #重启
systemctl halte #关机
service配置文件命令路径必须是绝对路径,修改后要重新加载
systemctl daemon-reload
查看所有级别:
ls -lh /usr/lib/systemd/system/runlevel*.target
查看默认的运行级别:
systemctl get-default
修改当前运行级别:
systemctl set-default multi-user.target
# 查看 multi-user.target 包含的所有服务
$ systemctl list-dependencies multi-user.target
# 切换到另一个级别
$ sudo systemctl isolate multi-user.target

查看类型为service的单元
systemctl list-units --type=service(运行中的)
systemctl list-units -all --type=service(包含非运行中的)
#查看系统运行状态
systemctl status
#列出所有服务的层级和依赖关系,可以指定某个服务
systemctl list-dependencies tomcat.service
systemctl list-dependencies multi-user.target

#restart与try-restart区别

systemctl restart httpd.service #如服务在运行将重启,不在运行将会启动

systemctl try-restart httpd.servic  #只有服务在运行才重启

查看服务启动日志
systemctl status tomcat 或 journalctl -xe
查看单个服务日志
journalctl -f -u prometheus.service

查看journalctl日志占用磁盘的空间的总大小
journalctl --disk-usage
由于Linux是一个非常敏感的操作系统,若删除文件错误,很容易造成系统崩溃。
journalctl --vacuum-time=2d 删除比指定时间旧的文件
journalctl --vacuum-size=500M 保留大小

限制日志
修改配置文件
/etc/systemd/journald.conf

journalctl学习:
查看指定时间以后的日志
journalctl --since "2018-03-26" --until "2018-03-26 03:00"

清理日志
日志位置:
/var/log/journal

设置缓存history命令条数
修改/etc/profile
HISTSIZE=100
查看已缓存的命令:cat .bash_history

设置别名:
在~目录下, vim .bash_profile
alias ll="ls -al"
source .bash_profile

断开用户连接:
ps -ef|grep ssh
kill -9 (pts/0类似这样的进程)

#查看对外,对内连接数 (LISTEN表示启动的程序,ESTABLISHED表示外部访问)
netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c
或 netstat -ant|awk '/tcp/ {print $6}'|sort|uniq -c


yum源配置(云源为阿里云)
备份系统原来的repo文件
mv /etc/yum.repos.d/CentOs-Base.repo CentOs-Base.repo.bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
云源缓存
yum clean all
yum makecache
yum update

查看系统可用的yum源和所有的yum源
yum repolist enabled
yum repolist all

yum upgrade和yum update
yum -y update
升级所有包同时也升级软件和系统内核
yum -y upgrade
只升级所有包,不升级软件和系统内核

安装软件
rpm -ivh kernel-devel-3.10.0-514.el7.x86_64.rpm
yum install kernel-devel

查看已安装详情
rpm -qa|grep mysql
rpm -ql mysql-community-server-5.6.37-2.el7.x86_64

卸载软件
rpm -e mysql-community-server-5.6.37-2.el7.x86_64
rpm -e mailx-12.5-19.el7.x86_64 --nodeps (卸载时不检测依赖,只卸载该包)
yum -y remove VirtualBox-5.2 (卸载不干净)

#查找which,whereis,locate,find
find / -name mysqld.service 在根目录下查找名字为mysqld.service的文件

#网络
systemctl status network
ifconfig不显示ip
vim /etc/sysconfig/network-scripts/ifcfg-ens33
将ONBOOT=no改为ONBOOT=yes
设置dns方式
编辑vi /etc/sysconfig/network-scripts 网卡下面的ifcfg-eth0 配置文件修改DNS1
终端输入 setup命令即可调出图形界面设置(配置信息会写入/etc/resolv.conf文件里面)
编辑 vi /etc/resolv.conf 设置首选DNS和次要DNS。排在前面的就是首选DNS,后面一行就是次要的DNS服务器DNS
解析域名顺序:
1 hosts文件 (/etc/hosts)---- 2 网卡配置文件DNS服务地址 ---3 /etc/resolv.conf

#磁盘操作
df -h #查看磁盘使用情况
df -Th #显示文件系统类型
fdisk -l #显示挂载和未挂载的分区
为了避免每次重启系统后都要手动mount,可以在/etc/fstab中加入一行挂载配置,即可开机自动挂载,该方法简单方便
cat /etc/fstab
dumpe2fs -h /dev/vda1(或 blkid /dev/vda1) #查看设备uuid
查看正在使用某个文件的进程id
fuser -um /dev/sda2
查看磁盘管理器
udevadm info -a -n /dev/vda
udevadm info --query=all --name=/dev/vda
udevadm info --query=all --name=/dev/vda1
查看挂载情况
mount


#打包操作(压缩和解压)
tar -czvf docker.tar.gz docker
tar -xzvf docker.tar.gz

zip -r docker.zip docker 递归压缩
unzip docker.zip
unzip -o docker.zip 覆盖文件没有提示

gzip cjh.txt 会生成cjh.txt.gz (不会归档)
gzip -d cjh.txt.gz

#执行sh
eval 执行一个命令
exec 在新进程中执行一个命令,并且终止当前进程
source 在当前进程中执行脚本

#vim编辑器使用技巧
:set number #显示行号
:u #撤消
:%s/1024/512/g #全局替换
删除一行
:dd

#centos间相互复制传送文件
scp -r -P 222 /root/docker root@sanjuscm.4plservice.com:/root/docker

#清空文件内容
>catalina.out/du -sh catalina.out

#防火墙设置
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
firewall-cmd --zone=public --add-port=8080/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone=public --query-port=8080/tcp
删除
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
查看当前开了哪些端口
其实一个服务对应一个端口,每个服务对应/usr/lib/firewalld/services下面一个xml文件。
firewall-cmd --list-services
查看还有哪些服务可以打开
firewall-cmd --get-services
查看所有打开的端口:
firewall-cmd --zone=public --list-ports
firewall-cmd --zone=public --add-port=8080/tcp --permanent
增加端口后,要重新启动

#备份和还原目录
dump -0 -f ./cjh.dump ./cjh
restore -r -f ../cjh.dump


linux连接linux
ssh -i /root/xxx.pem root@10.10.10.100

#awk使用
ps -A | grep httpd | grep -v grep | awk '{ print $1; }' | xargs -L 1 kill -HUP

( ps 和 grep 命令用来在所有的进程中搜索 httpd(并且忽略用来搜索 httpd 进程的 grep 进程)

接下来,awk 只显示输出结果中的进程 ID,并将它传递给 xargs

然后,xargs 命令接受每个进程 ID(因为使用了 -L 1 以便一次提取一行内容),并使用 sudo kill -HUP 向相应的进程发送一个挂起信号。


#输出:
$cat test.txt 1>/dev/null 标准输出
$cat test.txt 2>/dev/null 标准错误输出

#sh脚本
$$
Shell本身的PID(ProcessID)
$!
Shell最后运行的后台Process的PID
$?
最后运行的命令的结束代码(返回值)
$-
使用Set命令设定的Flag一览
$*
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$#
添加到Shell的参数个数
$0
Shell本身的文件名
$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

变量的定义是有一定的规则的,比如变量和变量内容之间使用等号链接,且等号两边不能直接跟空格.
如果变量内容含有空格,可以使用单引号或者双引号括起来.
当然使用单引号和使用双引号是有区别的,
如果使用双引号,那么如果内容里面有特殊字符比如$LANG,那么将会被解析成对应的数据.
如果使用单引号,则不会解析.

echo -e '#!/bin/bash echo $panda'>one.sh
解释一下上面的命令echo的e选项用于允许转义标记的内容.
chmod u+x one.sh(给当前用户赋予)
chmod a+x one.sh(给所有用户赋予)
$()与${}的区别:
$()中放的是命令,相当于` `(在脚本文件中才有效)
${}中放的是变量

blocks=${1:-$MINBLOCKS}
相当于
if [ -n "$1" ]
then
blocks=$1
else
blocks=$MINBLOCKS
fi

#查看运行程序内存
ps aux|grep java (b为单位)

首先注意usr 指 Unix System Resource,而不是指User
通常/usr/bin下面的都是系统预装的可执行程序,会随着系统升级而改变
/usr/local/bin目录是给用户放置自己的可执行程序的地方,推荐放在这里,不会被系统升级而覆盖同名文件
如果两个目录下有相同的可执行程序,谁优先执行受到PATH环境变量的影响,比如我的一台服务器的PATH变量为
echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/dean/bin
这里/usr/local/bin优先于/usr/bin, 一般都是如此

原文地址:https://www.cnblogs.com/cghhnty/p/9036719.html