FlayerVEO 学无止境 - 服务
http://flayerveo.com/index.php/category/server
-
Linux 监控 相关命令
http://flayerveo.com/index.php/archives/2648/
2020-02-15T14:26:15+00:00
CPU相关:
```shell
lscpu 查看CPU信息
uptime 查看系统负载 (运行多长时间,有多少用户,平均负载)
top 实时查看当前系统负载
vmstat 1 实时查看当前系统负载,并1秒刷新一次
mpstat 1 查看CPU信息,并1秒刷新一次
```
内存相关:
```shell
free -m 查看内存占用信息
```
硬盘相关:
```shell
df -h 以易读的方式查看磁盘使用量
df -i 以inode模式来显示磁盘使用情况
iotop 查看磁盘读写详细速度与占比(需要先yum -y install iotop)
```
网络相关:
```shell
netstat -tunlp 查看tcp与udp服务端口
netstat -anlpt 查看tcp服务端口
ss -tunlp 查看tcp与udp服务端口
ss -anlpt 查看tcp服务端口
```
-
Linux Zabbix 指令监控
http://flayerveo.com/index.php/archives/2647/
2020-02-15T14:25:37+00:00
客户端:
进入zabbix_agentd.conf配置文件:
在第293行设置指令:
格式:
UserParameter=键值,指令

重启zabbix客户端服务:

服务端调用:
格式:zabbix_get -s IP地址 -p 客户端zabbix端口 -k 指令键值


服务端通过WEB管理监控指令:
找到对应需要监控主机的应用集:







设置警告的触发器:



添加图形:


-
Linux Zabbix Agent客户端安装使用
http://flayerveo.com/index.php/archives/2630/
2020-02-15T14:23:36+00:00
服务端的客户端启动:
```shell
/etc/init.d/zabbix_agentd start
```

非:
```shell
/etc/init.d/iptables stop
setenforce 0
yum localinstall zabbix-agent.rpm
```


```shell
/etc/init.d/zabbix_agentd start
```
创建hostname:


web名称:hostname
可见名称:随便取,给自己看




查看监控数据:



-
Linux Zabbix 网页配置
http://flayerveo.com/index.php/archives/2617/
2020-02-15T14:21:33+00:00



账户名:Admin
密码:zabbix

修改中文:


-
Linux Zabbix 环境配置
http://flayerveo.com/index.php/archives/2610/
2020-02-15T14:20:41+00:00
第一步:关闭安全配置
```shell
/etc/init.d/iptables stop
chkconfig iptables off
使用getenforce查看selinux状态
vi /etc/selinux/config 设置SELINUX=disabled
reboot重启系统
```
第二步:部署LNMP环境
设置服务开机启动:

第三步:准备Zabbix
添加依赖包:
```shell
yum -y install net-snmp-devel unixODBC-devel openssl-devel java-devel curl-devel OpenIPMI
rpm -ivh OpenIPMI-devel-2.0.16-14.el6.x86_64.rpm --nodeps --force
rpm -ivh fping*
```
添加用户:
```shell
useradd zabbix -s /sbin/nologin
```
第四步:解压Zabbix,编译安装:
```shell
mkdir -p /application/tools
cd /application/tools
```
解压包:

编译安装:
```shell
cd zabbix-3.0.3
./configure --prefix=/application/zabbix-3.0.3 --enable-server --enable-agent --enable-java --enable-ipv6 --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-unixodbc --with-openssl
make && make install
ln -s /application/zabbix-3.0.3 /application/zabbix
```
第五步:配置MYSQL:
```shell
create database zabbix character set utf8 collate utf8_bin;
grant all on zabbix.* to zabbix@'127.0.0.1' identified by 'zabbix';
flush privileges;
```

导入数据库(注意导入顺序!):
```shell
use zabbix;
source /application/tools/zabbix-3.0.3/database/mysql/schema.sql;
source /application/tools/zabbix-3.0.3/database/mysql/images.sql;
source /application/tools/zabbix-3.0.3/database/mysql/data.sql;
```
退出后再外部命令行输入:
```shell
#cp /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
#ldconfig
```
第六步:复制web代码配置PHP:
```shell
mkdir -p /usr/local/nginx/html/zabbix
cp -a /application/tools/zabbix-3.0.3/frontends/php/* /usr/local/nginx/html/zabbix
chmod -R 777 /usr/local/nginx/html/zabbix
```
进入php.ini:
```shell
vi /usr/local/php/php.ini
```
设置
```shell
max_execution_time=300
max_input_time=300
post_max_size=16M
date.timezone=Asia/Shanghai
always_populate_raw_post_data = -1
```
重启PHP:
```shell
killall php-fpm
/usr/local/bin/php-fpm
```
第七步:配置nginx及启动zabbix服务端:
复制test.txt中的内容直接输入命令行


重启nginx:
```shell
killall nginx
/usr/local/nginx/nginx
```
zabbix服务配置:
服务文件配置:
```shell
sed -i -e '77a DBHost=127.0.0.1' -e '111a DBPassword=zabbix' /application/zabbix/etc/zabbix_server.conf
```

复制启动脚本:


修改启动脚本:
sed -i 's#BASEDIR=/usr/local#BASEDIR=/application/zabbix#'

启动脚本:

检查是否搭起:

-
Linux Zabbix 介绍
http://flayerveo.com/index.php/archives/2598/
2020-02-15T14:17:11+00:00
zabibx主要由2部分构成zabbix server(服务端)和zabbix agent(客户端),可选组件zabbix proxy(用于分布式监控的组件)
zabbix server可以通过SNMP,zabbix agent,fping,端口监视等方法对远程服务器或网络状态进行监控,数据收集等功能。
zabbix的主要监控范畴:

-
Linux 日志
http://flayerveo.com/index.php/archives/2596/
2020-02-15T14:16:17+00:00
三类日志:
用户日志 系统日志 程序日志

用户日志:
secure:主要记录用户与组的注册与注销
utmp和wtmp:
1.当前登录用户的信息记录在文件utmp中;utmp可被who、w、users和finger命令使用。
2.登录和退出记录在文件wtmp中;数据交换、关机以及重启的信息也都记录在wtmp文件中;wtmp文件被命令last和ac使用。
3.所有的记录都包含时间戳。时间戳对于日志来说非常重要,因为很多攻击行为分析与实践有极大关系。
4.这两个文件是二进制文件,不能使用tail、cat之类的命令来访问。


系统日志:
由系统服务rsyslogd统一管理,用于管理日志文件
主要程序:/sbin/rsyslogd
配制文件:/etc/rsyslog.confg
主要用于查看系统详细信息的日志文件:/var/log/messages


日志记录的格式:

程序日志:

-
Linux 指令大全
http://flayerveo.com/index.php/archives/2588/
2020-02-15T14:14:31+00:00
文字转图形: ctrl alt f7
图形转文字:ctrl alt f2
文件合并:
```shell
a.conf(文件1) b.conf(文件2)
cat a.conf b.conf >(新文件)
合并的文件必须是同一类型的文件
其他:
man ascii 查看ascii码表
```
系统信息
```shell
arch 显示机器的处理器架构(1)
uname -m 显示机器的处理器架构(2)
uname -r 显示正在使用的内核版本
uname –a 显示计算机所有信息
dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)
hdparm -i /dev/hda 罗列一个磁盘的架构特性
hdparm -tT /dev/sda 在磁盘上执行测试性读取操作
cat /proc/cpuinfo 显示CPU info的信息
cat /proc/interrupts 显示中断
cat /proc/meminfo 校验内存使用
cat /proc/swaps 显示哪些swap被使用
cat /proc/version 显示内核的版本
cat /proc/net/dev 显示网络适配器及统计
cat /proc/mounts 显示已加载的文件系统
lspci -tv 罗列 PCI 设备
lsusb -tv 显示 USB 设备
date 显示系统日期
cal 2007 显示2007年的日历表
date 041217002007.00 设置日期和时间 - 月日时分年.秒
clock -w 将时间修改保存到 BIOS
关机 (系统的关机、重启以及登出 )
shutdown -h now 关闭系统(1)
init 0 关闭系统(2)
telinit 0 关闭系统(3)
shutdown -h hours:minutes & 按预定时间关闭系统
shutdown -c 取消按预定时间关闭系统
shutdown -r now 重启(1)
reboot 重启(2)
logout 注销
```
文件和目录
```shell
cd /home 进入 '/ home' 目录'
cd .. 返回上一级目录
cd ../.. 返回上两级目录
cd 进入个人的主目录
cd ~user1 进入个人的主目录
cd - 返回上次所在的目录
pwd 显示工作路径
ls 查看目录中的文件
ls -F 查看目录中的文件
ls -l 显示文件和目录的详细资料
ls -a 显示隐藏文件
ls -n 显示文件suid和guid
ls *[0-9]* 显示包含数字的文件名和目录名
tree 显示文件和目录由根目录开始的树形结构(1)
lstree 显示文件和目录由根目录开始的树形结构(2)
mkdir dir1 创建一个叫做 'dir1' 的目录'
mkdir dir1 dir2 同时创建两个目录
mkdir -p /tmp/dir1/dir2 创建一个目录树
rm -f file1 删除一个叫做 'file1' 的文件'
rmdir dir1 删除一个叫做 'dir1' 的目录'
rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容
rm -rf dir1 dir2 同时删除两个目录及它们的内容
mv dir1 new_dir 重命名/移动 一个目录
cp file1 file2 复制一个文件
cp dir/* . 复制一个目录下的所有文件到当前工作目录
cp -a /tmp/dir1 . 复制一个目录到当前工作目录
cp -a dir1 dir2 复制一个目录
ln -s file1 lnk1 创建一个指向文件或目录的软链接
ln file1 lnk1 创建一个指向文件或目录的物理链接
touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm)
tac file1 从最后一行开始反向查看一个文件的内容
more file1 查看一个长文件的内容
head -2 file1 查看一个文件的前两行
tail -2 file1 查看一个文件的最后两行
tail –t filename 实时监控一个文件
```
DEB 包 (Debian, Ubuntu 以及类似系统)
```shell
dpkg -i package.deb 安装/更新一个 deb 包
dpkg -r package_name 从系统删除一个 deb 包
dpkg -l 显示系统中所有已经安装的 deb 包
dpkg -l | grep httpd 显示所有名称中包含 "httpd" 字样的deb包
dpkg -s package_name 获得已经安装在系统中一个特殊包的信息
dpkg -L package_name 显示系统中已经安装的一个deb包所提供的文件列表
dpkg --contents package.deb 显示尚未安装的一个包所提供的文件列表
dpkg -S /bin/ping 确认所给的文件由哪个deb包提供
```
APT 软件工具 (Debian, Ubuntu 以及类似系统)
```shell
apt-get install package_name 安装/更新一个 deb 包
apt-cdrom install package_name 从光盘安装/更新一个 deb 包
apt-get update 升级列表中的软件包
apt-get upgrade 升级所有已安装的软件
apt-get remove package_name 从系统删除一个deb包
apt-get check 确认依赖的软件仓库正确
apt-get clean 从下载的软件包中清理缓存
apt-cache search searched-package 返回包含所要搜索字符串的软件包名称
```
文件系统分析
```shell
badblocks -v /dev/hda1 检查磁盘hda1上的坏磁块
fsck /dev/hda1 修复/检查hda1磁盘上linux文件系统的完整性
fsck.ext2 /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性
e2fsck /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性
e2fsck -j /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性
fsck.ext3 /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性
fsck.vfat /dev/hda1 修复/检查hda1磁盘上fat文件系统的完整性
fsck.msdos /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性
dosfsck /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性
```
备份
```shell
dump -0aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的完整备份
dump -1aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的交互式备份
restore -if /tmp/home0.bak 还原一个交互式备份
rsync -rogpav --delete /home /tmp 同步两边的目录
rsync -rogpav -e ssh --delete /home ip_address:/tmp 通过SSH通道rsync
rsync -az -e ssh --delete ip_addr:/home/public /home/local 通过ssh和压缩将一个远程目录同步到本地目录
rsync -az -e ssh --delete /home/local ip_addr:/home/public 通过ssh和压缩将本地目录同步到远程目录
dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz' 通过ssh在远程主机上执行一次备份本地磁盘的操作
dd if=/dev/sda of=/tmp/file1 备份磁盘内容到一个文件
tar -Puf backup.tar /home/user 执行一次对 '/home/user' 目录的交互式备份操作
( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p' 通过ssh在远程目录中复制一个目录内容
( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p' 通过ssh在远程目录中复制一个本地目录
tar cf - . | (cd /tmp/backup ; tar xf - ) 本地将一个目录复制到另一个地方,保留原有权限及链接
find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents 从一个目录查找并复制所有以 '.txt' 结尾的文件到另一个目录
find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2 查找所有以 '.log' 结尾的文件并做成一个bzip包
dd if=/dev/hda of=/dev/fd0 bs=512 count=1 做一个将 MBR (Master Boot Record)内容复制到软盘的动作
dd if=/dev/fd0 of=/dev/hda bs=512 count=1 从已经保存到软盘的备份中恢复MBR内容
```
-
Linux 用户注销
http://flayerveo.com/index.php/archives/2587/
2020-02-15T14:13:05+00:00
命令行界面:
logout exit
图形化界面:

快捷键:Ctrl+Alt+Backpace (充当快速重启)
-
Linux 用户与组管理
http://flayerveo.com/index.php/archives/2585/
2020-02-15T14:12:27+00:00
#Linux用户与组管理
##用户管理
1)useradd
useradd 用于添加用户账号或设置添加用户使用的默认信息。格式如下:
```shell
格式1:useradd [options] (LOGIN)
格式2:useradd -D
格式3:useradd -D [options]
```
说明:
格式1:用于添加用户账号,LOGIN 为用户登录账号
格式2:用于显示添加用户使用的默认信息
格式3:用于设置添加用户使用的默认信息
选项说明:
```shell
-u UID 指定新用户的 UID,默认为使用当前最大的 UID 加1
-g GROUP 指定新用户的主组
-G GROUP1[,GROUP2,…[,GROUPN]]] 指定新用户的附加组
-d HOME_DIR 指定新用户的登录目录
-s SHELL 指定新用户使用的 Shell,默认为 bash
-p 设置密码
-M 不建立使用者目录(自家目录)
```
改变用户默认值选项:
```shell
在配置文件 /etc/login.defs 和 /etc/default/useradd 中存放了用户默认数据。
```
使用举例:
```shell
1、创建一个新用户 newuser,同时创建用户自家目录
# useradd newuser
2、创建一个新用户 tom,同时加入 staff 附加组中
# useradd -G staff tom
3、创建一个新用户 webmaster,不创建用户自家目录,指定登录目录 /www,同时加入 apache 附加组中
# useradd -d /www -M -G apache webmaster
```
创建用户不需要额外输入密码的方式:
```shell
1.useradd UserName -p Password //这里的password需要时密文
2.adduser UserName
echo "UserName:Password" | chpasswd //虽然分为两句但也不用额外输入
```
useradd 和 adduser
useradd: 如果不加参数创建的是三无用户,三无: 1.无HOME目录 2.无密码 3.无系统Shell
adduser: 如果不加参数,系统会用交互式会话向你获取用户信息
2)usermod
usermod 用于修改系统已存在的组账号。格式如下:usermod [options] LOGIN
其中:
LOGIN:要修改的用户名
选项: -d、-e、-f、-g、-G、-s、-u 的含义与 useradd 选项的含义相同
选项说明:
```shell
-l NEW_LOGIN:更改用户登录名为 NEW_LOGIN
-e EXPIRE_DATE 指定用户的登录失效时间,格式为 YYYY-MM-DD 2017-03-21
-f INACTIVE 指定在密码过期后多少天即关闭该账号, 默认值为 -1,即不做限制
-m 创建新用户的自家目录,默认值
-M 不创建新用户的自家目录
-b BASE_DIR 定义使用者所属目录的上级目录。用户名称会附加在BASE_DIR后面用来建立新使用者的目录。 当然使用-d后则此选项无效。
-g GROUP 定义新账号起始组名或GID。组名必须为现已存在的组名。GID也必须为现已存在的GID。
-s SHELL 定义用户默认使用的 shell。
-L:锁定用户账号
-U:对用户账号解除锁定
```
举例:
```shell
1、将 newuser2 添加到组 staff 中
# usermod -G staff newuser2
2、修改 newuser 的用户名为 newuser1
# usermod -l newuser1 newuser
3、锁定账号 newuser1
# usermod -L newuser1
4、解除对 newuser1 的锁定
# usermod -U newuser1
```
3)userdel
userdel 用于删除系统已存在的组账号。格式如下:userdel [-r] LOGIN
其中:
LOGIN:为要删除的用户账号名
-r:同时删除用户的自家目录和 mail 的假脱机文件
例如:
```shell
1、删除用户 webmaster
# userdel webmaster
2、删除用户 newuser1,同时删除其自家目录
# userdel -r newuser1
```
##组管理
1)Groupadd
groupadd 用于添加组账号。格式如下:groupadd [-g GID] GROUP
其中:
GROUP:是要添加的组名
-g:用于指定 GID,默认为使用当前最大的 GID 加1
举例: 添加一个新组 leader
```shell
# groupadd leader
```
2)groupmod
groupmod 用于修改系统已存在的组账号。格式如下:groupmod [options] GROUP
其中:
GROUP:为要修改的组账户名
常用选项:
```shell
-g GID:重新指派 GID
-n NEW_GROUP:更改组名为 NEW_GROUP
举例: 将 leader 组更名为 leaders
# groupmod -n leaders leader
将 leaders 组的 GID 改为 3000
# groupmod -g 3000 leaders
```
3)groupdel
groupdel 用于删除系统已存在的组账号。格式如下:groupdel GROUP
其中:GROUP 为要删除的组账户名
例如:删除 leaders 组
```shell
# groupdel leaders
```
4) gpasswd命令
功能:管理组中的用户
用法:gpasswd [-a username] groupname
参数:
```shell
-a:添加用户到组
-d:从组删除用户
-A:指定管理员
-r:删除密码
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组
```