linux学习笔记

Ubuntu 18.0.4修改静态ip

sudo vi /etc/netplan/xxxx.ymal
network:
    ethernets:
        ens33:
            addresses:
            - 192.168.1.70/24
            dhcp4: false
            gateway4: 192.168.1.1
            nameservers:
                addresses:
                - 8.8.8.8
                search: []
version: 2

说明:
ens33:网络接口名称
dhcp4:接收IPV4接口的dhcp属性
dhcp6:接收IPV6接口的dhcp属性
addresses:接口的静态地址序列
gateway4:默认网关的IPV4地址
Nameservers:DNS服务器地址,以,号分割

修改完成后 # 使配置生效

sudo netplan apply

Ubuntu18.0.4 ssh配置连接
1、指令:

(1)sudo apt-get update

(2)sudo apt-get install openssh-server

(3 )vi /etc/ssh/sshd_config,注释掉红色框的地方在前面加#,然后复制一行后面跟上yes
Centos7修改静态ip

cd /etc/sysconfig/network-scripts/

Vi ifcfg-ens32
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
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="ens32"
UUID="9fbfaef3-3eb8-45bc-8a5e-f4d8721fac30"
DEVICE="ens32"
ONBOOT="yes"
IPV6_PRIVACY="no"
IPADDR="192.168.182.10"
GATEWAY="192.168.182.2"
DNS1="114.114.114.114"
PREFIX="24"
DNS2="192.168.182.1"

修改完成重启网络服务

 systemctl restart network 

init命令 0、1、2、3、4、5、6
运行级别0:系统停机状态,bai系统默认运行级别不能设为du0,否则不能正常启动

运行级别1:单用户工作状zhi态,root权限,用于系统维护,禁止远程登陆

运行级别2:多用户状态(没有NFS)

运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式

运行级别4:系统未使用,保留

运行级别5:X11控制台,登陆后进入图形GUI模式

运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
用户创建、删除,密码设置相关命令
用useradd创建用户,该命令的格式如下:选项 说明
-d 指定用户登入时的目录
-c 指定账户的备注文字
-e 指定账号的有效期限
-f 缓冲天数,密码过期时在指定天数后关闭该账号
-g 指定用户所属组
-G 指定用户所属的附加用户组
-m 自动建立用户的登入目录
-r 创建系统账号
-s 指定用户的登陆shell
创建步骤
useradd [选项] 用户名
设置密码:sudo passwd 用户名
再次确认密码

用userdel 删除用户,该命令的格式如下:
userdel [选项] 用户名
-f 强制删除用户,即便该用户为当前用户
-r 删除用户的同时,删除与用户相关的所有文件
添加一个用户并且让用户获得root权限
赋予root权限
方法一:修改用户所在组,使其属于root组(wheel),
命令如下:
#usermod -g root kun
Kun账号下用命令 su - ,即可获得root权限进行操作。
修改/etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:

Allow root to run any commands anywhere

root ALL=(ALL) ALL
tommy ALL=(ALL) ALL
修改完毕,现在可以用tommy帐号登录,然后用命令 su - ,即可获得root权限进行操作。

方法二:修改/etc/passwd 文件,找到如下行,把用户ID修改为 0 ,如下所示:
tommy❌500:500:tommy:/home/tommy:/bin/bash修改后如下tommy❌0:500:tommy:/home/tommy:/bin/bash
保存,用tommy账户登录后,直接获取的就是root帐号的权限。
友情提醒:虽然方法三看上去简单方便,但一般不推荐使用,推荐使用方法二。
禁止root用户远程登录
修改sshd配置文件/etc/ssh/sshd_config
修改为: PermitRootLogin no
然后重启服务,service ssh restart
查看用户
所有用户

cat /etc/passwd

w查看当前系统信息和用户登录信息

root@kun:~# w

参数详解
显示用户的详尽信息
TTY 用户登录的终端代号 pts表示远程访问
LOGIN用户登录时间 IDLE用户登录后闲置时间 JCPU用户执行程序耗费CPU的时间
WHAT 表示用户正在执行的程序
PCPU则表示执行WHAT字段内的程序所耗费的时间。
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 22Apr17 10days 0.04s 0.03s -bash
root pts/0 110.249.242.47 19:04 1:35m 0.02s 0.02s -bash
root pts/2 110.249.242.47 20:23 9:54 0.04s 0.04s -bash
root pts/4 110.249.242.47 20:35 1.00s 0.04s 0.00s w
who使用who查看当前正在登录的用户
任何一个虚拟控制台登录都会产生一个tty, 每一个远程连接都会产生一个pts.
pkill -u踢出这个用户并且关闭它所有执行的程序,
这个命令很危险,请小心执行.
建议先查看终端号,通过终端号找出指定的进程,杀掉指定的进程即可.
先查看终端号对应的进程名
root@kun:~# ps -ef | grep pts/4
root 20907 784 0 20:35 ? 00:00:00 sshd: root@pts/4
root 20929 20907 0 20:35 pts/4 00:00:00 -bash
root 20961 20929 0 20:36 pts/4 00:00:00 ps -ef
root 20962 20929 0 20:36 pts/4 00:00:00 grep --color=auto pts/4
杀掉指定进程即可
root@kun:~# kill -s 9 20962
Linux文件目录
/:根目录,只包含目录,不包含具体文件;
/etc:主要包含系统管理文件和配置文件;
/bin:存放可执行的文件,如常用命令ls、mkdir、rm等的二进制文件都存放在该目录中;
/home:普通用户的工作目录,每个用户都有一个/home目录;
/usr:包含所有的用户程序(/usr/bin)、库文件(/usr/lib)、文档(/usr/share/doc)等,是占用空间最大的目录。
/dev:存放设备文件,包括块设备文件(如磁盘对应文件)、字符设备文件(如键盘对应文件)等;
/root:超级用户,即管理员的工作目录;
/lib:主要存放动态链接共享库文件,类似于Windows中的.dll文件,该目录中的文件一般以.a、.dll、.so结尾(后缀不代表文件类型),也会存放与内核模块相关的文件;
/boot:存放操作系统启动时需要用到的文件,如内核文件、引导程序文件等;
/mnt:存储挂载存储设备的挂载目录;
/proc:存放系统内存的映射,可直接通过访问该目录来获取系统信息;
/opt:存放附加的应用程序软件包;
/tmp:存放临时文件,重启系统后该目录的文件不会被保存。每个用户都能创建该目录,但不能删除其它用户的/tmp目录;
/swap:存放虚拟内存交换时所用文件。

VI编辑器
vi的启动和退出
输入vi命令后,便进入全屏幕编辑环境,光标定位在该缓冲区第1行第1列的位置上,此时的状态为命令模式。
#编辑coco文件 vi coco
#编辑指定目录/tem下的vivi文件 vi /tmp/vivi
#保存修改 :w
#退出vi编辑器 :q
#保存并退出 :wq
#退出vi编辑器,不保存修改 :q!
进入和退出vi输入模式
在退出vi前,建议先按ESC键,以确保当前vi的状态为命令方式,然后再键入“:”(冒号),输入命令,退出vi。
#在光标之前输入文字 i
#退出 ESC
#在光标之后输入文字 a
#行尾插入文字 A
#光标下插入1行空行 o
#在光标上插入 1 行空行 O
vi命令模式下设置行号
使用vi命令编辑文本的时候,有时候需要查看某些行号,但是默认的vi命令打开文本的时候是不显示行号的,因此需要vi命令去显示行号。行号的设置是基于vi的环境设置,不会影响文本内容。
#显示该文件下所有行号 :set nu
#取消设置行号 :set nonu
vi命令模式下删除字符
vi 编辑器可以在输入模式和命令模式下删除文本。传统的文本删除是在输入模式下,使用退格键或 Del 键删除文本。在命令模式下,vi 提供许多删除命令。
#删掉光标后面的6个字符 6x
#删除一个词(剪切) dw
#删除行(剪切) dd
#删除5行(剪切) 5dd
vi命令模式下复制操作
vi 编辑器可以在输入模式和命令模式下复制文本。
#复制一个词 yw
#复制光标所在的行 yy
#复制光标所在行的下面5行 5yy
vi命令模式下粘贴操作
主要利用p命令粘贴到光标所在行的下一行。
#粘贴在光标所在的下一行 p
vi命令模式下撤销操作
撤销命令主要用于撤销前一次的误操作或不合适的操作对文件造成的影响。
#撤销到最近的一次保存的状态 u
#恢复到文档的初始状态 :e!
vi命令模式下光标快速定位
vi 编辑器中,光标可以按行移动,一次性移动一行或者多行。
#光标到达行末 G
#快速找到第8行 8G
#快速定位光标到光标后的第一个test单词的位置 /test
vi命令模式下替换内容
vi 编辑器提供简单的字符串替换命令,在末行模式下可以使用替换命令。
#把第2-5行中每一行的第一个:改成? :2,5 s/😕?
#把第2-5行中的:全部改成? :2,5 s/😕?/g
文件压缩与解压
常用压缩文件:
*.Z compress程序压缩的文件;
*.gz gzip程序压缩的文件;
*.bz2 bzip2程序压缩的文件;
*.tar tar程序打包的文件,文件大小没有改变;
*.tar.gz tar程序打包的文件,其中经过gzip压缩;
*.tar.bz2 tar程序打包的文件,其中经过bzip2压缩;

tar:
tar并不是一个压缩软件,而是一个打包软件,就是将文件或者文件夹打包成一个文件,便于文件备份及归档,通常扩展名为tar。
1、tar命令
打包:tar czvf FileName.tar DirName
解包:tar zxvf FileName.tar
tar -cvf test.tar test ----将test文件夹打包成test.tar。但test和test.tar大小上没有什么变化,说明tar只是将文件打包
常用操作:
压缩:tar -zcvf test.tar.gz test
解压:tar -zxvf file.tar.gz

在linux环境中经常看到.tgz的扩展名文件,可以等同于.tar.gz
压缩:tar jcvf test.tar.bz2 test/
解压:tar jxvf test.tar.bz2

-c 建立压缩档案
-x 解压
-t 查看内容
-r 向压缩文件末尾追加文件
-u 更新原压缩包中文件
上面5个命令必须选一个,下面几个参数可选:
-z 有gzip属性
-j 有bz2属性
-Z 有compress属性
-v 显示所有过程

2、gz命令
压缩:gzip FileName
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz

3、bz2命令
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName

4、Z命令
解压:uncompress FileName.Z
压缩:compress FileName

5、.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName

6、zip命令
解压:unzip FileName.zip
压缩:zip -r FileName.zip DirName
把/home目录下面的mydata目录压缩为mydata.zip

zip -r mydata.zip mydata

把/home目录下面的abc12.zip、abc23.zip、abc34.zip同时解压到/home目录里面

unzip abc*.zip

查看把/home目录下面的wwwroot.zip里面的内容

unzip -v wwwroot.zip

验证/home目录下面的wwwroot.zip是否完整

unzip -t wwwroot.zip
文件操作
ls命令功能:列出参数的属性信息
命令格式:ls [选项] [参数]
-l 以详细信息的形式展示出当前目录下的文件
-a 显示当前目录下的全部文件(包括隐藏文件)
-d 查看目录属性
-t 按创建时间顺序列出文件
-i 输出文件的inode编号
-R 列出当前目录下的所有文件信息,并以递归地方式显示各个子目录中的文件和子目录信息
Touch命令功能:更新已存在文件的时间标签,若文件不存在则新建文件
命令格式:touch 参数
示例:touch hello.c
mkdir命令功能:创建目录
命令格式:mkdir [选项] 参数
cp命令功能:将一个或多个源文件复制到指定目录
命令格式:cp [选项] 源文件或目录 目标目录
-R 递归处理,将指定目录下的文件及子目录一并处理
-p 拷贝的同时不修改文件属性,包括所有者、所属组、权限和时间
-f 强行复制文件或目录,无论目的文件或目录是否已经存在
rm命令功能:删除目录中的文件或目录
命令格式:rm [选项] 文件或目录
-f 强制删除文件或目录
-rf 选项-r与-f结合,删除目录中所有文件和子目录,并且不一一确认
-i 在删除文件或目录时对要删除的内容逐一进行确认(y/n)
mv命令功能:移动文件或目录
命令格式:mv 源文件或目录 目标目录
rmdir命令功能:删除目录
命令格式:rmdir dir
cat命令功能:打印文件内容到输出设备
命令格式:cat 文件名 cat hello.c
head命令功能:查看文件的前n行

tail命令功能:查看文件的后n行

which命令功能:查看命令所在路径
命令格式:which 命令 【ls dir rm mkdir】
文件搜索
find命令功能:借助搜索关键字(文件名、文件大小、文件所有者等)查找文件或目录
命令格式:find 搜索路径 [选项] 搜索关键字
示例:find /etc –name passwd(文件名称)
locate命令功能:借助搜索关键字查找文件或目录
locate速度远胜find
命令格式:locate [选项] 搜索关键字
权限管理
修改文件基本权限的命令
ll 命令查看文件权限

想要改文件的权限,只有管理员root和所有者才能修改
1、chmod:更改文件9个属性
Linux文件属性有两种设置方法,一种是数字,一种是符号。

Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。

① 数字改变文件权限(常用)
我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r:4
w:2
x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是:
owner = rwx = 4+2+1 = 7 x
group = rwx = 4+2+1 = 7 y
others= — = 0+0+0 = 0 z
所以等我们设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:

chmod [-R] xyz 文件或目录
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
② 符号类型改变文件权限
我们就可以藉由u, g, o来代表三种身份的权限!

此外, a 则代表 all 亦即全部的身份!那么读写的权限就可以写成r, w, x!也就是可以使用底下的方式来看:

chmod u +(加入) r 文件目录
g -(除去) w
o =(设定) x
a

如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r diename 来设定。

注意:如果一个目录有写的权限,其他用户对于这个目录下的文件也可以删除。
2、chown:更改文件属主,也可以同时更改文件属组
注意:这个命令只有管理员root才可以操作。而且系统里是必须存在这个用户。

语法:

chown [–R] 属主名: 文件名

chown [-R] 属主名:属组名 文件名

3、chgrp:更改文件属组。

语法:

chgrp [-R] 属组名 文件名
参数选项

-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

4、umask设置预设的权限掩码
umask -S
Linux umask命令指定在建立文件时预设的权限掩码,在学习这个命令之前,先了解一下默认的所有者和所属组是哪来的?

一个文件创建的时候所有者和所属组是哪来的?

所有者:谁创建的文件谁就是这个文件的所有者。

所属组:就是这个文件创建者的缺省组,每个用户只能有一个缺省组。

显示新建文件的缺省权限。

创建一个目录的时候查看发现 权限跟缺省权限是一致的,但是在test目录里创建一个文件后,查看文件缺省权限跟默认缺省权限不一致,这个是为什么呢?

rwxr-xr-x

rw-r–r-- 对比发现都少了一个x可执行权限,这是因为在Linux里缺省权限创建的文件是不可具有可执行权限的。

单独执行 umask 发现现实出 0022 ,这是什么意思呢?

022是权限掩码意思,真正的权限是777-022=755 写出来就是rwxr-xr-x.

如果我们自己要是想修改这个缺省权限,该怎么修改的。

先把想修改的权限格式表示出来,算出对应的数字,再用777-对应的数字就可以,
read 命令
read num 获取输入参数 num
-a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。
-d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志。
-p 后面跟提示信息,即在输入前打印提示信息。
-e 在输入的时候可以使用命令补全功能。
-n 后跟一个数字,定义输入文本的长度,很实用。
-r 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了。
-s 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码。
-t 后面跟秒数,定义输入字符的等待时间。
-u 后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的。
Shell脚本基础学习
Shell特别注重空格
$num 传入的参数或变量num的值
算术运算符
下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:
运算符 说明 举例

  • 加法 expr $a + $b 结果为 30。
  • 减法 expr $a - $b 结果为 -10。
  • 乘法 expr $a \* $b 结果为 200。
    / 除法 expr $b / $a 结果为 2。
    % 取余 expr $b % $a 结果为 0。
    = 赋值 a=$b 将把变量 b 的值赋给 a。
    == 相等。用于比较两个数字,相同则返回 true。 [ $a == $b ] 返回 false。
    != 不相等。用于比较两个数字,不相同则返回 true。 [ $a != $b ] 返回 true。
    关系运算符
    关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
    下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:
    运算符 说明 举例
    -eq 检测两个数是否相等,相等返回 true。 [ $a -eq $b ] 返回 false。
    -ne 检测两个数是否不相等,不相等返回 true。 [ $a -ne $b ] 返回 true。
    -gt 检测左边的数是否大于右边的,如果是,则返回 true。 [ $a -gt $b ] 返回 false。
    -lt 检测左边的数是否小于右边的,如果是,则返回 true。 [ $a -lt $b ] 返回 true。
    -ge 检测左边的数是否大于等于右边的,如果是,则返回 true。 [ $a -ge $b ] 返回 false。
    -le 检测左边的数是否小于等于右边的,如果是,则返回 true。 [ $a -le $b ] 返回 true。
    字符串运算符
    下表列出了常用的字符串运算符,假定变量 a 为 “abc”,变量 b 为 “efg”:
    运算符 说明 举例
    = 检测两个字符串是否相等,相等返回 true。 [ $a = $b ] 返回 false。
    != 检测两个字符串是否相等,不相等返回 true。 [ $a != $b ] 返回 true。
    -z 检测字符串长度是否为0,为0返回 true。 [ -z a ] 返回 f a l s e 。 − n 检测字符串长度是否不为 0 ,不为 0 返回 t r u e 。 [ − n " a ] 返回 false。 -n 检测字符串长度是否不为 0,不为 0 返回 true。 [ -n " a]返回falsen检测字符串长度是否不为0,不为0返回true[n"a" ] 返回 true。
    $ 检测字符串是否为空,不为空返回 true。 [ $a ] 返回 true。
    Shell test 命令 用于比较判断
    数值测试
    参数 说明
    -eq 等于则为真
    -ne 不等于则为真
    -gt 大于则为真
    -ge 大于等于则为真
    -lt 小于则为真
    -le 小于等于则为真
    实例演示:
    num1=100
    num2=100if test $[num1] -eq KaTeX parse error: Expected 'EOF', got '#' at position 81: …] 执行基本的算数运算,如: #̲!/bin/bash a=5 …[a+b] # 注意等号两边不能有空格
    echo “result 为: $result”
    结果为:
    result 为: 11
    字符串测试
    参数 说明
    = 等于则为真
    != 不相等则为真
    -z 字符串 字符串的长度为零则为真
    -n 字符串 字符串的长度不为零则为真
    实例演示:
    num1=“ru1noob”
    num2=“runoob"if test $num1 = $num2then
    echo '两个字符串相等!'else
    echo '两个字符串不相等!'fi
    输出结果:
    两个字符串不相等!
    文件测试
    参数 说明
    -e 文件名 如果文件存在则为真
    -r 文件名 如果文件存在且可读则为真
    -w 文件名 如果文件存在且可写则为真
    -x 文件名 如果文件存在且可执行则为真
    -s 文件名 如果文件存在且至少有一个字符则为真
    -d 文件名 如果文件存在且为目录则为真
    -f 文件名 如果文件存在且为普通文件则为真
    -c 文件名 如果文件存在且为字符型特殊文件则为真
    -b 文件名 如果文件存在且为块特殊文件则为真
    实例演示:
    cd /binif test -e ./bashthen
    echo '文件已存在!'else
    echo '文件不存在!'fi
    输出结果:
    文件已存在!
    另外,Shell还提供了与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为:”!“最高,”-a"次之,"-o"最低。例如:
    cd /binif test -e ./notFile -o -e ./bashthen
    echo '至少有一个文件存在!'else
    echo '两个文件都不存在’fi
    输出结果:
    至少有一个文件存在!
    If 结构
    If [ -e http.d];then
    Echo “http.d exist”
    Fi
    If else 结构
    If [ exprisson ];then
    Echo “sdsd”
    Else
    Fi
    If /elif /else 结构
    If expression;then
    Echo “biubiu”
    Elif expression;then
    Echo “biubiu”
    Elif expression;then
    Echo “biubiu”
    Else
    Echo “biubiu”
    循环结构
    For循环
    For expression in {}
    Do
    Echo
    Done

while expression
Do
Echo
Done

Until expression
Do
Echo
done
Shell 文件包含
和其他语言一样,Shell 也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为一个独立的文件。
Shell 文件包含的语法格式如下:
. filename # 注意点号(.)和文件名中间有一空格

source filename
实例
创建两个 shell 脚本文件。

test1.sh
代码如下:

#!/bin/bash
#author:菜鸟教程

url:www.runoob.com

url=“http://www.runoob.com”

test2.sh
代码如下:

#!/bin/bash

author:菜鸟教程

url:www.runoob.com

#使用 . 号来引用test1.sh 文件
. ./test1.sh

#或者使用以下包含文件代码
#source ./test1.sh

echo “菜鸟教程官网地址:$url”
接下来,我们为 test2.sh 添加可执行权限并执行:

$ chmod +x test2.sh
$ ./test2.sh
菜鸟教程官网地址:http://www.runoob.com

模拟用户登录

注意的几点:
1、if和[ ]之间要空格。
2、[ ]和“ ”之间要空格
3、“ ”和=之间要空格,
否则都会报错
shell脚本每天自动备份mysql数据库
一、mysql提供了一个mysqldump的工具可以方便的导出导入数据库信息;
二、使用命令行shell测试执行mysqldump,理解必备的参数,查看生成的sql备份文件是否符合需求;
/usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlBackup/db_date +%F.sql
注解:
1、执行 /usr/bin/mysqldump;
2、–opt是quick,add-drop-table,add-locks,extended-insert,lock-tables几个参数的合称,一般都要使用,具体意思自行搜索;
3、-u数据库用户名 -p数据库用户密码 -h数据库地址 数据库名 > 导出的文件路径;
4、date +%F是shell中生成当前日期,格式如2015-11-05,所以成功导出时生成的文件名为 db_2015-11-05.sql;
5、下载生成的 sql文件 ,用文本编辑器打开检查,本地导入测试数据库,看是否有问题;
三、整理编写比较灵活的shell脚本,方便重用;

#!/bin/sh

Database info

DB_USER=“batsing”
DB_PASS=“batsingpw”
DB_HOST=“localhost”
DB_NAME=“timepusher”

Others vars

BIN_DIR=“/usr/bin” #the mysql bin path
BCK_DIR=“/mnt/mysqlBackup” #the backup file directory
DATE=date +%F

TODO

/usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlBackup/db_date +%F.sql

B I N D I R / m y s q l d u m p − − o p t − u BIN_DIR/mysqldump --opt -u BINDIR/mysqldumpoptuDB_USER -p D B P A S S − h DB_PASS -h DBPASShDB_HOST $DB_NAME > KaTeX parse error: Expected group after '_' at position 11: BCK_DIR/db_̲DATE.sql

#还原数据库
#用mysql-front导入前一天的 *.sql 文件即可恢复数据

保存到文件或上传到 /usr/local/apache/htdocs/timepusher/sqlBak/sqlAutoBak.sh
四、测试Shell脚本
1、进入到该脚本文件目录 chmod +x sqlAutoBak.sh 添加执行权限,否则会报错 Permission denied
2、./sqlAutoBak.sh ,如果是在windows编写上传的文件可能会报错
/bin/sh^M: bad interpreter: No such file or directory
这是不同系统编码格式引起的:在 windows系统中编辑的 .sh文件可能有不可见字符,所以在 Linux系统下执行会报以上异常信息。可以在Windows上使用Notepad++转换成Unix格式(菜单中选择:编辑>档案格式转换>转换成UNIX)
3、修改后上传继续执行 ./sqlAutoBak.sh ,没有报错。再查看导出的sql文件。
五、压缩mysql的备份数据
1、查看导出来的sql文件,发现其文件大小非常大,mysqldump也提供了生成gzip压缩文件的参数设置
2、sqlAutoBak.sh修改为如下

#!/bin/sh

Database info

DB_USER=“batsing”
DB_PASS=“batsingpw”
DB_HOST=“localhost”
DB_NAME=“timepusher”

Others vars

BIN_DIR=“/usr/bin” #the mysql bin path
BCK_DIR=“/mnt/mysqlBackup” #the backup file directory
DATE=date +%F

TODO

/usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlBackup/db_date +%F.sql

B I N D I R / m y s q l d u m p − − o p t − u BIN_DIR/mysqldump --opt -u BINDIR/mysqldumpoptuDB_USER -p D B P A S S − h DB_PASS -h DBPASShDB_HOST $DB_NAME > KaTeX parse error: Expected group after '_' at position 11: BCK_DIR/db_̲DATE.sql

B I N D I R / m y s q l d u m p − − o p t − u BIN_DIR/mysqldump --opt -u BINDIR/mysqldumpoptuDB_USER -p D B P A S S − h DB_PASS -h DBPASShDB_HOST $DB_NAME | gzip > KaTeX parse error: Expected group after '_' at position 11: BCK_DIR/db_̲DATE.sql.zip

还原数据库

把 *.sql.zip 使用gunzip 或 本地的解压软件 解压为 *.sql 文件

用mysql-front导入前一天的 *.sql 文件即可恢复数据

3、修改后上传继续执行 ./sqlAutoBak.sh ,没有报错。如果用文本编辑器查看导出的 *.sql.gz文件,应该是一堆乱码。
4、下载到本地使用解压软件打开,解压就能看到里面真正的 *.sql 文件了。

六、设置linux定时任务执行该脚本;

1、编辑定时任务列表
crontab -e
2、插入下面这一行,因为通常来说5点钟网站的访问量最低。
00 05 * * * /bin/sh /usr/local/apache/htdocs/timepusher/sqlBak/sqlAutoBak.sh
#每天早上 5:00am 执行
下面是每隔多少分钟,每隔多少小时,每天/每周/每月/每年的crontab的归纳总结
每五分钟执行 */5 * * * *
每五小时执行 0 */5 * * *
每天执行 0 0 * * *
每周执行 0 0 * * 0
每月执行 0 0 1 * *
每年执行 0 0 1 1 *

3、查看任务是否创建成功
crontab -l
七、第二天检查自动生成的sql文件是否符合要求
如果生成的文件和解压出来查看没有问题,那么这个自动定时备份数据库的脚本就算是完成了。因为生成的文件多了会占用一定的空间,所以建议要定期(比如一个月)清理一下文件。

$、补充
1、如果该数据库的用户没有分配 锁表 的权限,则备份会报错 when using LOCK TABLES 。那是因为mysqldump命令默认在导出时是要锁定表的,所以解决方式有两个。一个是给该用户开放 锁表 的权限;另一个是在命令中加上 --skip-lock-tables 这个参数。即是:
B I N D I R / m y s q l d u m p − − o p t − u BIN_DIR/mysqldump --opt -u BINDIR/mysqldumpoptuDB_USER -p D B P A S S − h DB_PASS -h DBPASShDB_HOST $DB_NAME --skip-lock-tables| gzip > KaTeX parse error: Expected group after '_' at position 11: BCK_DIR/db_̲DATE.sql.gz

网络配置
配置静态ip
1.cat /etc/sysconfig/network
2.cat /etc/resolv.conf

3.cat /etc/sysconfig/network-scripts/ifcfg-ethN (eth0为默认的,需要根据自己的情况而定)
我们依次来配置了解和配置一下上面的三个文件
/etc/sysconfig/network 网络设置
该文件用来指定服务器上的网络配置信息,包含了控制和网络有关的文件和守护程序的行为的参数。下面是一个例子文件:
NETWORKING=yes
HOSTNAME=machine1
GATEWAY=210.34.6.2
FORWARD_IPV4=yes
GATEWAYDEV=
其中, NETWORK=yes/no 表示网络是否被配置;
HOSTNAME=hostname hostname 表示服务器的主机名;
GATEWAY=gw-ip gw-ip 表示网络网关的IP 地址;
FORWARD_IPV4=yes/no 是否开启IP 转发功能;
GAREWAYDEV=gw-dev gw-dw 表示网关的设备名,如:eth0 等。
注:改完/etc/init.d/network 需要重新启动才能生效
命令:# /etc/rc.d/init.d/network start 启动network

/etc/rc.d/init.d/network stop 停止network

/etc/rc.d/init.d/network restart 重启network

以下是我的文件内容
NETWORKING=yes
HOSTNAME=localhost.localdomain
#GATEWAY=192.168.1.1 (注:这里的GATEWAY最好注释掉,因为在/etc/sysconfig/network-scripts/ifcfg-eth0 中也有GATEWAY配置,)
/etc/resolv.conf 配置DNS 客户
文件/etc/resolv.conf 配置DNS 客户,它包含了主机的域名搜索顺序和DNS服务器的地址,每一行应包含一个关键字和一个或多个的由空格隔开的参数。最多可以设置3行,前面的生效。
下面是一个例子文件:
nameserver 192.168.0.36
nameserver 192.168.0.37
search huawei-3com.com
合法的参数及其意义如下:
nameserver 表明DNS 服务器的IP 地址。可以有很多行的nameserver,每一个带一个I P 地址。在查询时就按nameserver 在本文件中的顺序进行,且只有当第一个nameserver 没有反应时才查询下面的nameserver.
domain 声明主机的域名。很多程序用到它,如邮件系统;当为没有域名的主
机进行DNS 查询时,也要用到。如果没有域名,主机名将被使用,删除所有在第一个点( . )前面的内容。

search 它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search 声明的域中分别查找。domain 和search 不能共存;如果同时存在,后面出现的将会被使用。
sortlist 允许将得到域名结果进行特定的排序。它的参数为网络/掩码对。允许任意的排列顺序。Red Hat 中没有提供缺省的/etc/resolv.conf 文件,它的内容是根据在安装时给出的选项动态创建的。
以下为我的/etc/resolv.conf 内容
search localdomain
nameserver 192.168.1.1
/etc/sysconfig/network-scripts/ifcfg-ethN 文件
系统网络设备的配置文件保存在”/etc/sysconfig/network-scripts”目录下,ifcfg-eth0 包含第一块网卡的配置信息,ifcfg-eth1 包含第二块网卡的配置信息。
下面是“/etc/sysconfig/network-scripts/ifcfg-eth0”文件的示例:
DEVICE=eth0 网卡编号
ONBOOT=yes 开机时是否启动网卡
BOOTPROTO=static 静态ip或者DHCP动态获取(none/static/DHCP)
IPADDR=192.168.0.66 本机ip地址
NETMASK=255.255.255.0 子网掩码
GATEWAY=192.168.0.65 默认网关
TYPE=Ethernet
USERCTL=no
PEERDNS=no
若希望手工修改网络地址或在新的接口上增加新的网络界面可以通过修改
对应的文件(ifcfg-ethN) 或创建新的文件来实现。
以下为我的文件内容
NETWORKING=yes
HOSTNAME=localhost.localdomain
#GATEWAY=192.168.1.1
[root@localhost xjch]# cat /etc/resolv.conf
search localdomain
nameserver 192.168.1.1
[root@localhost xjch]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.1.111
NETMASK=255.255.255.0
#NETWORK=198.168.1.0
GATEWAY=192.168.1.1
TYPE=Ethernet
USERCTL=no
PEERDNS=no
注:单个网络接口的配置文件进行修改后,不必每次都从新启动network服务使配置文件生效,可用以下命令。
Ifdown 网络接口名称 停止某个网络接口。
Ifup 网络接口名称 开启某个网络接口。
例如:

ifconfig eth0 down 停止eth0接口

ifconfig eth0 up 开启eth0接口

防火墙和开放端口
防火墙
CentOS 7
如果你发现在CentOS 7上开放端口用iptables没效果(或者是sodino没找到正确的命令,传说Centos7 下默认的防火墙是 Firewall,替代了之前的 iptables)…
使用firewall-cmd开放端口则立即就生效了。
见下操作:
firewall-cmd --state //查看运行状态
查看所有打开的端口:
firewall-cmd --zone=public --list-ports

// 开放1024的端口
firewall-cmd --add-port=1024/tcp --permanent
// 重载生效刚才的端口设置
firewall-cmd --reload

firewall常用命令如下:
常用命令介绍
firewall-cmd --state ##查看防火墙状态,是否是running
firewall-cmd --reload ##重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones ##列出支持的zone
firewall-cmd --get-services ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口
删除
firewall-cmd --remove-port=80/tcp --permanent
iptables -L -n ##查看规则,这个命令是和iptables的相同的
man firewall-cmd ##查看帮助

端口查看

Centos修改yum镜像源 和下载包管理
更换yum官方源
#下载wget工具,一般默认有
yum install -y wget
#进入yum源配置文件所在文件夹
cd /etc/yum.repos.d/
#备份本地yum源(修改或删除文件都建议备份下)
mv CentOS-Base.repo CentOS-Base.repo_bak
获取国内yum源进行覆盖(阿里云、163等等)
1.
yum -y install yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/repo/Centos-7.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak
mv /etc/yum.repos.d/Centos-7.repo /etc/yum.repos.d/CentOS-Base.repo
yum clean all
yum makecache
yum repolist
2.
yum -y install wget
rm -rf /etc/yum.repos.d/*
Wget -O /etc/yum.repos.d/CentOS-Base.repo
‘https://lug.ustc.edu.cn/wiki/_export/code/mirrors/help/centos?codeblock=3’
yum clean all && yum makecache
3.
#以CentOs7为例,若为CentOs5/6只需要改下方数字
Wget -O CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo

#wget -O CentOS-Base.repo
http://mirrors.163.com/.help/CentOS7-Base-163.repo
通常,yum 把下载的header和软件包都存储在/var/cache/yum目录中,而不会自动删除。如果你觉得它们占用了大量磁盘空间,可以使用yum clean指令进行清除
#清理yum缓存
yum clean all
#清理后重建缓存
yum makecache
#升级Linux系统
yum -y update
增加EPEL源
(Extra Packages for Enterprise Linux),为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS等,里面有1万多个软件,强烈建议安装。
#安装epel源
yum install epel-release
#修改为阿里的epel源
Wget -O /etc/yum.repos.d/epel.repo
http://mirrors.aliyun.com/repo/epel-7.repo
yum priorities 插件可以用来强制保护源。它通过给各个源设定不同的优先级,使得系统管理员可以将某些源(比如 Linux 发行版的官方源)设定为最高优先级,从而保证系统的稳定性(同时也可能无法更新到其它源上提供的软件最新版本)。

#安装yum源优先级管理工具
yum install -y yum-priorities
#添加优先级(数字越小优先级越高)
vim /etc/yum.repo.d/epel.repo
priority=88
#添加优先级(这个数要小于epel里的88即可)
vim /etc/yum.repo.d/Centos-Base.repo
priority=6
#开启yum源优先级功能
vim /etc/yum/pluginconf.d/priorities.conf
rpm 包管理
1.及依赖查询删除

yum -y remove $(rpm -qa |grep bind)

删除:
bind.x86_64 32:9.11.4-16.P2.el7_8.2
bind-libs.x86_64 32:9.11.4-16.P2.el7_8.2
bind-libs-lite.x86_64 32:9.11.4-16.P2.el7_8.2
bind-license.noarch 32:9.11.4-16.P2.el7_8.2
2.RPM软件包的签名
warning: mysql-community-libs-8.0.20-1.el7.aarch64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKE

rpm -ivh MySQL-server-5.5.46-1.linux2.6.x86_64.rpm --force --nodeps
从 RPM 版本 4.1 开始,在安装或升级软件包时会检查软件包的签名。

安装mysql时出现:
mysql-community-server-8.0.18-1.el6.i686.rpm: Header V3 DSA/SHA1 Signature

原因:这是由于yum安装了旧版本的GPG keys造成的
解决办法:后面加上
–force --nodeps
如:rpm -ivh mysql-community-server-5.7.19-1.el6.x86_64.rpm --force --nodeps

3.安装C-S架构式软件 例如 mysql
需下载server 和 client 两个包
mysql 三种安装方式:RPM 二进制包和源代码
首先可以从安装光盘中或者到mysql的网站上下载对应版本的rpm包如下:
MySQL-server-community-5.1.38-0.rhel5.i386.rpm
MySQL-client-community-5.1.38-0.rhel5.i386.rpm

接着我们可以使用rpm命令进行安装:
rpm -ivh MySQL-server-community-5.1.38-0.rhel5.i386.rpm
rpm -ivh MySQL-client-community-5.1.38-0.rhel5.i386.rpm
4.记一次error: unpacking of archive failed on file错误的解决
今天在用yum安装软件包的时候出现如下错误信息(这只是部分):
Installing : pango-1.28.1-11.el6.x86_64 1/9
Error unpacking rpm package pango-1.28.1-11.el6.x86_64
error: unpacking of archive failed on file /usr/bin/pango-querymodules-64;57e33cf7: cpio: open
Installing : libtiff-3.9.4-18.el6_8.x86_64 2/9
Error unpacking rpm package libtiff-3.9.4-18.el6_8.x86_64
error: unpacking of archive failed on file /usr/bin/bmp2tiff;57e33cf7: cpio: open
分析:这个是用yum 安装时遇到的,已经到了安装的步骤了,说明 前面 检查依赖 下载包都是没有问题的
在分析 on file /usr/bin/pango 发现所有的包 都是在/usr/bin/这个路径下 然后报错 可能是/usr/bin目录的问题吧
于是 我看了下这个目录 :
lsattr /usr
-------------e- /usr/etc
-------------e- /usr/sbin
----------I–e- /usr/lib64
-------------e- /usr/share
-------------e- /usr/local
----------I–e- /usr/include
-------------e- /usr/games
----i-----I–e- /usr/bin
发现 /usr/bin 这个目录属性有个i 原来是之前我加过导致文件不能增加,于是去掉i
chattr -i /usr/bin 在次运行 yum ok
其实也走了很多弯路包括 yum clean all ,更改yum源等,上面只是把最终成功的方式写下来了

Linux wget命令用法详解
Linux系统中的wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器。wget支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成,相对于其它大部分浏览器在下载大量数据时需要用户一直的参与,这省去了极大的麻烦。
wget 可以跟踪HTML页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构。这又常被称作”递归下载”。在递归下载的时候,wget 遵循Robot Exclusion标准(/robots.txt). wget可以在下载的同时,将链接转换成指向本地文件,以方便离线浏览。
wget 非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。
1.命令格式
wget [参数] [URL地址]
2.命令功能
用于从网络上下载资源,没有指定目录,下载资源回默认为当前目录。wget虽然功能强大,但是使用起来还是比较简单:
1)支持断点下传功能;这一点,也是网络蚂蚁和FlashGet当年最大的卖点,现在,Wget也可以使用此功能,那些网络不是太好的用户可以放心了;
2)同时支持FTP和HTTP下载方式;尽管现在大部分软件可以使用HTTP方式下载,但是,有些时候,仍然需要使用FTP方式下载软件;
3)支持代理服务器;对安全强度很高的系统而言,一般不会将自己的系统直接暴露在互联网上,所以,支持代理是下载软件必须有的功能;
4)设置方便简单;可能,习惯图形界面的用户已经不是太习惯命令行了,但是,命令行在设置上其实有更多的优点,最少,鼠标可以少点很多次,也不要担心是否错点鼠标;
5)程序小,完全免费;程序小可以考虑不计,因为现在的硬盘实在太大了;完全免费就不得不考虑了,即使网络上有很多所谓的免费软件,但是,这些软件的广告却不是我们喜欢的。
3.命令参数
启动参数:

-V, –version 显示wget的版本后退出

-h, –help 打印语法帮助

-b, –background 启动后转入后台执行

-e, –execute=COMMAND 执行`.wgetrc’格式的命令,wgetrc格式参见/etc/wgetrc或~/.wgetrc

记录和输入文件参数:

-o, –output-file=FILE 把记录写到FILE文件中

-a, –append-output=FILE 把记录追加到FILE文件中

-d, –debug 打印调试输出

-q, –quiet 安静模式(没有输出)

-v, –verbose 冗长模式(这是缺省设置)

-nv, –non-verbose 关掉冗长模式,但不是安静模式

-i, –input-file=FILE 下载在FILE文件中出现的URLs

-F, –force-html 把输入文件当作HTML格式文件对待

-B, –base=URL 将URL作为在-F -i参数指定的文件中出现的相对链接的前缀

–sslcertfile=FILE 可选客户端证书

–sslcertkey=KEYFILE 可选客户端证书的KEYFILE

–egd-file=FILE 指定EGD socket的文件名

下载参数:

–bind-address=ADDRESS 指定本地使用地址(主机名或IP,当本地有多个IP或名字时使用)

-t, –tries=NUMBER 设定最大尝试链接次数(0 表示无限制).

-O –output-document=FILE 把文档写到FILE文件中

-nc, –no-clobber 不要覆盖存在的文件或使用.#前缀

-c, –continue 接着下载没下载完的文件

–progress=TYPE 设定进程条标记

-N, –timestamping 不要重新下载文件除非比本地文件新

-S, –server-response 打印服务器的回应

–spider 不下载任何东西

-T, –timeout=SECONDS 设定响应超时的秒数

-w, –wait=SECONDS 两次尝试之间间隔SECONDS秒

–waitretry=SECONDS 在重新链接之间等待1…SECONDS秒

–random-wait 在下载之间等待0…2*WAIT秒

-Y, –proxy=on/off 打开或关闭代理

-Q, –quota=NUMBER 设置下载的容量限制

–limit-rate=RATE 限定下载输率

目录参数:

-nd –no-directories 不创建目录

-x, –force-directories 强制创建目录

-nH, –no-host-directories 不创建主机目录

-P, –directory-prefix=PREFIX 将文件保存到目录 PREFIX/…

–cut-dirs=NUMBER 忽略 NUMBER层远程目录

HTTP 选项参数:

–http-user=USER 设定HTTP用户名为 USER.

–http-passwd=PASS 设定http密码为 PASS

-C, –cache=on/off 允许/不允许服务器端的数据缓存 (一般情况下允许)

-E, –html-extension 将所有text/html文档以.html扩展名保存

–ignore-length 忽略 `Content-Length’头域

–header=STRING 在headers中插入字符串 STRING

–proxy-user=USER 设定代理的用户名为 USER

–proxy-passwd=PASS 设定代理的密码为 PASS

–referer=URL 在HTTP请求中包含 `Referer: URL’头

-s, –save-headers 保存HTTP头到文件

-U, –user-agent=AGENT 设定代理的名称为 AGENT而不是 Wget/VERSION

–no-http-keep-alive 关闭 HTTP活动链接 (永远链接)

–cookies=off 不使用 cookies

–load-cookies=FILE 在开始会话前从文件 FILE中加载cookie

–save-cookies=FILE 在会话结束后将 cookies保存到 FILE文件中

FTP 选项参数:

-nr, –dont-remove-listing 不移走 `.listing’文件

-g, –glob=on/off 打开或关闭文件名的 globbing机制

–passive-ftp 使用被动传输模式 (缺省值).

–active-ftp 使用主动传输模式

–retr-symlinks 在递归的时候,将链接指向文件(而不是目录)

递归下载参数:

-r, –recursive 递归下载--慎用!

-l, –level=NUMBER 最大递归深度 (inf 或 0 代表无穷)

–delete-after 在现在完毕后局部删除文件

-k, –convert-links 转换非相对链接为相对链接

-K, –backup-converted 在转换文件X之前,将之备份为 X.orig

-m, –mirror 等价于 -r -N -l inf -nr

-p, –page-requisites 下载显示HTML文件的所有图片

递归下载中的包含和不包含(accept/reject):

-A, –accept=LIST 分号分隔的被接受扩展名的列表

-R, –reject=LIST 分号分隔的不被接受的扩展名的列表

-D, –domains=LIST 分号分隔的被接受域的列表

–exclude-domains=LIST 分号分隔的不被接受的域的列表

–follow-ftp 跟踪HTML文档中的FTP链接

–follow-tags=LIST 分号分隔的被跟踪的HTML标签的列表

-G, –ignore-tags=LIST 分号分隔的被忽略的HTML标签的列表

-H, –span-hosts 当递归时转到外部主机

-L, –relative 仅仅跟踪相对链接

-I, –include-directories=LIST 允许目录的列表

-X, –exclude-directories=LIST 不被包含目录的列表

-np, –no-parent 不要追溯到父目录

wget -S –spider url 不下载只显示过程

4.使用实例
实例1:使用wget下载单个文件
命令:
wget http://www.linuxidc.com/linuxidc.zip
说明:
以下的例子是从网络下载一个文件并保存在当前目录,在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。

实例2:使用wget -O下载并以不同的文件名保存
命令:
wget -O wordpress.zip http://www.linuxidc.com/download.aspx?id=1080
说明:
wget默认会以最后一个符合”/”的后面的字符来命令,对于动态链接的下载通常文件名会不正确。
错误:下面的例子会下载一个文件并以名称download.aspx?id=1080保存
wget http://www.linuxidc.com/download?id=1
即使下载的文件是zip格式,它仍然以download.php?id=1080命令。
正确:为了解决这个问题,我们可以使用参数-O来指定一个文件名:
wget -O wordpress.zip http://www.linuxidc.com/download.aspx?id=1080
实例3:使用wget –limit -rate限速下载
命令:
wget --limit-rate=300k http://www.linuxidc.com/linuxidc.zip
说明:
当你执行wget的时候,它默认会占用全部可能的宽带下载。但是当你准备下载一个大文件,而你还需要下载其它文件时就有必要限速了。
实例4:使用wget -c断点续传
命令:
wget -c http://www.linuxidc.com/linuxidc.zip
说明:
使用wget -c重新启动下载中断的文件,对于我们下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件。需要继续中断的下载时可以使用-c参数。
实例5:使用wget -b后台下载
命令:
wget -b http://www.linuxidc.com/linuxidc.zip
说明:
对于下载非常大的文件的时候,我们可以使用参数-b进行后台下载。
wget -b http://www.linuxidc.com/linuxidc.zip
Continuing in background, pid 1840.
Output will be written to `wget-log’.
你可以使用以下命令来察看下载进度:
tail -f wget-log
实例6:伪装代理名称下载
命令:
wget --user-agent=“Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16” http://www.linuxidc.com/linuxidc.zip
说明:
有些网站能通过根据判断代理名称不是浏览器而拒绝你的下载请求。不过你可以通过–user-agent参数伪装。
实例7:使用wget –spider测试下载链接
命令:
wget --spider URL
说明:
当你打算进行定时下载,你应该在预定时间测试下载链接是否有效。我们可以增加–spider参数进行检查。
wget --spider URL
如果下载链接正确,将会显示
wget --spider URL
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response… 200 OK
Length: unspecified [text/html]
Remote file exists and could contain further links,
but recursion is disabled – not retrieving.
这保证了下载能在预定的时间进行,但当你给错了一个链接,将会显示如下错误
wget --spider url
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response… 404 Not Found
Remote file does not exist – broken link!!!
你可以在以下几种情况下使用spider参数:
定时下载之前进行检查
间隔检测网站是否可用
检查网站页面的死链接
实例8:使用wget –tries增加重试次数
命令:
wget --tries=40 URL
说明:
如果网络有问题或下载一个大文件也有可能失败。wget默认重试20次连接下载文件。如果需要,你可以使用–tries增加重试次数。
实例9:使用wget -i下载多个文件
命令:
wget -i filelist.txt
说明:
首先,保存一份下载链接文件
cat > filelist.txt
url1
url2
url3
url4
接着使用这个文件和参数-i下载
实例10:使用wget –mirror镜像网站
命令:
wget --mirror -p --convert-links -P ./LOCAL URL
说明:
下载整个网站到本地。
–miror:开户镜像下载
-p:下载所有为了html页面显示正常的文件
–convert-links:下载后,转换成本地的链接
-P ./LOCAL:保存所有文件和目录到本地指定目录
实例11:使用wget –reject过滤指定格式下载
命令:
wget --reject=gif ur
说明:
下载一个网站,但你不希望下载图片,可以使用以下命令。
实例12:使用wget -o把下载信息存入日志文件
命令:
wget -o download.log URL
说明:
不希望下载信息直接显示在终端而是在一个日志文件,可以使用
实例13:使用wget -Q限制总下载文件大小
命令:
wget -Q5m -i filelist.txt
说明:
当你想要下载的文件超过5M而退出下载,你可以使用。注意:这个参数对单个文件下载不起作用,只能递归下载时才有效。
实例14:使用wget -r -A下载指定格式文件
命令:
wget -r -A.pdf url
说明:
可以在以下情况使用该功能:
下载一个网站的所有图片
下载一个网站的所有视频
下载一个网站的所有PDF文件
实例15:使用wget FTP下载
命令:
wget ftp-url
wget --ftp-user=USERNAME --ftp-password=PASSWORD url
说明:
可以使用wget来完成ftp链接的下载。
使用wget匿名ftp下载:
wget ftp-url
使用wget用户名和密码认证的ftp下载
wget --ftp-user=USERNAME --ftp-password=PASSWORD url
备注:编译安装
使用如下命令编译安装:

tar zxvf wget-1.9.1.tar.gz

cd wget-1.9.1

./configure

make

make install

源码安装易出现的错误
举个栗子:tomcat源码包
tomcat官网中的source包是不完整的,logs文件夹跟bootstrap.jar一些重要的文件都没有的。正确的tomcat应该下载它的bin包

系统服务管理
Systemctl 功能 服务名称
参数 Centos6 Centos7
启动 Service 服务名 start systemctl start name.service
停止 Service 服务名 stop systemctl stop name.service
重启 service 服务名 restart systemctl restart name.service
状态查询 service 服务名 status systemctl status name.service
开机自启 service 服务名 enable systemctl enable name.service
取消自启 service 服务名 disable systemctl disable name.service

Linux常见服务类别及功能
在Linux系统中,服务启动得越多,占用的系统资源就越多。常见的服务如下:
服务名称 功能简介 建议
acpid 电源管理接口。如果是笔记本电脑用户,则建议开启,可以监听内核层的相关电源事件 开启
anacron 系统的定时任务程序。是 cron 的一个子系统,如果定时任务错过了执行时间,则可以通过 anacron 继续唤醒执行 关闭
alsasound alsa 声卡驱动。如果使用 alsa 声卡,则开启 关闭
apmd 电源管理模块。如果支持 acpid,就不需要 apmd,可以关闭 关闭
atd 指定系统在特定时间执行某个任务,只能执行一次。如果需要则开启,但我们一般使用 crond 来执行循环定时任务 关闭
auditd 审核子系统。如果开启了此服务,那么SELinux的审核信息会写入 /var/log/audit/ audit.log 文件;
如果不开启,那么审核信息会记录在syslog中 开启
autofs 让服务器可以自动挂载网络中其他服务器的共享数据,一般用来自动挂载 NFS 服务。如果没有 NFS 服务,则建议关闭 关闭
avahi-daemon avahi 是 zeroconf 协议的实现,它可以在没有 DNS 服务的局域网里发现基于 zeroconf 协议的设备和服务。
除非有兼容设备或使用 zeroconf 协议,否则关闭 关闭
bluetooth 蓝牙设备支持。一般不会在服务器上启用蓝牙设备,关闭它 关闭
capi 仅对使用 ISND 设备的用户有用 关闭
chargen-dgram 使用 UDP 协议的 chargen server。其主要提供类似远程打字的功能 关闭
chargen-stream 同上 关闭
cpuspeed 可以用来调整 CPU 的频率。当闲置时,可以自动降低 CPU 频率来节省电量 开启
crond 系统的定时任务,一般的 Linux 服务器都需要定时任务来协助系统维护。建议开启 开启
cvs 一个版本控制系统 关闭
daytime-dgram 使用 TCP 协议的 daytime 守护进程,该协议为客户机实现从远程服务器获取日期和时间的功能 关闭
daytime-slream 同上 关闭
dovecot 邮件服务中 POP3/IMAP 服务的守护进程,主要用来接收信件。如果启动了邮件服务则开启:否则关闭 关闭
echo-dgram 服务器回显客户服务的进程 关闭
echo-stream 同上 关闭
firstboot 系统安装完成后,有一个欢迎界面,需要对系统进行初始设定,这就是这个服务的作用。
既然不是第一次启动了,则建议关闭 关闭
gpm 在字符终端 (ttyl~tty6) 中可以使用鼠标复制和粘贴,这就是这个服务的功能 开启
haldaemon 检测和支持 USB 设备。如果是服务器则可以关闭,个人机则建议开启 关闭
hidd 蓝牙鼠标、键盘等蓝牙设备检测。必须启动 bluetooth 服务 关闭
hplip HP 打印机支持,如果没有 HP 打印机则关闭 关闭
httpd apache 服务的守护进程。如果需要启动 apache,就开启 开启
ip6tables IPv6 的防火墙。目前 IPv6 协议并没有使用,可以关闭 关闭
iptables 防火墙功能。Linux 中的防火墙是内核支持功能。这是服务器的主要防护手段,必须开启 开启
irda IrDA 提供红外线设备(笔记本电脑、PDA’s、手机、计算器等)间的通信支持。建议关闭 关闭
irqbalance 支持多核处理器,让 CPU 可以自动分配系统中断(IRQ),提高系统性能。目前服务器多是多核 CPU,请开启 开启
isdn 使用 ISDN 设备连接网络。目前主流的联网方式是光纤接入和 ADSL,ISDN 己经非常少见,请关闭 关闭
kudzu 该服务可以在开机时进行硬件检测,并会调用相关的设置软件。建议关闭,仅在需要时开启 关闭
lvm2-monitor 该服务可以让系统支持LVM逻辑卷组,如果分区采用的是LVM方式,那么应该开启。建议开启 开启
mcstrans SELinux 的支持服务。建议开启 开启
mdmonitor 该服务用来监测 Software RAID 或 LVM 的信息。不是必需服务,建议关闭 关闭
mdmpd 该服务用来监测 Multi-Path 设备。不是必需服务,建议关闭 关闭
messagebus 这是 Linux 的 IPC (Interprocess Communication,进程间通信)服务,用来在各个软件中交换信息。建议关闭 关闭
microcode _ctl Intel 系列的 CPU 可以通过这个服务支持额外的微指令集。建议关闭 关闭
mysqld MySQL 数据库服务器。如果需要就开启;否则关闭 开启
named DNS 服务的守护进程,用来进行域名解析。如果是 DNS 服务器则开启;否则关闭 关闭
netfs 该服务用于在系统启动时自动挂载网络中的共享文件空间,比如 NFS、Samba 等。 需要就开启,否则关闭 关闭
network 提供网络设罝功能。通过这个服务来管理网络,建议开启 开启
nfs NFS (Network File System) 服务,Linux 与 Linux 之间的文件共享服务。需要就开启,否则关闭 关闭
nfslock 在Linux中如果使用了NFS服务,那么,为了避免同一个文件被不同的用户同时编辑,所以有这个锁服务。
有NFS时开启,否则关闭 关闭
ntpd 该服务可以通过互联网自动更新系统时间.使系统时间永远准确。需要则开启,但不是必需服务 关闭
pcscd 智能卡检测服务,可以关闭 关闭
portmap 用在远程过程调用 (RPC) 的服务,如果没有任何 RPC 服务,则可以关闭。主要是 NFS 和 NIS 服务需要 关闭
psacct 该守护进程支持几个监控进程活动的工具 关闭
rdisc 客户端 ICMP 路由协议 关闭
readahead_early 在系统开启的时候,先将某些进程加载入内存整理,可以加快启动速度 关闭
readahead_later 同上 关闭
restorecond 用于给 SELinux 监测和重新加载正确的文件上下文。如果开启 SELinux,则需要开启 关闭
rpcgssd 与 NFS 有关的客户端功能。如果没有 NFS 就关闭 关闭
rpcidmapd 同上 关闭
rsync 远程数据备份守护进程 关闭
sendmail sendmail 邮件服务的守护进程。如果有邮件服务就开启;否则关闭 关闭
setroubleshoot 该服务用于将 SELinux 相关信息记录在日志 /var/log/messages 中。建议开启 开启
smartd 该服务用于自动检测硬盘状态。建议开启 开启
smb 网络服务 samba 的守护进程。可以让 Linux 和 Windows 之间共享数据。如果需要则开启 关闭
squid 代理服务的守护进程。如果需要则开启:否则关闭 关闭
sshd ssh 加密远程登录管理的服务。服务器的远程管理必须使用此服务,不要关闭 开启
syslog 日志的守护进程 开启
vsftpd vsftp 服务的守护进程。如果需要 FTP 服务则开启;否则关闭 关闭
xfs 这是 X Window 的字体守护进程,为图形界面提供字体服务。如果不启动图形界面,就不用开启 关闭
xinetd 超级守护进程。如果有依赖 xinetd 的服务,就必须开启 开启
ypbind 为 NIS (网络信息系统)客户机激活 ypbind 服务进程 关闭
yum-updatesd yum 的在线升级服务 关闭

服务名称 功能简介 建议
acpid 电源管理接口。如果是笔记本电脑用户,则建议开启,可以监听内核层的相关电源事件 开启
anacron 系统的定时任务程序。是 cron 的一个子系统,如果定时任务错过了执行时间,则可以通过 anacron 继续唤醒执行 关闭
alsasound alsa 声卡驱动。如果使用 alsa 声卡,则开启 关闭
apmd 电源管理模块。如果支持 acpid,就不需要 apmd,可以关闭 关闭
atd 指定系统在特定时间执行某个任务,只能执行一次。如果需要则开启,但我们一般使用 crond 来执行循环定时任务 关闭
auditd 审核子系统。如果开启了此服务,那么SELinux的审核信息会写入 /var/log/audit/ audit.log 文件;
如果不开启,那么审核信息会记录在syslog中 开启
autofs 让服务器可以自动挂载网络中其他服务器的共享数据,一般用来自动挂载 NFS 服务。如果没有 NFS 服务,则建议关闭 关闭
avahi-daemon avahi 是 zeroconf 协议的实现,它可以在没有 DNS 服务的局域网里发现基于 zeroconf 协议的设备和服务。
除非有兼容设备或使用 zeroconf 协议,否则关闭 关闭
bluetooth 蓝牙设备支持。一般不会在服务器上启用蓝牙设备,关闭它 关闭
capi 仅对使用 ISND 设备的用户有用 关闭
chargen-dgram 使用 UDP 协议的 chargen server。其主要提供类似远程打字的功能 关闭
chargen-stream 同上 关闭
cpuspeed 可以用来调整 CPU 的频率。当闲置时,可以自动降低 CPU 频率来节省电量 开启
crond 系统的定时任务,一般的 Linux 服务器都需要定时任务来协助系统维护。建议开启 开启
cvs 一个版本控制系统 关闭
daytime-dgram 使用 TCP 协议的 daytime 守护进程,该协议为客户机实现从远程服务器获取日期和时间的功能 关闭
daytime-slream 同上 关闭
dovecot 邮件服务中 POP3/IMAP 服务的守护进程,主要用来接收信件。如果启动了邮件服务则开启:否则关闭 关闭
echo-dgram 服务器回显客户服务的进程 关闭
echo-stream 同上 关闭
firstboot 系统安装完成后,有一个欢迎界面,需要对系统进行初始设定,这就是这个服务的作用。
既然不是第一次启动了,则建议关闭 关闭
gpm 在字符终端 (ttyl~tty6) 中可以使用鼠标复制和粘贴,这就是这个服务的功能 开启
haldaemon 检测和支持 USB 设备。如果是服务器则可以关闭,个人机则建议开启 关闭
hidd 蓝牙鼠标、键盘等蓝牙设备检测。必须启动 bluetooth 服务 关闭
hplip HP 打印机支持,如果没有 HP 打印机则关闭 关闭
httpd apache 服务的守护进程。如果需要启动 apache,就开启 开启
ip6tables IPv6 的防火墙。目前 IPv6 协议并没有使用,可以关闭 关闭
iptables 防火墙功能。Linux 中的防火墙是内核支持功能。这是服务器的主要防护手段,必须开启 开启
irda IrDA 提供红外线设备(笔记本电脑、PDA’s、手机、计算器等)间的通信支持。建议关闭 关闭
irqbalance 支持多核处理器,让 CPU 可以自动分配系统中断(IRQ),提高系统性能。目前服务器多是多核 CPU,请开启 开启
isdn 使用 ISDN 设备连接网络。目前主流的联网方式是光纤接入和 ADSL,ISDN 己经非常少见,请关闭 关闭
kudzu 该服务可以在开机时进行硬件检测,并会调用相关的设置软件。建议关闭,仅在需要时开启 关闭
lvm2-monitor 该服务可以让系统支持LVM逻辑卷组,如果分区采用的是LVM方式,那么应该开启。建议开启 开启
mcstrans SELinux 的支持服务。建议开启 开启
mdmonitor 该服务用来监测 Software RAID 或 LVM 的信息。不是必需服务,建议关闭 关闭
mdmpd 该服务用来监测 Multi-Path 设备。不是必需服务,建议关闭 关闭
messagebus 这是 Linux 的 IPC (Interprocess Communication,进程间通信)服务,用来在各个软件中交换信息。建议关闭 关闭
microcode _ctl Intel 系列的 CPU 可以通过这个服务支持额外的微指令集。建议关闭 关闭
mysqld MySQL 数据库服务器。如果需要就开启;否则关闭 开启
named DNS 服务的守护进程,用来进行域名解析。如果是 DNS 服务器则开启;否则关闭 关闭
netfs 该服务用于在系统启动时自动挂载网络中的共享文件空间,比如 NFS、Samba 等。 需要就开启,否则关闭 关闭
network 提供网络设罝功能。通过这个服务来管理网络,建议开启 开启
nfs NFS (Network File System) 服务,Linux 与 Linux 之间的文件共享服务。需要就开启,否则关闭 关闭
nfslock 在Linux中如果使用了NFS服务,那么,为了避免同一个文件被不同的用户同时编辑,所以有这个锁服务。
有NFS时开启,否则关闭 关闭
ntpd 该服务可以通过互联网自动更新系统时间.使系统时间永远准确。需要则开启,但不是必需服务 关闭
pcscd 智能卡检测服务,可以关闭 关闭
portmap 用在远程过程调用 (RPC) 的服务,如果没有任何 RPC 服务,则可以关闭。主要是 NFS 和 NIS 服务需要 关闭
psacct 该守护进程支持几个监控进程活动的工具 关闭
rdisc 客户端 ICMP 路由协议 关闭
readahead_early 在系统开启的时候,先将某些进程加载入内存整理,可以加快启动速度 关闭
readahead_later 同上 关闭
restorecond 用于给 SELinux 监测和重新加载正确的文件上下文。如果开启 SELinux,则需要开启 关闭
rpcgssd 与 NFS 有关的客户端功能。如果没有 NFS 就关闭 关闭
rpcidmapd 同上 关闭
rsync 远程数据备份守护进程 关闭
sendmail sendmail 邮件服务的守护进程。如果有邮件服务就开启;否则关闭 关闭
setroubleshoot 该服务用于将 SELinux 相关信息记录在日志 /var/log/messages 中。建议开启 开启
smartd 该服务用于自动检测硬盘状态。建议开启 开启
smb 网络服务 samba 的守护进程。可以让 Linux 和 Windows 之间共享数据。如果需要则开启 关闭
squid 代理服务的守护进程。如果需要则开启:否则关闭 关闭
sshd ssh 加密远程登录管理的服务。服务器的远程管理必须使用此服务,不要关闭 开启
syslog 日志的守护进程 开启
vsftpd vsftp 服务的守护进程。如果需要 FTP 服务则开启;否则关闭 关闭
xfs 这是 X Window 的字体守护进程,为图形界面提供字体服务。如果不启动图形界面,就不用开启 关闭
xinetd 超级守护进程。如果有依赖 xinetd 的服务,就必须开启 开启
ypbind 为 NIS (网络信息系统)客户机激活 ypbind 服务进程 关闭
yum-updatesd yum 的在线升级服务 关闭
VMware虚拟机用secureCRT连接慢
刚刚装完虚拟机,而且用NAT方式使虚拟机能够上网,但是很快发现ssh连接特别慢,以下是解决方法:
1、在ssh服务端上更改/etc/ssh/sshd_config
文件中的配置为如下内容:
UseDNS no

GSSAPl options

GSSAPIAuthentication no
2、执行letc/init.d/sshd restart重启sshd进程使上述配置生效,在连接一般就不慢了。

  • 17
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一加六

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值