BlueXIII's Blog

热爱技术,持续学习

0%

1
2
brew install enca
find . -name "*.java" -exec enconv -L zh_CN -x UTF-8 {} \;

简介

rsync 全名 Remote Sync,是类 unix 系统下的数据镜像备份工具。可以方便的实现本地,远程备份,rsync 提供了丰富的选项来控制其行为。rsync 优于其他工具的重要一点就是支持增量备份。

本地备份示列

1
2
0 * * * * rsync -arv --delete /home/bluexiii/Documents/work /media/bluexiii/HITACHI/Documents
0 * * * * rsync -arv --delete --exclude=.git --exclude=.svn --exclude=node_modules --exclude=target /home/bluexiii/Documents/src /media/bluexiii/HITACHI/Documents

远程备份示列

SSH公钥复制:

1
ssh-copy-id root@56.32.4.68

crontab配置:

1
0 * * * * rsync -arv /home/minio/data root@56.32.4.68:/home/minio/data

参考文档

参考文档

http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html

systemctl

重启

1
systemctl reboot

关闭

1
systemctl poweroff

CPU停止工作

1
systemctl halt

暂停系统

1
systemctl suspend

休眠

1
systemctl hibernate

交互式休眠

1
systemctl hybrid-sleep

###单用户状态

1
systemctl rescue

systemd-analyze

启动耗时

1
systemd-analyze                                                                                       

每个服务的启动耗时

1
systemd-analyze blame

瀑布状的启动过程流

1
systemd-analyze critical-chain

显示指定服务的启动流

1
systemd-analyze critical-chain atd.service

hostnamect

显示当前主机的信息

1
hostnamectl

设置主机名

1
hostnamectl set-hostname xxxx

localectl

查看本地化设置

1
localectl

设置本地化参数

1
2
localectl set-locale LANG=en_GB.utf8
localectl set-keymap en_GB

timedatectl

查看当前时区设置

1
timedatectl

显示所有可用的时区

1
timedatectl list-timezones                                                                                   

设置当前时区

1
2
3
timedatectl set-timezone America/New_York
timedatectl set-time 2018-10-25
timedatectl set-time 11:32:00

loginctl

列出当前session

1
loginctl list-sessions

列出当前登录用户

1
loginctl list-users

列出显示指定用户的信息

1
loginctl show-user root

查询状态

列出正在运行的 Unit

1
systemctl list-units

列出所有Unit,包括没有找到配置文件的或者启动失败的

1
systemctl list-units --all

列出所有没有运行的 Unit

1
systemctl list-units --all --state=inactive

列出所有加载失败的 Unit

1
systemctl list-units --failed

列出所有正在运行的、类型为 service 的 Unit

1
systemctl list-units --type=service

查询状态

显示系统状态

1
systemctl status

显示单个 Unit 的状态

1
systemctl status bluetooth.service

显示远程主机的某个 Unit 的状态

1
systemctl -H root@rhel7.example.com status httpd.service

显示某个 Unit 是否正在运行

1
systemctl is-active application.service

显示某个 Unit 是否处于启动失败状态

1
systemctl is-failed application.service

显示某个 Unit 服务是否建立了启动链接

1
systemctl is-enabled application.service

服务管理

立即启动一个服务

1
systemctl start apache.service

立即停止一个服务

1
systemctl stop apache.service

重启一个服务

1
systemctl restart apache.service

杀死一个服务的所有子进程

1
systemctl kill apache.service

重新加载一个服务的配置文件

1
systemctl reload apache.service

重载所有修改过的配置文件

1
systemctl daemon-reload

显示某个 Unit 的所有底层参数

1
systemctl show httpd.service

显示某个 Unit 的指定属性的值

1
systemctl show -p CPUShares httpd.service

设置某个 Unit 的指定属性

1
systemctl set-property httpd.service CPUShares=500

列出一个 Unit 的所有依赖

1
systemctl list-dependencies --all nginx.service

配置文件的状态

列出所有配置文件

1
systemctl list-unit-files

列出指定类型的配置文件

1
systemctl list-unit-files --type=service

查看配置文件

1
systemctl cat atd.service

日志管理

查看所有日志(默认情况下 ,只保存本次启动的日志)

1
journalctl

查看内核日志(不显示应用日志)

1
journalctl -k

查看系统本次启动的日志

1
2
journalctl -b
journalctl -b -0

查看上一次启动的日志(需更改设置)

1
$ sudo journalctl -b -1

查看指定时间的日志

1
2
3
4
5
journalctl --since="2012-10-30 18:17:16"
journalctl --since "20 min ago"
journalctl --since yesterday
journalctl --since "2015-01-10" --until "2015-01-11 03:00"
journalctl --since 09:00 --until "1 hour ago"

显示尾部的最新10行日志

1
journalctl -n

显示尾部指定行数的日志

1
journalctl -n 20

实时滚动显示最新日志

1
journalctl -f

查看指定服务的日志

1
journalctl /usr/lib/systemd/systemd

查看指定进程的日志

1
journalctl _PID=1

查看某个路径的脚本的日志

1
journalctl /usr/bin/bash

查看指定用户的日志

1
journalctl _UID=33 --since today

查看某个 Unit 的日志

1
2
journalctl -u nginx.service
journalctl -u nginx.service --since today

实时滚动显示某个 Unit 的最新日志

1
journalctl -u nginx.service -f

合并显示多个 Unit 的日志

1
journalctl -u nginx.service -u php-fpm.service --since today

查看指定优先级(及其以上级别)的日志,共有8级

1
2
0: emerg 1: alert 2: crit 3: err 4: warning 5: notice 6: info 7: debug
journalctl -p err -b

日志默认分页输出,–no-pager 改为正常的标准输出

1
journalctl --no-pager

以 JSON 格式(单行)输出

1
journalctl -b -u nginx.service -o json

以 JSON 格式(多行)输出,可读性更好

1
journalctl -b -u nginx.service -o json-pretty

显示日志占据的硬盘空间

1
$ sudo journalctl --disk-usage

指定日志文件占据的最大空间

1
$ sudo journalctl --vacuum-size=1G

指定日志文件保存多久

1
$ sudo journalctl --vacuum-time=1years

  • mermaid + markdown
  • ProcessOn
  • yed
  • 亿图图示 Edraw Max
  • www.draw.io
  • dia
  • chrome 离线应用 Gliffy Diagrams
  • Tikz

Postgre安装

官网

https://www.postgresql.org/

rpm方式安装

https://yum.postgresql.org/rpmchart.php
postgresql11-11.4-1PGDG.rhel7.x86_64.rpm
postgresql11-contrib-11.4-1PGDG.rhel7.x86_64.rpm
postgresql11-libs-11.4-1PGDG.rhel7.x86_64.rpm
postgresql11-server-11.4-1PGDG.rhel7.x86_64.rpm

1
rpm -ivh postgresql11*

初始化DB

1
2
3
/usr/pgsql-11/bin/postgresql-11-setup initdb
or
postgresql-setup initdb

启动

1
2
systemctl enable postgresql-11
systemctl start postgresql-11

修改配置

cd /var/lib/pgsql/11/data

vi postgresql.conf

1
listen_addresses = '*'

vi pg_hba.conf

1
host    all all 0.0.0.0/0   md5

添加名为kong的用户

1
2
3
useradd kong;
su - postgres
psql
1
2
CREATE USER kong; CREATE DATABASE kong OWNER kong;
CREATE USER kong WITH PASSWORD '123456';
1
psql -U kong -d kong -h 127.0.0.1 -p 5432 

Kong安装

Kong官网

https://konghq.com/

参考文档

https://docs.konghq.com/install/centos/?_ga=2.146470708.1859714253.1563239338-1792454818.1563239338

RPM方式安装

1
rpm -ivh kong-1.2.1.el7.noarch.rpm

配置

1
2
cp /etc/kong/kong.conf.defaul /etc/kong/kong.conf
vi /etc/kong/kong.conf
1
2
3
4
5
6
7
8
database = postgres              # Determines which of PostgreSQL or Cassandra
pg_host = 127.0.0.1 # The PostgreSQL host to connect to.
pg_port = 5432 # The port to connect to.
pg_user = kong # The username to authenticate if required.
pg_password = 123456 # The password to authenticate if required.
pg_database = kong # The database name to connect to.
pg_ssl = off # Toggles client-server TLS connections
pg_ssl_verify = off # Toggles server certificate verification if

初始化

1
2
kong migrations bootstrap -c /etc/kong/kong.conf
kong start /etc/kong/kong.conf

测试

curl -i http://localhost:8001/

GUI

Kong Admin GUI

https://docs.konghq.com/enterprise/0.31-x/admin-gui/

Konga

https://github.com/pantsel/konga

下载

https://neo4j.com/download-center/

官方文档

https://neo4j.com/docs/

参考文章

GUI

http://localhost:7474/browser/

bolt://127.0.0.1:7687
初始密码: neo4j/neo4j

APOC

官网

https://github.com/neo4j-contrib/neo4j-apoc-procedures
https://neo4j-contrib.github.io/neo4j-apoc-procedures/

配置

$NEO4J_HOME/conf/neo4j.conf
dbms.security.procedures.unrestricted=apoc.*

测试

1
2
3
4
5
6
7
CALL dbms.functions() YIELD name
WHERE name STARTS WITH 'apoc.'
RETURN count(name)
UNION
CALL dbms.procedures() YIELD name
WHERE name STARTS WITH 'apoc.'
RETURN count(name)
1
2
3
call apoc.help('meta');
call apoc.meta.graph();
call apoc.generate.ba(1000, 2, 'Person', 'FRIEND_OF');

Spring Data Neo4j

https://docs.spring.io/spring-data/neo4j/docs/5.1.9.RELEASE/reference/html/

简介

iproute2是linux下管理控制TCP/IP网络和流量控制的新一代工具包,旨在替代老派的工具链net-tools,即大家比较熟悉的ifconfig,arp,route,netstat等命令。

net-tools是通过procfs(/proc)和ioctl系统调用去访问和改变内核网络配置,而iproute2则通过netlink套接字接口与内核通讯。

对照表

net-tools iproute2
arp -na ip neigh
ifconfig ip link
ifconfig -a ip addr show
ifconfig -s ip -s link
ifconfig eth0 up ip link set eth0 up
ipmaddr ip maddr
iptunnel ip tunnel
netstat ss
netstat -i ip -s link
netstat -g ip maddr
netstat -l ss -l
netstat -r ip route
route add ip route add
route del ip route del
route -n ip route show

ss常用操作

-s查看当前服务器的网络连接统计

1
ss -s

-l查看所有监听的网络端口,-p并列出具体的程序名称

1
ss -lp

-a查看这台服务器上所有的socket连接

1
ss -a

替代netstat -ntlp

1
ss -nltp|column  -t

替代lsof -i

1
ss -nltp|grep 18010

ip常用操作

检查网卡的诸如 IP 地址

1
2
ip addr show
ip a

启用/禁用网卡

1
2
ip link set eth0 up
ip link set eth0 down

配置IP地址

1
2
ip addr add 10.211.55.13/24 brd + dev eth0
ip addr del 10.211.55.13/24 dev eth0

检查路由

1
ip route show

检查ARP记录

1
ip neigh

参考文档

关闭selinux

1
2
setenforce 0
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config

停用防火墙

1
2
systemctl disable firewalld.service
systemctl stop firewalld.service

安装KVM

1
yum -y install qemu-kvm libvirt virt-install bridge-utils 

安装后需要重启系统

开启libvirtd服务

1
2
systemctl start libvirtd
systemctl enable libvirtd

创建虚拟机

1
2
3
4
5
6
7
8
9
10
11
virt-install \
--virt-type=kvm \
--name=centos01 \
--vcpus=2 \
--memory=2048 \
--location=/tmp/CentOS-7-x86_64-Minimal-1511.iso \
--disk path=/home/vms/centos01.qcow2,size=40,format=qcow2 \
--network bridge=br0 \
--graphics none \
--extra-args='console=ttyS0' \
--force

虚拟机管理

1
2
3
4
5
6
7
8
9
10
11
12
virsh list              # 查看在运行的虚拟机
virsh list --all # 查看所有虚拟机
virsh console centos72
virsh start centos72 # 虚拟机开启(启动):
virsh reboot centos72 # 虚拟机重新启动
virsh shutdown centos72 # 虚拟机关机
virsh destroy centos72 # 强制关机(强制断电)
virsh suspend centos72 # 暂停(挂起)KVM 虚拟机
virsh resume centos72 # 恢复被挂起的 KVM 虚拟机
virsh undefine centos72 # 该方法只删除配置文件,磁盘文件未删除
virsh autostart centos72 # 随物理机启动而启动(开机启动)
virsh autostart --disable centos72 # 取消标记为自动开始(取消开机启动)

相关

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
libvirt-client   # libvirt的客户端,最重要的功能之一就是在宿主机关机时可以通知虚拟机也关机  
gpxe-roms-qemu # 虚拟机 iPXE 的启动固件,支持虚拟机从网络启动
libvirt-python # libvirt 为 python 提供的 API
python-virtinst # 一套 Python 的虚拟机安装工具
qemu-kvm # KVM 在用户空间运行的程序
libvirt # 用于管理虚拟机,它提供了一套虚拟机操作 API
virt-manager # 基于 libvirt 的图像化虚拟机管理软件
virt-viewer # 显示虚拟机的控制台 Console
virt-top # 类似于 top 命令,查看虚拟机的资源使用情况
virt-what # 在虚拟机内部执行,查看虚拟机运行的虚拟化平台
qemu-img # 用于操作虚拟机硬盘镜像的创建、查看和格式转化
qemu-kvm: 主要包含KVM内核模块和基于KVM重构后的QEMU模拟器. KVM模块作为整个虚拟化环境的核心工作在系统空间, 负责CPU和内存的调度. QEMU作为模拟器工作在用户空间, 负责虚拟机I/O模拟.
依赖包 quemu-img: 主要用来QEMU磁盘镜像的管理, 如新建一块磁盘镜像给虚拟机.
libvirt: 提供Hypervisor和虚拟机管理的API.
libvirt-client: KVM客户端命令行管理工具virsh, 负责虚拟机的启动、停止和管理等.
libvirt-daemon: libvirtd守护进, 作为客户端管理工具跟Hypervisor和虚拟机之间的桥梁.
libvirt-daemon-driver-xxx: 从名字来看属于libvirtd服务的驱动文件, 作为libvirtd服务跟Hypervisor不同对象(如qemu模拟器、网络、存储等)间的接口.
bridge-utils: 网桥管理工具包, 负责桥接网络的创建、配置和管理等工作.
virt-install: 创建和克隆虚拟机的命令行工具包.
virt-manager: 图形界面的KVM管理工具.

图形界面

1
2
yum install virt-manager
virt-manager

配置桥接模式

停用NetworkManager

1
2
systemctl stop NetworkManager
systemctl disable NetworkManager

cd /etc/sysconfig/network-scripts
vi ifcfg-br0

1
2
3
4
5
6
7
8
DEVICE=br0
TYPE=Bridge
BOOTRPOTO=static
IPADDR=10.211.55.11
NETMASK=255.255.255.0
GATEWAY=10.211.55.1
DNS1=10.211.55.1
ONBOOT=yes

vi ifcfg-eth0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
#IPADDR=10.211.55.11
#PREFIX=24
#GATEWAY=10.211.55.1
#DNS1=10.211.55.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=eth0
UUID=9beea3d9-92ac-4f7f-b5eb-c8341f308a7d
ONBOOT=yes
DEVICE=eth0
BRIDGE=br0

安装X11和Gnome

1
2
yum groupinstall "X Window System"
yum groupinstall "GNOME Desktop"

切换启动模式

1
2
systemctl set-default multi-user.target  //设置成命令模式
systemctl set-default graphical.target //设置成图形模式

远程访问并启动X

1
2
3
4
ssh -Y root@10.211.55.11
startx

systemctl start gdm

TigerVNC安装

yum install tigervnc tigervnc-server

设置vnc密码

1
vncpasswd

TigerVNC配置

1
2
3
4
cp /lib/systemd/system/vncserver@.service  /etc/systemd/system/vncserver@:1.service

vi /etc/systemd/system/vncserver@\:1.service
将<USER>替换

TigerVNC启动

1
2
3
4
systemctl daemon-reload
systemctl start vncserver@:1
systemctl status vncserver@:1
systemctl enable vncserver@:1

VNC以590+x作为访问端口,第1个server是5901端口

macOS访问VNC

原生支持VNC访问,Finder中cmd+k,弹出窗口中输入
vnc://10.211.55.11:5901