一、初次见面

  • 开源
  • 安全性高
  • 可定制
  • 多用户、多任务
  • 良好移植性

https://pan.baidu.com/s/1RNk1_2PlS2bqVO6IvBRcyQ 密码:bmr2

systemctl restart 服务名称 重启服务

systemctl start 服务名称 启动服务

systemctl stop 服务名称 停止服务

systemctl enable 服务名称 加入到启动项

systemctl status 服务名称 查看服务状态

RHEL5、RHEL6 init service

RHEL7 systemd systemctl

systemd 服务名称

systemcl 配置工具

连接方式

桥接

利用真实网卡,简单

NAT

利用8假网卡

host-only

利用8假网卡

1.23

/dev/hda1 (IDE硬盘接口)

/del/sda1 (SCSI硬盘接口、SATA硬盘接口)

清屏

ctrl + l

clear

终止操作

ctrl + c

写入

echo “www.mingyuefusu.cn" >> /etc/issue

分区

/boot 200MB

/home 2000MB

swap 1000MB

全部

关机(不要)

init 0

shutdown -h now

shutdown -h 10

poweroff

halt

重启

应该关闭服务

reboot

shutdown -r now

ifconfig eth0 196……

ls /bin/

文件类型

linux不考后缀名区分

  • 压缩包:*.gz *.bz2 *.bz2 *.tgz
  • 配置文件:*.conf
  • 网页:*.html *.php
  • 脚本文件:*.sh

所有存储设备都必须挂载(分配盘符)后才能使用,硬盘,U盘,光盘

系统目录

  • /bin/:命令

  • /sbin/:管理员root命令

  • /boot/:系统启动目录,保存系统启动相关的文件,如内核文件和启动引导程序文件等

  • /dev/:硬件设备文件

  • /etc/:配置文件保存文件,默认安装方式的服务的配置文件全部保存在这,如用户账户和密码,服务的启动脚本,常用服务的配置文件等

  • /home/:普通用户的家目录,每个用户的登陆位置user1用户 :/home/user1

  • /lib/:系统调用函数库保存位置

  • /lost+found/:系统崩溃和意外关机产生的文件碎片

  • 挂载目录

    • /media/:挂载媒体设备,软盘光盘
    • /mnt/:挂载U盘,移动硬盘和其他操作系统的分区
    • /misc/:挂载NFS服务的共享目录
  • /opt/:安装软件位置,习惯性安装到/usr/local/目录中

  • /proc/:虚拟文件目录,在内存中,保存CPU信息,设备驱动,文件系统列表,网络协议信息

  • /sys/:虚拟文件目录,在内存中,保存内核相关信息

  • /srv/:服务数据目录

  • /root/:超级用户家目录,普通用户目录在/home下,超级用户家目录直接在/下

  • /tmp/:临时目录,清空

  • /usr/:系统软件资源目录,unix software resourece

  • /var/:动态数据,缓存、日记、软件运行所产生的的文件

命令

  • cd [目录名]
  • .. 上一级目录,~ home目录, - 前一级命令
  • pwd 当前目录

三类用户

  • 所有者:一个人
  • 所属组:一组相同的用户
  • other

lrwxrwxrwx 链接

d 目录

-

注意

  • 远程服务器不要关机,应该重启

  • 重启应该关闭服务

  • 不要在服务器访问高峰运行高负载命令

  • 远程配置防火墙(渔网)时不要把自己提出服务器

  • 密码规范,定期更新

  • 合理分配权限

  • 定期备份重要数据和日志

二、 常用命令

命令格式与目录处理命令ls

命令格式

​ 格式:命令 [-选项] [参数]

​ ls -la /etc

  1. 个别命令不遵循,

  2. 多个选项可以连接在一起,

  3. 简化选项与完整选项

    -a 等于 –all

目录处理命令:ls list

  • 命令存在目录:/bin/ls

  • ls 选项[-ald] 文件或目录

    • -a 显示所有文件,包括隐藏文件
    • -l 详细信息显示
    • -d 目录属性
    • -i 文件id号
    • -h 大小
  • ls -l :long长格式

  • ls -lh:文件大小k

  • -rw-r–r–

    • ’-‘ 文件类型( - 二进制文件 d 目录 l 软连接文件)
    • 文件类型、读写、组、其他人

目录处理命令

mkdir: make direcctories

路径: /bin/mkdir

语法:mkdir -p /tmp/japan/gg /tmp/japan/bb 多个递归创建

cd: change directory

路径:shell内置命令

执行权限:所有用户

cd .. 上级命令

pwd 当前目录

rmdir /tmp/japan删除空目录

cp :copy 复制

cp -rp [源文件或目录] [目标目录/后来的名称]

​ -r 复制目录

​ -p 保留文件属性(时间)

mv : move 剪切、改名

路径:/bin/mv

功能:剪切文件、改名

语法:mv [原文件或目录] [目标目录]

rm : remove 删除

语法: rm -rf /tmp/japan

​ -r 删除目录

​ -f 强制执行

文件处理命令

touch 创建文件

touch [文件名]

语法:创建空文件

cat 查看文件

​ -n 显示行号

tac 反向查看文件

more 分页显示文件内容

more [文件名]

后:

f或者空格一页、回车一行、q退出

less 分页显示文件内容,可向上翻页

less /etc/services

pgup 向上翻页

/ 搜索 n 下一个

head 显示文件前几行

-n 指定行数

head -n 20 /etc/services

tail 显示文件末尾几行

-n 指定行数

-f 动态显示文件末尾内容

默认10

连接命令

语法: ln -s [原文件] [目标文件]

​ -s 创建软连接

例子:ln -s /etc/issue /tmp/issue.soft *.hard

硬链接

  • 硬链接同步更新,删除还在
  • 不针对目录
  • 不能跨分区
  • 通过i 节点识别

权限管理命令

读4,写2,执行1

user group otheruser

lrwxrwxrwx.   1 root    root             7 Apr 30  2020 bin -> usr/bin
dr-xr-xr-x.   4 root    root           275 Apr 30  2020 boot
- 普通文件
l 链接文件
d 目录文件

权限管理命令 chmod

英文:change the permissions modes of a file
功能描述:修改文件或目录权限

路径:/bin/chmod

权限:所有用户

语法:chmod [{ user group otherUser a } {+-=} {rwx}] [文件或目录]
[mode=421] [文件或目录]
-R 递归修改

    - r -- 4
    - w -- 2
    - x -- 1

​ rwx 7

创建用户、组

useradd mingming;

passwd [mingming]

groupadd brother;

权限介绍

命令 介绍 文件 目录
r 读权限 可以查看文件内容 可以列出目录中的内容
w 写权限 可以==修改文件内容== 可以在目录中创建、==删除文件==
x 执行权限 可以执行文件 可以进入目录

其他权限管理命令

所有者、管理员修改权限

  • chown 修改文件名所有者

    语法:chown [用户] [文件或目录]

    功能:改变文件或目录的所有者

    例子:chown mingming wenjian

  • chgrp

    功能:改变文件或目录的所属组

    语法:chgrp [用户组] [文件或目录]

  • umask

    unmask -S 查看创建的文件的权限

    0 022

    777 rwx rwx rwx

    022 — -w- -w-

    ​ rwx r-x r-x 目录,文件没有x

    异或

文件搜索命令

文件搜索命令find

路径:/bin/find

权限:所有

语法:find [搜索范围] [匹配条件]

  1. find /etc -name init

​ -iname 不区分大小写

​ 匹配符

  • *所有
  • ?单个字符
  1. find / -size +204800

    +大于 -小于

    在根目录下查找大于100mb的文件

    单位: 1数据块 512字节 0.5k

    1字节=8bit 1字=2字节

  2. find /home -user mingming

    -group

    在home目录下查找所有者为mingming的文件

  3. find /etc -cmin -5

    在/etc下查找5分钟内被修改过属性的文件和目录

    -amin 访问时间 Access

    -cmin 文件属性 change

    -mmin 文件内容 modify

  4. -type f 文件 d 目录 l 软链接文件

  5. *连接 -a -o and or *

  6. find /etc -name initname -exec ls -l {} ;

    -exec *

    -ok 确认选项

其他搜索命令

  1. ==locate== fileName

    1. yum install mlocate updatedb
  2. updatedb 更新文件数据

  3. which 命令 获取命令绝对路径,别名

  4. whereis 并且获得帮助文档

  5. grep 文件中搜索字符串

    • -i 不区分大小写

    • -v 排除指定字符

    ​ grep -v ^# /etc/initab 中 ‘^’行首

帮助命令

1 命令帮助 5 配置文件的帮助

whatis ls(命令)

查看简短帮助文档

apropos 配置文件

只查看选项参数: ls –help

man : manual指南

不用路径

获取作用 选项

man date

date 日期格式

man services

/date 查找

help

查shell内置命令

help umask

命令 –help

用户管理命令

useradd

useradd mingming

passwd

passwd mingming

who

查看登录用户

显示目前登录系统的用户信息

tty 本地登录

pts远程终端

w 详细

压缩解压命令

格式 .gz .zip .rar

gzip : GUN zip

gzip [文件]

gzip -rv test6 # 递归压缩

压缩后 .gz

gzip -d 解压

只能压缩文件,不保留源文件

gunzip GUN unzip

gunzip txt.gz

tar 压缩解压

tar -cvf [压缩后文件名] [目录]

​ -c 打包

-v 显示详细信息

​ -f 指定文件名

​ -z 打包同时压缩

​ -x 解包

​ -z 解压缩

tar -zxvf Japan.tar.gz

zip test.zip test

zip -r Japan.zip Japan

解压命令:unzip

bzip2

bunzip2

网络命令

write

给用户发信息

write ming

ctrl + 退格键 或 del

Ctrl+D 保存结束

Ctrl + / 退出

wall

给所有用户发信

wall haha!

ping

ping 选项 IP地址

​ -c 指定发送次数

ping 192.155.555.555

ifconfig

英语 :interface configure

权限 :root

路径 :/sbin/ifconfig

语法 :inconfig 网卡名称 IP地址

mail

mail [用户名]

last

列出用户登录信息

lastlog

列出所有用户

lastlog -u 502(名称)

traceroute

显示数据包到主机间的路径

traceroute www.mingyuefusu.cn

netstat

显示网络相关信息

netstat -

  • t : TCP协议(电话)
  • u: UDP协议(短信,快)
  • l: 监听
  • r: 路由
  • n: 显示IP地址和端口号

netstat -tlun 监听本机监听的端口

netstat -an 查看本机所有的网络连接

netstat -rn 查看本机路由表

netstat -tunlp | grep 端口号

setup

配置网络

mount 挂载命令

mount [-t 文件系统] 设备文件名 挂载点

mount -t iso9660 /dev/sr0 /mnt/cdrom

ll /dev/cdrom

mkdir /mnt/cdrom

mount /dev/sr0 /mnt/cdrom

卸载

umount /dev/sr0

curl

curl排查DNS解析慢的原因:https://blog.csdn.net/weixin_30621919/article/details/95895508

curl -d 'userType=1' -d 'loginType=2' -d 'name=' -d 'passwd=' -X POST http://11.6/pages/gmxyLoginStudent.action |iconv -fgb2312 -t utf-8

关机重启

shutdown

shutdown -h now(时间20:33)

-c : 取消前一个关机命令

-h : 关机

-r : 重启

reboot

init 6

运行级别

0 关机

1 单用户,root权限,远程维护,禁止远程登录

2 不完全多用户,不包含network file server

3 完全多用户,有NFS网络文件系统

4 未分配

5 图形界面

6 重启

cat /ect/inittab

runlevel 运行级别

systemctl get-default
# 切换运行级别
systemctl isolate multi-user.target
# or
systemctl isolate runlevel3.target

# 查看对应运行级别
ls -l /lib/systemd/system/runlevel*

logout

空间不足

du -h --max-depth=1 

三、vim

vim是一个功能强大的全屏幕文本编辑器,linux上最常用的文本编辑器,作用是建立、编辑、显示文本文件,vim没有菜单,只有命令

/host n 下一个

工作模式

image-20200310132812675

基础

进入命令: vi filename

退出命令::wq

插入文本: iao

退出插入:ESC

编辑模式::

插入命令

iao 前后新

image-20200310133614195

定位命令

image-20200310134547475

删除命令

image-20200310134915675

:1000,1005d 删除

复制和剪切命令

image-20200310135525586

替换或取消

image-20200310135740810

搜索和搜索替换命令

image-20200310140125100

/g不询问

/c询问

保存和退出命令

image-20200310140524567

zq 不保存退出

ll : ls -ld

选择范围

:set nu

:替换范围

%s 全文替换

起始行,终止行s /要替换的字符串/替换的新的字符串/g

​ c询问确认

:$s /ftp/yangmi/g

image-20200310132107652

vim技巧

导入命令执行结果:r !命令

r !文件

定义快捷键:map 快捷键 触发命令

  • 连续行注释 :n1,n2s/^/#/g

  • 去掉行注释 :n1,n2s/^#//g

  • 连续代码注释 :n1,n2s/^/\/\//g

  • 替换 :ab mymail 234234@qq.com

永久设置

.vimrc

/home/username/.vimrc

/root/.vimrc

快捷键

ZZ保存退出

ZQ不保存退出

四、软件包管理

软件包管理简介

软件分类

  • 源码包
    • 脚本安装包
  • 二进制包(RPM包、系统默认包)

源码包优点

  • 开源,可以修改
  • 可以自由选择功能
  • 软件是编译安装,所以更适合自己的系统,更稳定,效率更高
  • 卸载方便

源码包缺点

  • 安装过程多,尤其安装较大的软件集合,容易出现拼写时间长
  • 编译时间较长,比二进制安装时间长
  • 因为是编译安装,安装过程中报错很难解决

RPM包优点

  • 包管理系统简单
  • 速度快

RPM包缺点

  • 经过编译,看不到源代码
  • 功能选择不够源码包灵活
  • 依赖性 a->b->c

RPM包管理-rpm命令管理

RPM包命名原则

http-2.2.15-15.el6.centos.1.i686.rpm

httpd 软件包名

2.2.15 软件版本

15 软件发布次数

el6.centos 适合的linux平台

i686 适合的硬件平台

rpm rpm包扩展名

RPM包依赖性

  • 树形依赖:a->b->c
  • 环形依赖:a->b->c->a
  • 模块依赖:查询网站:www.rpmfind.net

安装升级与卸载

包全名与包名

包全名: 操作的包是没有安装的软件包,就是用包全名,而且要注意路径

包名:操作已经安装的软件包,使用包名,是搜索/var/lib/rpm中的数据库

RPM安装

rpm -ivh 包全名

-i(install) 安装

-v(verbose) 显示进度

–nodeps 不检测依赖性

RPM包升级

rpm -Uvh 包全名

-U 升级

卸载

rpm -e 包名

-e 卸载

-nodeps 不检查依赖性

查询是否安装

rpm -q 包名

-q 查询

-a 所有

-qa

查询软件包详细信息

rpm -qi 包名

-i 查询软件信息(information)

-p 查询未安装包信息

查询包中文件安装位置

rpm -ql 包名

-l list

-p 查询未安装包信息

查询系统文件属于哪个RPM包

查询系统属于哪个软件包

rpm -qf 系统文件名

-f 查询系统文件属于哪个软件包

查询软件包的依赖性

rpm -qR 包名

-R 查询安装包的依赖性

-q未安装的

RPM包检验

rpm -V 已安装的包名

-V 检验指定RPM包中的文件(verify)

image-20200310212040262 image-20200310212300738

RPM包中的文件提取(系统某个文件不见)

rpm2cpio | \ \表示换行,没输入完

cpio -idv .文件绝对路径

rpm2cpio

rpm转化为cpio

cpio

创建软件档案文件和从档案文件中提取文件

image-20200310212943426

RPM包管理-yum在线管理

IP地址配置和网络yum源

image-20200310214206561
  • ip配置

    1.setup

    2.vi /etc/sysconfig/network-scripts/ifcfg-eth0

  • 重启服务

    service network restart

  • 网络yum源

image-20200311091804672

yum命令

  • yum list

  • yum search 关键字

  • yum -y install 包名

    • install 包装
    • -y 自动
  • yum -y update 包名

  • yum -y remove 包名

  • yum grouplist

    列出所有可用的软件组列表

  • yum groupinstall 软件组名

    安装指定软件组

  • yum groupremove 软件组名

    卸载

光盘yum源搭建

  1. 挂载光盘

    mkdir /mnt/cdrom

    mount /dev/sr0 /mnt/cdrom

  2. 让网络yum失效

    cd /etc/yum.repos.d/

    mv CentOS-Base.repo … repo.bak

  3. 修改光盘yum源文件

    vim Centos-Media.repo

    注释两个地址

    gpgcheck= 1

    enable = 1

     14 [c6-media]
     15 name=CentOS-$releasever - Media
     16 baseurl=file:///mnt/cdrom
     17 #        file:///media/cdrom/
     18 #        file:///media/cdrecorder/
     19 gpgcheck=1
     20 enabled=1
     21 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

源码包管理

源码包和RPM包的区别

安装前:概念

安装后:位置

RPM包默认位置

image-20200311110850290

源码包默认位置

​ /usr/local/软件名

安装位置的影响

  • RPM apache的启动方法

    /etc/rc.d/init.d/httpd start

    service httpd start

  • 源码包启动方法

    /usr/local/apache2/bin/apachect1 start

源码包的安装过程

  1. 安装编译器

  2. 注意事项

    源代码保存位置:/usr/local/src/

    软件安装位置:/usr/local

  3. 安装过程

    • 下载(使用winscp传入)
    • 解压
      • tar -zxvf httpd-2.4.38.tar.gz
      • du -sh httpd-2.4.38 查看大小
    • 进入该目录
      • ./configure 软件配置与检查
      • 定义需要的功能选项
      • 检测系统环境是否符合安装要求
      • 把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑
    • ./configure –prefix=/usr/local/apache2
    • make
    • image-20200311130644482
    • make install
  4. 访问

    INSTALL

错误

yum install gcc gcc-c++ -y

/root/apr-1.4.5

104 configure:4672: error: in `/root/apr-1.4.5’:
105 configure:4676: error: C compiler cannot create executables

make clean

脚本安装包与软件包选择

  • 不是独立的,常见安装还的是源码包

  • 类似windows下的软件安装方式

webmin

五、我的问题

IP设置

image-20200311115109681

image-20200311115127390

image-20200311115158864

image-20200312174925556

apache无法使用**

service httpd start

第一种**

  1. 暂时关闭防火墙

    service iptables stop

  2. 禁止启动防火墙

    chkconfig iptables off

  3. 重启防火墙

    service iptables restart

第二种

  1. 修改开启80端口

    /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT

  2. 保持80端口开启

    service iptables save

第三种

  1. vim /etc/sysconfig/iptables
  2. 命令修改 iptables 防火墙配置文件,添加一行内容如下:
    -A INPUT -p tcp -m state –state NEW -m tcp –dport 80 -j ACCEPT
  3. service iptables restart

网站目录

/var/www/html/

lnmp无法使用

thinkphp5.1只能显示根网页,所有链接404

location中添加:

location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}

}

session_start(): open) failed: Permission denied (13)

file_put_contents(/var/www/tpblog/runtime/temp/136471ff2580ecd9df29c5772f849835.php): failed to open stream: Permission denied

给报错的文件夹添加权限

chmod 777 文件夹

session_start(): open) failed: Permission denied (13)

/etc/php.ini中

php.ini session.auto_start = 0

session.save_path = “/root/tpblog”

default.conf

nginx -s reload

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /var/www/tpblog/public;
        index  index.html index.htm index.php;
         if (!-e $request_filename) {
                rewrite  ^(.*)$  /index.php?s=$1  last;
                break;
         }
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
#location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           /var/www/tpblog/public;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

原始

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

解决 swap file “*.swp”already exists!

将隐藏的 *.swp 文件删除即可,原先的文件便可再次编辑。

mysql修改密码策略:

在/etc/my.cnf文件

添加validate_password_policy配置,指定密码策略:

选择0(LOW),1(MEDIUM),2(STRONG)其中一种,选择2需要提供密码字典文件。

validate_password_policy=0

如果不需要密码策略,添加my.cnf文件中添加如下配置禁用即可:

validate_password = off

systemctl restart mysqld

set password for ‘root’@’localhost’=password(‘TestBicon@123’);

用MySQL的source命令导入SQL文件实战记录。

输入source 脚本全路径 或者 . 脚本全路径

lamp的使用

启动nginx

sudo systemctl start nginx.service

开机自动启动

sudo systemctl enable nginx.service

mysql使用

一、导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):

1、导出数据和表结构:

mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql

#/usr/local/mysql/bin/ mysqldump -uroot -p abc > abc.sql

敲回车后会提示输入密码

2、只导出表结构

mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql

#/usr/local/mysql/bin/ mysqldump -uroot -p -d abc > abc.sql

注:/usr/local/mysql/bin/ —> mysql的data目录

二、导入数据库

1、首先建空数据库

mysql>create database abc;

2、导入数据库

方法一:

(1)选择数据库

mysql>use abc;

(2)设置数据库编码

mysql>set names utf8;

(3)导入数据(注意sql文件的路径)

mysql>source /home/abc/abc.sql;

方法二:

mysql -u用户名 -p密码 数据库名 < 数据库名.sql

mysql -uroot -p abc < abc.sql

三、远程无法连接

use mysql
update user set host =’%'where user =‘root’ and host =‘localhost’;
flush privileges;

# 或者
GRANT ALL PRIVILEGES ON *.* TO 'mingyuefusu'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;


# 修改密码
SET PASSWORD FOR root@'%'=PASSWORD('123qwe'); #root

四、导入数据失败

show VARIABLES like '%max_allowed_packet%';
# 1.windows中修改my.ini文件,在linux中修改my.cnf文件.
# 2.命令行
 SET GLOBAL max_allowed_packet = 500*1024*1024;
 flush privileges; 
# 乱码
mysql -uroot -P3306 -p123456  --default-character-set=utf8 

六、用户与用户组管理

root

  • UID为0

系统用户:

  • 保障系统运行的用户
  • UID 1-999

普通用户:

  • UID 1000-65536之间
  • 权限有限

用户配置文件

用户管理简介

  • 建立合理的用户权限等级制度和服务器操作规范
  • 在linux中主要是通过用户配置文件来查看和修改用户信息

/etc/passwd

定义系统的用户账号,不保存口令

man 5 passwd 5 配置文件

用户名规范

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
  • 第1字段:用户名称
  • 第2字段:密码标志 x,保存在/etc/shadow
  • 第3字段:UID(用户ID)
    • 0:超级用户
      • 1-499:系统用户(伪用户)
    • 500-65535: 普通用户
  • 第4字段:GID(用户初始组ID)
  • 第5字段:用户说明
  • 第6字段:家目录
    • 普通用户:/home/用户名/
  • 超级用户:/root/
  • 第7字段:登录之后的Shell
    • nologin不登录

初始组和附加组

初始组:就是指用户一登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。

附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个

shell

Shell就是Linux的命令解释器。

​ 在/etc/passwd当中,除了标准Shell是/bin/bash之外,还可以写如/sbin/nologin,/usr/bin/passwd等

禁用 nologin

影子文件

影子文件 /etc/shadow

root:$1$tCt/44vg$mq0u7wyFlXY1tAPtBqk6Q.:19218:0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
  • 第1字段:用户名

  • 第2字段:加密密码

    • 加密算法升级为SHA512散列加密算法

    • 如果密码位是“!!”或“*”代表没有密码,不能登录

  • 第3字段:密码最后一次修改日期

    • 1970年1月1日 一天1 时间戳
  • 第4字段:两次密码的修改间隔时间(和第3字段相比)

  • 第5字段:密码有效期(和第3字段相比)

  • 第6字段:密码修改到期前的警告天数(和第5字段相比)

  • 第7字段:密码过期后的宽限天数(和第5字段相比)

  • 第8字段:账号失效时间

    • -1 不失效
    • 0 到期立即失效
  • 第9字段:保留

时间戳换算

把时间戳换算为日期

​ date -d “1970-01-01 16066 days”

把日期换算为时间戳

​ echo $(($(date – date=”2014/01/06” +%s)/86400+1))

组信息文件和组密码文件

组信息文件 /etc/group

  • 第一字段:组名
  • 第二字段:组密码标志
  • 第三字段:GID
  • 第四字段:组中附加用户

组密码文件/etc/gshadow

  • 第一字段:组名
  • 第二字段:组密码
  • 第三字段:组管理员用户名
  • 第四字段:组中附加用户

用户管理相关文件

用户的家目录

普通用户:/home/用户名/,所有者和所属组都是此用户,权限是700

超级用户:/root/,所有者和所属组都是root用户,权限是550

ll /home/

用户的邮箱

/var/spool/mail/用户名/

用户模板目录

/etc/skel/

用户管理命令

useradd

用户添加命令

useradd命令格式

-u UID: 手工指定用户UID号

-d 家目录:手工指定家目录

-c 用户说明:手工指定用户的说明

-g 组名:手工指定用户的初始组

-G 组名:指定用户的附加组

-s shell:手工指定用户的登录shell。默认是/bin/bash

添加默认用户

useradd lamp

grep lamp /etc/passwd

useradd -g groupName userName

指定选项添加用户

groupadd lamp 1

useradd-u 550 -g lamp1 -G root,group2 -d /home/lamp1 -c “test user” -s /bin/bash lamp1

用户默认值

默认设置文件 /etc/default/useradd

GROUP=100 #用户默认组

HOME=/home #用户家目录

INACTIVE=-1 #密码过期宽限天数(7)

EXPIRE= #密码失效时间(8)

SHELL=/bin/bash #默认shell

SKEL=/etc/skel #模板目录

CREATE_MAIL_SPOOL=yes #是否建立邮箱

/etc/login.defs

PASS_MAX_DAY S99999 #密码有效期(5)

PASS_MIN_DAYS 0 #密码修改间隔(4)

PASS_MIN_LEN 5 #密码最小5位(PAM)

PASS_WARN_AGE 7 #密码到期警告(6)

UID_MIN 500 #最小和最大UID范围

GID_MAX 60000

ENCRYPT_METHOD SHA512 #加密模式

passwd

修改用户密码

passwd [选项] 用户名

-S 查询用户密码的密码状态。仅root用户可用

-l 暂时锁定用户。仅root用户可用

-u 解锁用户。仅root用户可用

–stdin 可以通过管道符输出的数据作为用户的密码

passwd -S

查看密码状态

passwd -S lamp1

#用户名密码设定时间(2013-01-06)密码修改间隔时间(0)

#密码有效期(99999 )警告时间(7)密码不失效(-1)

锁定用户和解锁用户

passwd -l lamp lock

passwd -u lamp use

使用字符串作为用户的密码

echo “123” | passwd –stdin lamp

usermod

修改用户信息

usermod [选项] 用户名

image-20200311221117667

image-20200311221139034

chage

修改用户密码状态

chage [选项] 用户名

选项:-l:列出用户的详细密码状态

-d 日期:修改密码最后一次更改日期(shadow3字段)

-m 天数:两次密码修改间隔(4字段)

-M 天数:密码有效期(5字段)

-W 天数:密码过期前警告天数(6字段)

-I 天数:密码过后宽限天数(7字段)

-E 日期:账号失效时间(8字段)

chage -d 0 lamp

-m 天数:两次密码修改间隔(4字段)-M 天数:密码有效期(5字段)-W 天数:密码过期前警告天数(6字段)-I 天数:密码过后宽限天数(7字段)-E 日期:账号失效时间(8字段)

userdel su

删除用户

用户切换命令

userdel [-r] 用户名

-r 删除用户的同时删除用户家目录

手工删除用户

image-20200311221438949

查看用户ID

id 用户名

切换用户身份su

-: 选项只使用“-”代表连带用户的环境变量一起切换

-c 命令:仅执行一次命令,而不切换用户身份

su – root         #切换成root,环境也改变到root

su-root -c "useradduser3"   #不切换成root,但是执行useradd命令添加user1用户

用户管理组

方便用户之间文件共享,一个用户一个主要组群,多个附加组群

添加组

groupadd [选项] 组名

-g GID : 指定组id

修改组

groupmod [选项] 组名

-g GID:修改组ID

-n newName oldName:新组名

删除用户组

groupdel 组名

不允许有初始用户

把用户添加入组或从组删除

gpasswd 选项组名

-a 用户名 : 加入

-d 用户名:删除

gpasswd -a user1 rootGroup

添加sudo用户

# 查看组
cat /etc/group
groups # 查看本人的组  [mingyue] 查看明月的组

# 添加sudo用户组
sudo visudo
# tab
vim sudoers
  myuser ALL=(ALL) ALL # 用户
  %sudo ALL=(ALL) ALL # 用户组
groupadd sudo

# 添加用户
useradd -m mingyue
passwd mingyue

# 添加用户到用户组
sudo usermod -a -G sudo mingyue 


# 添加用户并添加到 sudo用户组
sudo useradd -m -G sudo zhengmiao 
# 修改密码
sudo passwd zhengmiao 

七、权限管理

ACL权限

ACL权限简介与开启

身份不足,另设一个用户

df -h 查看各分区资源利用

dumpe2fs -h /dev/sda5

mount acl

-h 仅显示超级块中信息,而不显示磁盘块组的详细信息

临时开启分区ACL权限

mount -0 remount,acl /

永久开启分区ACL权限

vi /etc/fstab

UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 defaults,acl 1 1#加入acl

mount -o remount /

#重新挂载文件系统或重启动系统,使修改生效

查看与设定ACL权限

最大有效权限与删除ACL权限

默认ACL权限和递归ACL权限

文件特殊权限

文件系统属性chattr权限

chattr命令格式

chattr [+-=] [选项] 文件或目录名

+:增加权限

-:删除权限

=:等于某权限

i:如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。

a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除

查看文件系统属性

lsattr 选项文件名

-a 显示所有文件和目录

-d 若目标是目录,仅列出目录本身的属性,而不是子文件的

系统命令sudo权限

sudo权限

root把本来只能超级用户执行的命令赋予普通用户执行

sudo的操作对象是系统命令

sudo使用

visudo

#实际修改的是/etc/sudoers文件

root ALL=(ALL) ALL

#用户名被管理主机的地址=(可使用的身份)授权命令(绝对路径)

# %wheel ALL=(ALL) ALL

#%组名被管理主机的地址=(可使用的身份)授权命令(绝对路径)

授权sc用户可以重启服务器

sc ALL= /sbin/shutdown –r now

普通用户执行sudo赋予的命令

su – sc

sudo -l

#查看可用的sudo命令

sudo /sbin/shutdown -r now

#普通用户执行sudo赋予的命令,绝对路径

八、文件系统管理

回顾分区和文件系统

分区类型

主分区:总共最多只能分四个

扩展分区:只能有一个,也算作主分区的一种,也就是说主分区加扩展分区最多有四个。但是扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能使用。

逻辑分区:逻辑分区是在扩展分区中划分的,如果是IDE硬盘,Linux最多支持59个逻辑分区,如果是SCSI硬盘Linux最多支持11个逻辑分区

分区表示方法

image-20200311231905879

逻辑分区从sda5开始

文件系统

ext2 最大16TB分区,最大2TB的文件

ext3 添加日志功能

ext4 它是ext3文件系统的升级版。ext4 在性能、伸缩性和可靠性方面进行了大量改进。 EXT4的变化可以说是翻天覆地的,比如向下兼容EXT3、最大1EB文件系统和16TB文件、无限数量子目录、Extents连续数据块概念、多块分配、延迟分配、持久预分配、快速FSCK、日志校验、无日志模式、在线碎片整理、inode增强、默认启用barrier等。是CentOS6.3的默认文件系统(1EB=1024PB=1024*1024TB)

文件系统常用命令

df、du、fsck、dumpe2fs

  • df 文件系统查看

    -a 显示所有的文件系统信息,包括特殊文件系统,如/proc、/sysfs

    -h 使用习惯单位显示容量,如KB,MB或GB等

    -T 显示文件系统类型

    -m 以MB为单位显示容量

    -k 以KB为单位显示容量。默认就是以KB为单位

  • du 统计目录或文件大小

    -a 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量

    -h 使用习惯单位显示磁盘占用量,如KB,MB或GB等

    -s 统计总占用量,而不列出子目录和子文件的占用量

  • du和df区别

    ​ df是从文件系统考虑的,不关是文件占用的空间,还有命令和程序占用的空间(文件已经删除,但程序没有释放空间)

    ​ du是面向文件的,只会计算文件或目录占用的空间

  • fsck

    文件系统修复命令

    -a : 自动修复,

    -y:自动修复,有些文件系统只支持-y

  • dumpe2fs

    dumpe2fs /dev/sda1

挂载命令

查询和自动挂载

mount [-l] 显示已经挂载的设备,-l显示卷标名称

mount -a 依据/etc/fstab的内容,自动挂载

挂载命令格式

mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名挂载点

-t 文件系统:加入文件系统类型来指定挂载的类型,可以EXT3,EXT4、iso9660等文件系统

-L 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载

-o 特殊选项:指定挂载的格外选项

image-20200312121614121

image-20200312121727180

挂载光盘和U盘

挂载光盘

mnt U盘 cdrom 光盘

ll /dev/cdrom /dev/cdrom -> sr0

mkdir /mnt/cdrom 建立挂载点

mount /dev/cdrom /mnt/cdrom

​ 设备文件名 盘符

卸载

umount 设备文件名或挂载点

umount /mnt/cdrom 或者 /dev/sr0

挂载U盘

fdisk -l

查看U盘设备文件名

mkdir /mnt/usb

mount -t vfat /dev/sdb1 /mnt/usb/

linux不支持NTFS文件系统

支持NTFS文件系统

下载NTFS-3G插件

http://www.tuxera.com/community/ntfs-3g-download/

安装NTFS-3G

tar -zxvf ntfs-3g_ntfsprogs-2013.1.13.tgz

cd ntfs-3g_ntfsprogs-2013.1.13

./configure 没有指定安装目录,安装到默认位置中

make

make install

fdisk分区

fdisk分区过程

  • 查看新硬盘

    fdisk -l

    df

  • fdisk命令分区

    fdisk /dev/sdb

image-20200312134548670

image-20200312135334712

  • 重新读取分区表信息

    partprobe

  • 格式化分区

    mkfs -t ext4 /dev/sdb1

  • 建立挂载点并挂载

    mkdir /disk1

    mount /dev/sdb1 /disk1/

分区自动挂载与fastab文件修复

==/etc/fstab文件==

第一字段:分区设备文件名或UUID(硬盘通用唯一识别码)

第二字段:挂载点

第三字段:文件系统名称

第四字段:挂载参数

第五字段:指定分区是否被dump备份,0代表不备份,1代表每天备份,2代表不定期备份

第六字段:指定分区是否被fsck检测,0代表不检测,其他数字代表检测的优先级,那么当然1的优先级比2高

/dev/sdb5 /disk5 ext4 defaults 1 2

检查

mount -a

/etc/fastab文件修复

mount -o remount,rw /

分配swap分区

九、shell

shell概述

Shell是什么

  • shell是命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序
image-20200312170005911
  • Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。

Shell的分类

BourneShell、C Shell

  • shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主要包括:csh、tcsh

  • Bash:Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell

Linux支持的Shell

/etc/shells

Shell脚本的执行方式

echo输出命令

-e:支持反斜线控制的字符转换

image-20200313100155393

echo -e “a\tb\tc\nd\te\tf”

echo -e “\e[1;31m abcd \e[0m”

#输出颜色

#30m=黑色,31m=红色,32m=绿色,33m=黄色#34m=蓝色,35m=洋红,36m=青色,37m=白色

第一个脚本

#vi hello.sh

#!/bin/bash

#The first program

#Author: shenchao (E-mail: shenchao@lampbrother.net

echo -e “Mr”

脚本执行

赋予执行权限,直接运行

chmod 755 hello.sh

./hello.sh

通过Bash调用执行脚本

bash hello.sh

Bash的基本功能

历史命令与命令补全

历史命令

history [选项] [历史命令保存文件]

-c : 清空历史命令

-w :把缓存中的历史命令写入历史命令保存文件 ~/.bash_history

历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改

历史命令的调用

  • 使用上、下箭头调用以前的历史命令
  • 使用“!n”重复执行第n条历史命令
  • 使用“!!”重复执行上一条命令
  • 使用“!字串”重复执行最后一条以该字串开头的命令

命令与文件补全tab

在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按“Tab”键就会自动进行补全

命令别名与常用快捷键

命令别名

alias 别名=’原命令’

alias #查询命令别名

alias -p 查看所有别名命令

命令执行时顺序

1 第一顺位执行用绝对路径或相对路径执行的命令。

2 第二顺位执行别名。

3第三顺位执行Bash的内部命令。

4第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令。

让别名永久生效

vi /root/.bashrc

删除别名

unalias 别名

Bash常用快捷键

image-20200313113327651

输入输出重定向

标准输入输出

image-20200313121940380

输出重定向

image-20200313121956553 image-20200313122010932

ls &>/dev/null 丢到垃圾箱

输入重定向

wc [选项] [文件名]

​ -c 统计字节数

​ -w统计单词数

​ -l统计行数

命令<文件把文件作为命令的输入

命令<< 标识符

​ 标识符把标识符之间内容作为命令的输入

多命令顺序执行与管道符

多命令顺序执行

; && ||

dd if=输入文件 of=输出文件 bs=字节数 count=个数

f=输入文件 指定源文件或源设备

of=输出文件 指定目标文件或目标设备

bs=字节数 指定一次输入/输出多少字节,即把这些字节看做一个数据块

count=个数 指定输入/输出多少个数据块

date ; dd if=/dev/zero of=/root/testfile bs=1k count=100000 ; date

测试复制文件时间

管道符

命令1 | 命令2

#命令1的正确输出作为命令2的操作对象

ll -a /etc/ | more

netstat -an | grep “ESTABLISHED”

grep

grep [选项] “搜索内容”

-i: 忽略大小写

-n: 输出行号

-v: 反向查找

–color=auto 搜索出的关键字用颜色显示

-r test hundsun hundsun目录中包含test的行

通配符与其他特殊符号

通配符

通配符 作用
? 匹配任意一个字符
* 匹配0个或任意多个字符
[ ] 匹配括号中的任意一个字符,[ABC],匹配A、B、C中任意一个
[^] 逻辑非

Bash中其他特殊符号

符号 作用
‘ ‘ 单引号中的所有特殊符号没有特殊含义,$, `
“ “ 双引号中的特殊字符没有特殊含义,除了$(调用变量的值), `(引用命令), \(转义符)
`` 反引号,引用系统命令,与$()一样
$() 引用系统命令
# shell中表示注释
$ 调用变量的值
\ 转义符,其后特殊符变成普通字符

例如

echo $(date)

Bash的变量

变量设置规则

  • 字母、数字和下划线组成

  • 在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。

  • 在变量的值中,可以使用“\”转义符。

  • 如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。

  • 环境变量名建议大写

变量分类

  • 用户自定义变量
  • 环境变量:这种变量中主要保存的是和系统操作环境相关的数据
  • 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
  • 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。

本地变量

赋值

 name="shenchao"

​ aa=”$aa”456

 aa=${aa}789

变量调用

​ echo $name

变量查看

​ set

变量删除

​ unset name

env环境变量

环境变量

/etc/profile 所有用户

~/.bash_profile 当前用户

shell窗口,只对当前shell生效

使用source fileName 生效

含义

用户定义变量只在当前SHELL中生效,环境变量在当前Shell和起子Shell都生效,配置文件中的环境变量全局生效

设置环境变量

export 变量名=变量值 声明变量

env 查询变量

unset 变量名 删除变量

系统常见环境变量

PATH:系统查找命令的路径

echo $PATH

PATH=”$PATH”:/root/sh PATH变量叠加,添加可执行命令

PS1:定义系统提示符的变量

\d:显示日期,格式为“星期月日”
\h:显示简写主机名。如默认主机名“localhost”
\t:显示24小时制时间,格式为“HH:MM:SS”
\T:显示12小时制时间,格式为“HH:MM:SS”
\A:显示24小时制时间,格式为“HH:MM”
\u:显示当前用户名
\w:显示当前所在目录的完整名称
\W:显示当前所在目录的最后一个目录
\#:执行的第几个命令
\$:提示符。如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$

PS1='[\u@\h \W]\$ '

位置参数变量

位置参数变量 作用
$n n为数字,$0为命令本身,$1~$9代表第几个参数,其后${10}
$* 命令行中所有参数一个整体
$@ 每个参数合成数组
$# 所有参数的个数

例子1:

num1=$1

num2=$2

sum=$(( $num1 + $num2)

预定义变量

预定义变量

预定义变量 作用
$? 最后一次命令的返回状态,正确执行0,非0不正确执行
$$ 当前进程的进程号PID
$! 后台运行的最后一个进程的进程号PID

后台运行:

find /root -name hello.sh &

接受键盘输入

read [选项] [变量名]

​ -p “提示信息” :会提示信息

​ -t 秒数:指定等待输入时间

​ -n 字符数:只能输入n位

​ -s: 输入隐藏数据

read -n 1 -t 30 -p “Please select your gender[M/F]: “ gender

Bash的运算符

declare声明变量类型

declare [+/-][选项] 变量名

​ -: 给变量设定类型属性

​ +: 取消属性

​ -i: 整数型

​ -x: 环境变量

​ -p: 显示指定类型的被声明的类型

运算

方法1:数值运算

declare -i cc=$aa+$bb

方法2:expr或let数值运算工具

dd=$(expr $aa + $bb)

方法3:“$((运算式))”或“$[运算式]”

$(( $a + $b )) $[ $a +$b ]

运算符

image-20200313220731806

变量测试与内容替换

image-20200313221525079

环境变量配置文件

环境变量配置文件简介

source

source 配置文件 或 . 配置文件

  • 环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量,比如PATH、HISTSIZE、PS1、HOSTNAME等默认环境变量
  • /etc/profile
  • /etc/profile.d/*.sh
  • ~/.bash_profile
  • ~/.bashrc
  • /etc/bashrc

环境变量配置文件作用

image-20200313231429586

/etc/profile的作用:

​ USER变量、LOGNAME变量、MAIL变量、PATH变量、HOSTNAME变量、HISTSIZE变量、umask、调用/etc/profile.d/*.sh文件

~/.bash_profile的作用

调用了~/.bashrc文件、在PATH变量后面加入了“:$HOME/bin”这个目录

~/.bashrc的作用

定义默认别名、调用/etc/bashrc

/etc/bashrc的作用

PS1变量、umask、PATH变量、调用/etc/profile.d/*.sh文件

其他配置文件和登录信息

注销时生效的环境变量配置文件

~/.bash_logout

其他配置文件

~/bash_history

Shell登录信息

  • 本地终端欢迎信息:/etc/issue
image-20200313232844104
  • 远程终端欢迎信息:/etc/issue.net

    • 转义符在/etc/issue.net文件中不能使用
    • 是否显示此欢迎信息,由ssh的配置文件/etc/ssh/sshd_config决定,加入“Banner /etc/issue.net”行才能显示(记得重启SSH服务)
  • 登陆后欢迎信息:/etc/motd

    不管是本地登录,还是远程登录,都可以显示此欢迎信息

十、网络基础

虚拟机配置

https://www.cnblogs.com/lastyear/p/11502861.html

nat

BootProto=none

ipaddr需要在范围内

gateWay、netMask要与主机网卡一致

vi /etc/sysconfig/network-scripts/ifcfg-ens33

systemctl restart network

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
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=b07cfc9a-0d9e-4a10-87e1-cabdd1b203db
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.153.222
GATEWAY=192.168.153.2
NETMASK=255.255.255.0
DNS2=114.114.114.114
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no

突然连不上网

https://blog.csdn.net/zhangxing52077/article/details/78411487

修改windows的vm服务

centos7

https://blog.csdn.net/zyq_2014/article/details/79692181

配置LinuxIP地址

setup

启动网卡

vi /etc/sysconfig/network-scripts/ifcfg-eth0

把ONBOOT=no改为ONBOOT=yes

service network restart

设置虚拟机网络连接方式

网络基础

互联网接入方法

互联网接入方法

  • ADSL:非对称数字用户环路。ADSL可以提供最高1Mbps的上行速率和最高8Mbps的下行速率。最新的ADSL2+技术可以提供最高24Mbps的下行速率,ADSL2+打破了ADSL接入方式带宽限制的瓶 颈,使其应用范围更加广阔。宽带连接

  • FTTH:光纤入户的带宽更高,而光纤的原材料是二氧化硅,在自然界取之不尽用之不竭。当然也是动态IP地址。

  • 小区宽带:小区宽带是一个大局域网,所有客户都在同一个网段中。外网接口可以是FTTH,也可以是固定IP的光纤。

  • 固定IP光纤:带宽自由申请,价格最贵。因为固定IP地址,所以可以搭建服务器。

网络通信协议

OSI/ISO七层模型和TCP/IP四层模型

image-20200312205703059

image-20200312205724353

image-20200312205736795

image-20200312205752468

网络层协议和IP地址划分

网络层协议

网际协议(IP)

互联网控制报文协议(ICMP)

数据封装过程

image-20200312220451950

ip 32位

IP地址分类

image-20200312220530464

子网掩码的使用

image-20200312220554459

变长子网掩码及子网规划

网络地址 : ip与掩码相与 , 掩码中的1不能断开,

广播地址:子网掩码是0时都是1,1时IP不变

image-20200312221020012

ICMP协议

ICMP消息通过IP数据报传送,被用来发送错误和控制信息。

ICMP定义了很多信息类型

ping www.

例如:

目的地不可达

TTL 超时信息

请求信息

应答地址

请求地址应答

Linux网络基础

Linux的IP地址配置

Linux配置IP地址的方法

  • ifconfig命令临时配置IP地址

​ ifconfig eth0 192.168.0.200 netmask 255.255.255.0

  • setup工具永久配置IP地址

  • 修改网络配置文件

  • 图形界面配置IP地址

Linux网络配置文件

网卡信息文件

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0 网卡设备名
BOOTPROTO=none 是否自动获取IP(none、static、dhcp)
WADDR=00:0c:29:17:c4:09 MAC地址
NM_CONTROLLED=yes 是否可以由Network Manager图形管理工具托管
ONBOOT=yes 是否随网络服务启动,eth0生效TYPE=Ethernet类型为以太网
UUID=“44b76c8a-b59f-44d5-83fa-7f98fda86b3d“ 唯一识别码
IPADDR=192.168.0.252 IP地址
NETMASK=255.255.255.0 子网掩码
GATEWAY=192.168.0.1 网关DNS1=202.106.0.20
DNSIPV6INIT=no IPv6没有启用
USERCTL=no 不允许非root用户控制此网卡

主机名文件

vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=localhost.localdomain

hostname [主机名]

#查看与临时设置主机名命令

DNS配置文件

vi /etc/resolv.conf

nameserver 202.106.0.20

search localhost

常用网络命令(1)

  • 查看与配置网络状态命令

    ifconfig

  • 查看或设置主机名命令

    hostname [主机名]

  • 关闭与启动网卡

    ifdown网卡设备名 禁用该网卡设备

    ifup网卡设备名 启用该网卡设备

  • 查询网络状态

    netstat [选项]

    -t : 列出tcp协议端口

    -u: 列出UDP

    -n:不使用域名与服务名,而使用IP地址和端口号

    -l:仅列出在监听状态网络服务

    -a:列出所有的网络连接

    -r:列出路由列表,功能和route命令一致

    netstat -tlun

    netstat –rn

    netstat -an | grep ESTABLISHED

    统计数量

    netstat -an | grep ESTABLISHED | wc -1

  • route命令

    route -n 查看路由列表(可以看到网关)

  • 域名解析命令

    nslookup [主机名或IP]

    #进行域名与IP地址解析

    nslookup

    > server

    查看本机DNS服务器

常用网络命令(2)

ping命令

ping [选项] ip或域名

-c 次数: 指定ping包的次数

telnet命令

远程管理与端口探测命令

telnet 192.168.0.252 80

traceroute

-n 使用IP,不使用域名,速度更快

wget命令

wget http://soft.vpser.net/lnmp/lnmp1.1-full.tar.gz

下载命令

wget -b  url

tail -f wget-log

防火墙

端口操作:https://blog.csdn.net/u014079773/article/details/79745819

关闭防火墙(非常不建议)

service iptables stop –停止

service iptables start –启动

命令

firewall-cmd –state 查看状态

开启

service firewall start

开放

firewall-cmd –permanent –add-port=8080-8085/tcp

重启

firewall-cmd –reload

关闭

firewall-cmd –permanent –remove-port=8080-8085/tcp

查看开放的端口

firewall-cmd –permanent –list-ports

查看使用互联网的程序

firewall-cmd –permanent –list-services

访问端口

curl 127.0.0.1:8080

curl ip:8080

-i HTTP头信息

虚拟机网络参数配置

十一、SHELL编程

正则表达式

基础正则表达式

正则表达式与通配符

  • 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式。
  • 通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了

基础正则表达式

image-20200313235622201

字符截取命令

cut字段提取命令

cut [选项] 文件名

​ -f 列号:提取第几列

​ -d 分隔符: 指定分隔符

cut -d “:” -f 1,3 /etc/passwd

df -h | cut -d “ “ -f 1,3 死板

printf命令

printf 输出格式 输出内容

%ns 输出n个字符

%ni 输出n个数字

​ %m.nf 输出m位数,n位小数

​ \a 输出警告声音

​ \b 退格符

​ \f 清除屏幕

​ \n 换行

​ \r 回车

​ \t 水平tab

​ \v 垂直tab

printf ‘%s %s %s\n’ 1 2 3 4 5 6

循环格式

awk命令

awk ‘条件1{动作1} 条件2 {动作2}…’ 文件名

条件 >=

动作 格式化输出、流程控制语句

例子

df -h | awk '{print $1 "\t" $3}'

BEGIN {}

END{}

cat student.txt | grep -v Name | \awk ‘$6 >= 87 {printf $2 “\n” }’

FS内置变量

cat /etc/passwd | grep “/bin/bash” | awk ‘BEGIN {FS=”:”} {printf $1 “\t” $3 “\n”}’

sed命令

sed 是一种几乎包括在所有UNIX 平台(包括Linux)的轻量级流编辑器。sed主要是用来将数据进行选取、替换、删除、新增的命令。

sed [选项] [动作] 文件名

​ -n 只输出被sed处理的行

​ -e 应用多条sed命令 sed -e 's/Liming//g ; s/Gao//g' student.txt

​ -i 同时修改文件

动作

a\ 追加,在当前行后添加一行或多行 '2a hello'

c\ 行替换,用c后面的字符串替换原数据行 '2c replaceString'

i\ 插入,在当期行前插入一行或多行 '2i hello'

d 删除指定的行 '2,4d'

p 输出指定行 sed '2p' student.txt

s 替换字符串, 行范围s/old/new/g sed '3s/74/99/g' student.txt

字符处理命令

sort

sort [选项] 文件名

​ -f 忽略大小写

​ -n 以数值型排序

​ -r 反向排序

​ -t 指定分隔符 sort -t “:” 3,3 /etc/passwd

​ -k n[,m] 指定字段范围排序,n到m字段

sort -n -t “:” -k 3,3 /etc/passwd

wc : word count

wc [选项] 文件名

​ -l 行数

​ -w 单词数

​ -m 字符数

条件判断

文件类型判断

image-20200314124724105

-e 判断文件存在

-d 判断目录文件存在

-f 判断普通文件存在

判断格式

test -e /root/install.log

[ -e /root/inatll.log ]

[ -d /root ] && echo “yes” || echo “no”

文件权限判断

image-20200314125020361

文件间比较

文件1 -nt 文件2 判断1的修改时间比2新

文件1 -ot 文件2 判断2的修改时间比2旧

文件1 -ef 文件2 判断是否是同一文件(硬链接)

ln /root/student.txt /tmp/stu.txt

[ /root/student.txt -ef /tmp/stu.txt ] && echo “yes” ||echo “no”

整数间比较

image-20200314125348883

字符串判断

image-20200314125410046

多重条件判断

image-20200314125428803

流程控制

语法

//1.单分支
if [  ];then
    test
fi

//2.多分支
if [  ]
    then
        语句
elif [  ]
    then
        语句
else
fi

//3.case
read -p "input yes/no: " -t 30 choose
case $choose in
    "yes")
            echo "yes"
            ;;
    "no")
            echo "no"
            ;;
    *)        
            echo "error"
            ;;
esac

//4.for
for 变量 in 值1 值2
    do 
        程序
    done
例子:
d /lampls 
*.tar.gz > ls.log
for i in $(cat ls.log)
    do
        tar -zxf $i &>/dev/null
    done
rm -rf /lamp/ls.log

//5.for
for ((初始值;循环条件;变化))
    do
        程序
    done

//6.while
while [ 条件判断 ]
    do 
        程序
    done

//7.util
until [ 条件判断 ]
    do
        程序
    done

实用样例

!/usr/bin/bash

批量解压缩脚本

image-20200314211212512

添加指定数量用户

image-20200314211036214

yum -y install nmap

nmap -sT 192.168.67.100

nmap -sT 106.75.103.71

image-20200320230439670

变量

my_array=(A B "C" D)
${my_array[0]}

module_array=("ruoyi-module-system" "psedu-base" "psedu-exam")
for module_name in ${module_array[@]}
do      
        echo ${module_name}
done


for i in ${!days[@]}
do
    echo ${days[$i]}
done

函数

参数处理 说明
$# 传递到脚本或函数的参数个数
$* 以一个单字符串显示所有向脚本传递的参数
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。
$- 显示Shell使用的当前选项,与set命令功能相同。
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
funWithParam(){
    echo "第一个参数为 $1 !"
    echo "第二个参数为 $2 !"
    echo "第十个参数为 $10 !"
    echo "第十个参数为 ${10} !"
    echo "第十一个参数为 ${11} !"
    echo "参数总数有 $# 个!"
    echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
# 作为一个字符串输出所有参数 1 2 3 4 5 6 7 8 9 34 73 !
echo $? # 获取返回值

十二、Linux服务管理

服务简介与分类

服务的分类

image-20200314213615386

查询已安装的服务

RPM包安装的服务

chkconfig –list

查看服务自启动状态,可以看到所有RPM包安装的服务

源码包安装的服务

服务安装的位置,一般是/usr/local下

区别就是安装位置的不同

源码包 /usr/local/

RPM包安装在默认位置中

RPM包安装服务的管理

独立服务的管理

RPM包安装服务的位置

源码包一般是/usr/local

RPM包安装在默认位置

文件

  • /etc/init.d 启动脚本位置
  • /etc/sysconfig 初始化环境配置文件位置
  • /etc/ 配置文件位置
  • /etc/xinetd.conf xinetd配置文件
  • /etc/xined.d 基于xinetd服务的启动脚本
  • /var/lib 服务产生的数据放在这里
  • /var/log 日志

独立服务的启动

/etc/init.d/独立服务名 start|stop|status|restart

service 独立服务名 start|stop|status|restart

独立服务的自启动

  • chkconfig [–level 运行级别] [独立服务名] [on|off]

    ​ 0 1 2 3 4 5 6

  • 修改/etc/rc.d/rc.local文件

  • ntsysv命令管理自启动

    • tab进入菜单

基于xinetd服务的管理

安装xinetd和telnet

yum -y install xinetd

yum -y install telnet-server

xinetd服务的启动

vi /etc/xinetd.d/telnet

image-20200314235748558

重启xinetd服务

service xinetd restart

xinetd服务的自启动

chkconfig telnet on

ntsysv

源码包安装服务的管理

源码包安装服务的启动

使用绝对路径,调用启动脚本来启动。不同源码包的启动脚本不同,可以查看源码包的安装说明,查看启动脚本的方法

源码包服务的自启动

vi /etc/rc.d/rc.local

/usr/local/apache2/bin/apachectl start

让源码包服务被服务管理命令识别

  • 让源码包的apache服务能被service命令管理启动

    软连接

    ​ ln-s /usr/local/apache2/bin/apachectl /etc/init.d/apache

  • 让源码包的apache服务能被chkconfig与ntsysv命令管理自启动

    ​ vi /etc/init.d/apache

    ​ # chkconfig: 35 86 76

    ​ #指定httpd脚本可以被chkconfig命令管理。格式是:chkconfig:运行级别启动顺序关闭顺序

    ​ # description: source package apache

    ​ chkconfig –add apache

服务管理总结

十三、linux系统管理

进程管理

进程简介

进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。

进程管理的作用

判断服务器健康状态

查看系统中所有进程

杀死进程

查看系统中所有进程

ps aux 查看系统中所有进程,使用BSD操作系统格式

ps -le 查看系统中所有进程,使用Linux标准命令格式

ps -ef

image-20200315104143819 image-20200315104155924

查看系统健康状态

vmstat

iostat IO

sar cput 、内存、IO

top [选项]

​ -d 秒数:指定top命令更新时间

​ ?或h 显示交互模式的帮助

​ P CPU使用率排序

​ M 内存排序

​ N PID排序

​ q 退出

任务队列

时间 | 运行时间 | 登录用户 | 系统负载(1,5,15分钟)

进程信息

总进程数 | 运行进程数 | 睡眠的进程 | 停止的进程 | 僵尸进程

CPU信息

用户模式% | 系统模式% | 改变过优先级的用户进程% | 空闲CPU% | 等待输入输出% | 硬中断请求服务% | 软中断请求服务% | 虚拟时间%

物理内存信息

物理内存总量 | 已经使用的 | 空闲的 | 缓冲的

交换分区信息

交换分区总大小 | 已经使用的 | 空闲的 | 缓存的

image-20200315105414053 image-20200315105431838 image-20200315105445325 image-20200315105458739 image-20200315105507291

查看进程树

pstree [选项]

​ -p 显示进程的PID

​ -u 显示进程的所属用户

终止进程

  • kill命令

    kill -l 查看可用的进程信号

image-20200315113523543

1重启 9强制终止 15正常结束

kill -9 22368 #强制杀死进程22368

  • killall命令

    killall [选项] [信号] 进程名 #按照进程名杀死进程

    ​ -i 询问是否杀死

    ​ -I 忽略大小写

  • pkill命令

    pkill [选项] [信号] 进程名 #按照进程名终止进程

    -t 终端号:按照终端号踢出用户

  • w 使用w命令查询本机已经登录的用户

    pkill -t -9 pts/1

工作管理

把进程放入后台

  • tar -zcf root.tar.gz / &

  • 运行时 ctrl + z

查看后台的工作

jobs [-l]

​ -l 显示工作的PID

将后台暂停的工作恢复到前台执行

fg %工作号 %可以省略,工作号是jobs的

把后台暂停的工作恢复到后台执行

bg %工作号

vim等不能恢复

系统资源查看

vmstat 命令监控系统资源

vmstat [刷新延时 刷新次数]

vmstat 1 3

dmesg 开机时内核检测信息

dmesg | grep CPU

free 命令查看内存使用状态

free [-b|-k|-m|-g]

​ -b 以字节为单位显示

​ -k 以kb为单位显示

​ -m 以MB为单位显示

​ -g 以GB为单位显示

​ -s 10 十秒刷新

缓存和缓冲的区别

缓存cache:加速硬盘数据读取

缓冲buffer:加速数据写入硬盘

查看CPU信息

cat /proc/cpuinfo

uptime命令

uptime

显示系统的启动时间和平均负载,也就是top命令的第一行。w命令也可以看到这个数据

查看系统与内核相关信息

uname [选项]

​ -a:所有相关信息

​ -r:内核版本

​ -s:内核名称

判断当前系统的位数

file /bin/ls

查询当前Linux系统的发行版本

lsb_release -a

列出进程打开或使用的文件信息

lsof [选项]

​ -c 字符串:只列好处以字符串开头的进程打开的文件

​ -u 用户名:列出某个用户的进程打开的文件

​ -p pid:列出某个PID进程打开的文件

系统定时任务

crond服务管理与访问控制

service crond restart

chkconfig crond on

用户的crontab设置

crontab [选项]

​ -e 编辑crontab定时任务

​ -l 查询crontab任务

​ -r 删除所有crontab任务

crontab -e 进入编辑

任务

分钟/小时 小时/天 天/月 月/年 周几/周

分、时、日、月、周几

特殊符号

符号 含义
* 任何时间
不连续的时间
- 连续的时间段
*/n 每隔多久

image-20200315131041259image-20200315131501818

十四、日志管理

日志管理简介

日志服务

  • 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务。rsyslogd日志服务更加先进,功能更多。但是不论该服务的使用,还是日志文件的格式其实都是和syslogd服务相兼容的,所以学习起来基本和syslogd服务一致。
  • rsyslogd的新特点
    • 基于TCP网络协议传输日志信息;
    • 更安全的网络传输方式;
    • 有日志消息的及时分析框架
    • 后台数据库;
    • 配置文件中可以写简单的逻辑判断;
    • 与syslog配置文件相兼容

确定服务启动

ps aux | grep rsyslogd

#查看服务是否启动

chkconfig –list | grep rsyslog

#查看服务是否自启动

常见日志的作用

image-20200315131935484 image-20200315131947121
  • 除了系统默认的日志之外,采用RPM方式安装的系统服务也会默认把日志记录在/var/log/目录中(源码包安装的服务日志是在源码包指定目录中)。不过这些日志不是由rsyslogd服务来记录和管理的,而是各个服务使用自己的日志管理文档来记录自身日志
  • image-20200315132020264

rsyslogd日志服务

日志文件格式

  • 事件发生时间
  • 发生事件的服务器的主机名
  • 发生事件的服务名或程序名
  • 事件的具体信息

/etc/rsyslog.conf配置文件

authpriv.* /var/log/secure

#服务名称[连接符号]日志等级日志记录位置

#认证相关服务.所有日志等级记录在/var/log/secure日志中

服务名称

image-20200315142037409 image-20200315142048108

连接符号

image-20200315142106710

日志等级

image-20200315142156138

日志记录位置

日志文件的绝对路径,如“/var/log/secure“

系统设备文件,如“/dev/lp0”

转发给远程主机,如“@192.168.0.210:514”

用户名,如“root”

忽略或丢弃日志,如“~”

日志轮替

日志文件的命名规则

  • 如果配置文件中拥有“dateext”参数,那么日志会用日期来作为日志文件的后缀,例如“secure-20130605”。这样的话日志文件名不会重叠,所以也就不需要日志文件的改名,只需要保存指定的日志个数,删除多余的日志文件即可。
  • 如果配置文件中没有“dateext”参数,那么日志文件就需要进行改名了。当第一次进行日志轮替时,当前的“secure”日志会自动改名为“secure.1”,然后新建“secure”日志,用来保存新的日志。当第二次进行日志轮替时,“secure.1”会自动改名为“secure.2”,当前的“secure”日志会自动改名为“secure.1”,然后也会新建“secure”日志,用来保存新的日志,以此类推

logrotate配置文件

image-20200315142352337image-20200315142401407

image-20200315142401407

把apache日志加入轮替

vi /etc/logrotate.conf
/usr/local/apache2/logs/access_log {
    daily
    create
    rotate 30
}

logrotate命令

logrotate [选项] 配置文件名

如果此命令没有选项,则会按照配置文件中的条件进行日志轮替

-v:显示日志轮替过程。加了-v选项,会显示日志的轮替的过程

-f:强制进行日志轮替。不管日志轮替的条件是否已经符合,强制配置文件中所有的日志进行轮替

十五、启动管理

6.x启动管理

系统运行级别

0 关机

1 单模式(安全模式)

2 不完全命令行模式,不含NFS服务

3 完全命令行模式

4 系统保留

5 图形模式

6 重启动

运行级别命令

runlevel #查看运行级别命令

init 运行级别 #改变运行级别命令

系统默认运行级别

vim /etc/inittab

id:3:initdefault

系统启动过程

启动引导程序grub

系统修复模式

十六、备份与恢复

备份概述

Linux系统需要备份的数据

/root/

/home/

/var/spool/mail

/etc/

安装服务的数据

apache需要备份的数据

  • 配置文件

  • 网页主目录

  • 日志文件

mysql需要备份的数据

  • 源码包安装的mysql:/usr/local/mysql/data/
  • RPM包安装的mysql:/var/lib/mysql/

备份策略

完全备份/增量备份/差异备份

dump和restore命令

dump命令

dump [选项] 备份之后的文件名 原文件或目录

​ -level 0-9十个备份级别

​ -f 文件名: 指定备份之后的文件名

​ -u: 备份成功之后,把备份时间记录在/etc/dumpdates文件

​ -v: 显示备份过程中更多的输出信息

​ -j: 调用bzlib库压缩备份文件,其实就是把备份文件压缩为.bz2格式,默认压缩等级是2

​ -W: 显示允许被dump的分区的备份等级及备份时间

备份分区

dump -0uj -f /root/boot.bak.bz2 /boot/

#备份命令。先执行一次完全备份,并压缩和更新备份时间

cat /etc/dumpdates

#查看备份时间文件

cp install.log /boot/

#复制日志文件到/boot分区

dump -1uj -f /root/boot.bak1.bz2 /boot/

#增量备份/boot分区,并压缩

dump –W

#查询分区的备份时间及备份级别的

备份文件或目录

dump -0j -f /root/etc.dump.bz2 /etc/

#完全备份/etc/目录,只能使用0级别进行完全备份,而不再支持增量备份

restore命令

restore [模式选项] [选项]

​ -C 比较备份数据与实际数据的变化

​ -i 手工选择需要恢复的文件

​ -t 查看模式,查看备份文件中拥有哪些数据

​ -r 还原模式

​ -f 指定备份文件的文件名

比较备份数据和实际数据的变化

mv /boot/vmlinuz-2.6.32-279.el6.i686 /boot/vmlinuz-2.6.32-279.el6.i686.bak

#把/boot目录中内核镜像文件改个名字

restore -C -f /root/boot.bak.bz2

#restore发现内核镜像文件丢失

查看模式

restore -t -f boot.bak.bz2

还原模式

#还原boot.bak.bz2分区备份

#先还原完全备份的数据

mkdir boot.test

cd boot.test/

restore -r -f /root/boot.bak.bz2

#解压缩

restore -r -f /root/boot.bak1.bz2

#恢复增量备份数据

#还原/etc/目录的备份etc.dump.bz2

restore -r -f etc.dump.bz2

#还原etc.dump.bz2备份

mysql备份

backup

#!/bin/bash

# 数据库相关信息
DB_SERVER=wechat
DB_USERNAME=root
DB_PASSWORD=

# 相关文件路径
DUMP_BIN=/usr/bin/mysqldump
BASE_DIR=/var/backups/mysql/

# 备份数据库
DATABASES=(signf2f subscribe ticknet weixin)

cd $BACKUP_DIR

for DATABASE in ${DATABASES[@]};
do
  date=`date +%Y%m%d-%H%M%S`
  BACKUP_DIR=${BASE_DIR}${DATABASE}/
  TARGZ_FILE="$DB_SERVER-$DATABASE-$date.tar.gz"

  # 创建备份目录
  if [ ! -d $BACKUP_DIR ];
  then
    mkdir -p "$BACKUP_DIR"
  fi

  cd $BACKUP_DIR

  $DUMP_BIN -u$DB_USERNAME -p$DB_PASSWORD $DATABASE | gzip > $TARGZ_FILE

  #curl -T $TARGZ_FILE $UPYUN_URL/$DB_SERVER/$DATABASE/$TARGZ_FILE -u $UPYUN_USER:$UPYUN_PASS -v
done

delete

#!/bin/bash


# 相关文件路径
BASE_DIR=/var/backups/mysql/weixin
BASE_DIR2=/var/backups/mysql/signf2f
BASE_DIR3=/var/backups/mysql/secret
# 删除5天之前的数据
cd $BASE_DIR
rm -rf `find ./ -ctime 0 -name 202*`

cd $BASE_DIR2
rm -rf `find ./ -ctime +5`

cd $BASE_DIR3
rm -rf `find ./ -ctime +5`

docker

#!/bin/bash

docker exec -i mydb bash <<'EOF'

mkdir -p /backup/mysql/$(date +%Y%m%d)

# 备份指定数据库
mysqldump -uroot -proot library > /backup/mysql/$(date +%Y%m%d)/library_$(date +%Y%m%d_%H%M%S).sql


# 备份所有数据库
mysqldump --no-defaults --events --all-databases -uroot -p mingyuefusu! > /backup/mysql/$(date +%Y%m%d)/library_$(date +%Y%m%d_%H%M%S).sql

exit

EOF

mkdir -p /server/backup/mysql/$(date +%Y%m%d)

docker cp mydb:/backup/mysql/$(date +%Y%m%d) /server/backup/mysql/

十七、其他

Deepin

安装c++

sudo apt-get install build-essential
sudo apt-get install gdb

ssh登录

sudo apt-get install openssh-server

1、安装SSH服务

sudo su

apt-get install openssh-server

2、配置端口

gedit /etc/ssh/sshd_config

port 22 处即为修改端口的地方,默认不修改也可。

3、重启SSH服务端

sudo /etc/init.d/ssh start 或者 service ssh start

4、使用xshell工具连接

配置好住账号(Linux用户名)、密码、端口,点击连接就可以连上了!

常用命令汇总

查看系统信息

内核版本信息

cat /proc/version
uname -a
uname -r

系统版本

cat /etc/issue
cat /etc/lsb_release
lsb_release -a
# redhat
cat /etc/redhat-release

权限控制

# 读(r=4),写(w=2),执行(x=1)
# 文件所有者, 与文件所有者同属一个用户组, 其它用户组
chmod 777
chmod 751 

# https://blog.csdn.net/bmbm546/article/details/6875972

# 设置文件夹权限
chown [-R] 账号名称 文件或目录
chown [-R] 账号名称:用户组名称 文件或目录

# 修改主人和组
sudo chown -R minyue:sudo lost_admin
# 给组权限
chmod g+rw testFile

root

sudo su

SSH版本

下载相关tar.gz包,没有下载到的,可以在这里下载。http://download.csdn.net/download/songanshu/10023663
拷贝三个包(openssh-7.5p1.tar.gz、openssl-1.0.2l.tar.gz、zlib-1.2.11.tar.gz)到home目录下的openssh7.5目录下

cd /home
sudo mkdir openssh7.5
sudo chmod -R 777 openssh7.5
cd /home/openssh7.5

tar -zxvf zlib-1.2.11.tar.gz
tar -zxvf openssl-1.0.2l.tar.gz
tar -zxvf openssh-7.5p1.tar.gz

# 1
cd /home/openssh7.5/zlib-1.2.11
./configure
make && sudo make install


# 2
cd /home/openssh7.5/openssl-1.0.2l
./config shared zlib #一定要加上shared 参数,要不在安装openssh的时候就无法找到
# ./configure
make && sudo make install

# 3
cd /home/openssh7.5/openssh-7.5p1
 ./configure --with-ssl-dir=/home/openssh7.5/openssl-1.0.2k
make && sudo make install

sudo vim /etc/passwd

# 最后一行添加
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

sudo reboot

ssh -V

sudo chmod 751 /home/openssh7.5

Ubuntu

sudo ufw allow 8082

开放端口

yum无效

\1. Go to /etc/yum.repos.d/\ directory:

# cd /etc/yum.repos.d/

\2. Make copy of original file:

# cp CentOS-Base.repo CentOS-Base.repo.old

\3. Open and edit file with any text editor:

# vi CentOS-Base.repo

\4. Replace mirrorlist‘s

Replace sections:

[base]
[updates]
[extras]

With following:

[base]
name=CentOS-$releasever - Base
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=https://vault.centos.org/6.10/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

# released updates
[updates]
name=CentOS-$releasever - Updates
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
baseurl=https://vault.centos.org/6.10/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

# additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
baseurl=https://vault.centos.org/6.10/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

\5. Clean yum cache

# yum clean all

\6. Run again yum update command:

# yum update

Now you can successfully update your CentOS 6.

小问题

命令行无颜色

查看home目录下.bashrc和.bash_profile文件是否存在:

ls -la ~/.bash*
若.bashrc不存在,则从另外的用户拷贝一个即可,并通过命令source ~/.bashrc使颜色属性生效。

而用户建立连接时,系统不会调用.bashrc, 而是调用 .bash_profile文件,所以我们需要创建该文件,并加上如下内容:

# if running bash  
if [ -n "$BASH_VERSION" ]; then  
        # include .bashrc if it exists
        if [ -f "$HOME/.bashrc" ]; then          
                . "$HOME/.bashrc"
        fi 
f