SSH连接
ssh通过跳板机连接内网服务器,发现能ping通连接不上,检查了/etc /ssh/ssh_config配置文件,以及ssh服务状态,发现一切正常。
从远程服务器传输数据回来的时候提示No route to host
解决思路
ssh端口设置是否正确
网络是否可达
防火墙策略是否合理
/etc/sysconfig/iptables
防火墙策略执行顺序由上至下,依次匹配;在做防火墙配置时注意策略顺序。
虽然这个问题当时是使用iptables -F 解决的,但是在实际的应用中是不能这样做的,我们应该检查iptables的
规则后再作处理。
Iptables参考资料
Linux基础
grep
cat pass | grep "root" --color 过滤root相关的行
cat pass | grep "^root" --color 过滤以root开头的行
cat pass | grep "bash$" 过滤以bash结尾的行
cat pass | grep -n "^root" 查看以root开头的行行号
grep -n -A 2 "qiang" 1.txt #匹配1.txt文件中qiang字符串,并打印它的下2行
grep -n -B 2 "qiang" 1.txt #匹配1.txt文件中qiang字符串,并打印它的上2行
grep -n -C 2 "qiang" 1.txt #匹配1.txt文件中qiang字符串,并打印它的下上2行
grep -i 'this' lianxi_5 不区分大小写(-i)
grep -v 'This' lianxi_5 过滤除了This行,显示其余的行
grep -Ei "sync$|ftp" pass 过滤以sync$或ftp相关的行
grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行
grep Aug -R /var/log/* 在目录 '/var/log' 及随后的目录中搜索字符串"Aug"
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
. 代表任意单个字符 [a-z] [A-Z] [0-9]
* 表示所有
.* 代表所有的任意字符
文件和目录
cp 命令
用于复制文件,copy之意,它还可以把多个文件一次性地复制到一个目录下:
-a :将文件的特性一起复制
-p :连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份
-i :若目标文件已经存在时,在覆盖时会先询问操作的进行
-r :递归持续复制,用于目录的复制行为
-u :目标文件与源文件有差异时才会复制
mv命令
用于移动文件、目录或更名,move之意:
-f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件已经存在,就会询问是否覆盖
-u :若目标文件已经存在,且比目标文件新,才会更新
rm 命令
用于删除文件或目录,remove之意:
-f :就是force的意思,忽略不存在的文件,不会出现警告消息
-i :互动模式,在删除前会询问用户是否操作
-r :递归删除,最常用于目录删除,它是一个非常危险的参数
cat命令
用于查看文本文件的内容,后接要查看的文件名,通常可用管道与more和less一起使用:
cat file1 从第一个字节开始正向查看文件的内容
tac file1 从最后一行开始反向查看一个文件的内容
cat -n file1 标示文件的行数
more file1 查看一个长文件的内容
head -n 2 file1 查看一个文件的前两行
tail -n 2 file1 查看一个文件的最后两行
tail -n +1000 file1 从1000行开始显示,显示1000行以后的
cat filename | head -n 3000 | tail -n +1000 显示1000行到3000行
cat filename | tail -n +3000 | head -n 1000 从第3000行开始,显示1000(即显示3000~3999行)
find命令
find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录
find / -user user1 搜索属于用户 'user1' 的文件和目录
find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件
whereis halt 显示一个二进制文件、源码或man的位置
which halt 显示一个二进制文件或可执行文件的完整路径
删除大于50M的文件:
find /var/mail/ -size +50M -exec rm {} \;
文件的权限
使用 "+" 设置权限,使用 "-" 用于取消
chmod 命令
ls -lh 显示权限
chmod ugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r,4 )、写(w,2)和
执行(x,1)的权限
chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限
chown 命令
改变文件的所有者:
chown user1 file1 改变一个文件的所有人属性
chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性
chown user1:group1 file1 改变一个文件的所有人和群组属性
chgrp 命令
改变文件所属用户组:
chgrp group1 file1 改变文件的群组
文本处理
paste 命令
paste file1 file2 合并两个文件或两栏的内容
paste -d '+' file1 file2 合并两个文件或两栏的内容,中间用"+"区分
sort 命令
sort file1 file2 排序两个文件的内容
sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)
sort file1 file2 | uniq -u 删除交集,留下其他的行
sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)
comm 命令
comm -1 file1 file2 比较两个文件的内容只删除 'file1' 所包含的内容
comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容
comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分
打包和压缩文件
tar 命令
对文件进行打包,默认情况并不会压缩,如果指定了相应的参数,它还会调用相应的压缩程序(如gzip和bzip等)
进行压缩和解压:
-c :新建打包文件
-t :查看打包文件的内容含有哪些文件名
-x :解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中
-j :通过bzip2的支持进行压缩/解压缩
-z :通过gzip的支持进行压缩/解压缩
-v :在压缩/解压缩过程中,将正在处理的文件名显示出来
-f filename :filename为要处理的文件
-C dir :指定压缩/解压缩的目录dir
压缩:tar -jcv -f filename.tar.bz2 要被处理的文件或目录名称
查询:tar -jtv -f filename.tar.bz2
解压:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
bunzip2 file1.bz2 解压一个叫做 'file1.bz2'的文件
bzip2 file1 压缩一个叫做 'file1' 的文件
gunzip file1.gz 解压一个叫做 'file1.gz'的文件
gzip file1 压缩一个叫做 'file1'的文件
gzip -9 file1 最大程度压缩
rar a file1.rar test_file 创建一个叫做 'file1.rar' 的包
rar a file1.rar file1 file2 dir1 同时压缩 'file1', 'file2' 以及目录 'dir1'
rar x file1.rar 解压rar包
zip file1.zip file1 创建一个zip格式的压缩包
unzip file1.zip 解压一个zip格式压缩包
zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包
系统和关机 (系统的关机、重启以及登出 )
shutdown -h now 关闭系统(1)
init 0 关闭系统(2)
telinit 0 关闭系统(3)
shutdown -h hours:minutes & 按预定时间关闭系统
shutdown -c 取消按预定时间关闭系统
shutdown -r now 重启(1)
reboot 重启(2)
logout 注销
time 测算一个命令(即程序)的执行时间
进程相关的命令
jps命令
显示当前系统的java进程情况,及其id号:
jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,
简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。
ps命令
用于将某个时间点的进程运行情况选取下来并输出,process之意:
-A :所有的进程均显示出来
-a :不与terminal有关的所有进程
-u :有效用户的相关进程
-x :一般与a参数一起使用,可列出较完整的信息
-l :较长,较详细地将PID的信息列出
ps aux # 查看系统所有的进程数据
ps ax # 查看不与terminal有关的所有进程
ps -lA # 查看系统所有的进程数据
ps axjf # 查看连同一部分进程树状态
kill命令
用于向某个工作(%jobnumber)或者是某个PID(数字)传送一个信号,它通常与ps和jobs命令一起使用:
killall命令
(向一个命令启动的进程发送一个信号)
top命令
是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
如何杀死进程:
图形化界面的方式
kill -9 pid (-9表示强制关闭)
killall -9 程序的名字
pkill 程序的名字
查看进程端口号:
netstat -tunlp|grep 端口号
nslookup命令详解
nslookup命令用于查询DNS的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题。
nslookup的用法相对来说还是蛮简单的,主要是下面的几个用法。
1 直接查询
例如:查询一个域名的A记录。
nslookup domain [dns-server]
如果没指定dns-server,用系统默认的dns服务器。下面是一个例子:
[root@localhost ~]# nslookup baidu.com
Server: 10.30.7.177
Address: 10.30.7.177#53
Non-authoritative answer:
Name: baidu.com 非权威
Address: 123.125.114.144
Name: baidu.com
Address: 111.13.101.208
Name: baidu.com
Address: 180.149.132.47
Name: baidu.com
Address: 220.181.57.217
[root@ceshi ~]# nslookup www.baidu.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 14.215.177.38
Name: www.a.shifen.com
Address: 14.215.177.39
[root@hicom ~]# ping 14.215.177.38
PING 14.215.177.38 (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38: icmp_seq=1 ttl=55 time=6.35 ms
64 bytes from 14.215.177.38: icmp_seq=2 ttl=55 time=6.48 ms
14.215.177.38/14.215.177.39
地理地址:中国 广东 佛山 南海
运营商:中国电信
39.156.69.79
地理地址:中国 北京
运营商:其他
220.181.38.148
地理地址:中国 北京 海淀
运营商:中国电信
2 查询其他记录
直接查询返回的是A记录,我们可以指定参数,查询其他记录,比如AAAA、MX等。
nslookup -qt=type domain [dns-server]
其中,type可以是以下这些类型:
A 地址记录
AAAA 地址记录
AFSDB Andrew文件系统数据库服务器记录
ATMA ATM地址记录
CNAME 别名记录
HINFO 硬件配置记录,包括CPU、操作系统信息
ISDN 域名对应的ISDN号码
MB 存放指定邮箱的服务器
MG 邮件组记录
MINFO 邮件组和邮箱的信息记录
MR 改名的邮箱记录
MX 邮件服务器记录
NS 名字服务器记录
PTR 反向记录
RP 负责人记录
RT 路由穿透记录
SRV TCP服务器信息记录
TXT 域名对应的文本信息
X25 域名对应的X.25地址记录
例如:
[root@localhost ~]# nslookup -qt=mx baidu.com 8.8.8.8
*** Invalid option: qt=mx
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: baidu.com
Address: 111.13.101.208
Name: baidu.com
Address: 123.125.114.144
Name: baidu.com
Address: 180.149.132.47
Name: baidu.com
Address: 220.181.57.217
[root@ceshi ~]# nslookup -qt=MX baidu.com
*** Invalid option: qt=MX
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: baidu.com
Address: 220.181.38.148
Name: baidu.com
Address: 39.156.69.79
3 查询更具体的信息
查询语法:
nslookup –d [其他参数] domain [dns-server]
只要在查询的时候,加上-d参数,即可查询域名的缓存。
域名相关知识:
动态域名服务DDNS(Dynamic Domain Name Server)是动态域名服务的缩写,DDNS是将用户的动态IP地址映射到
一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给
位于服务商主机上的服务器程序,服务项目器程序负责提供DNS服务并实现动态域名解析。
什么是A记录:A (Address) 记录,是用来指定主机名(或域名)对应的IP地址记录。
用户可以将该域名下的网站服
务器指向到自己的web server上。
什么是mx记录:MX(Mail Exchanger)记录,是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件
时根据收信人的地址后缀来定位邮件服务器。例如,当Internet上的某用户要发一封信给user@mydomain.com 时,
该用户的邮件系统通过DNS查找mydomain.com这个域名的MX记录,如果MX记录存在,用户计算机就将邮件发送到MX
记录所指定的邮件服务器上。
什么是ns记录:NS(Name Server)记录,是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。
检查MX记录是否存在的方法:进行DNS查询的一个非常有用的工具是nslookup,可以使用它来查询DNS中的各种数据。
可以在Windows的命令行下直接运行nslookup进入一个交互模式,在这里能查询各种类型的DNS数据。DNS的名字
解析数据可以有各种不同的类型,有设置这个zone的参数的SOA类型数据,有设置名字对应的IP地址的A类型数据,
有设置邮件交换的MX类型数据。这些不同类型的数据均可以通过nslookup的交互模式来查询,在查询过程中可以使
用set type命令设置相应的查询类型。如:
C:\>nslookup
Default Server: [202.106.184.166]
Address: 202.106.184.166
> set type=mx
> sina.com.cn
Default Server: [202.106.184.166]
Address: 202.106.184.166
Non-authoritative answer:
sina.com.cn MX preference = 10, mail exchanger = sinamx.sina.com.cn
sina.com.cn nameserver = ns1.sina.com.cn
sina.com.cn nameserver = ns3.sina.com.cn
sinamx.sina.com.cn internet address = 202.106.187.179
sinamx.sina.com.cn internet address = 202.106.182.230
ns1.sina.com.cn internet address = 202.106.184.166
ns3.sina.com.cn internet address = 202.108.44.55
如果所要查的某域名的MX记录不存在,则出现与以下类似的提示:
C:\>nslookup
> set type=mx
> amafdsfxit.com.cn
Default Server: [202.106.184.166]
Address: 202.106.184.166
*** 202.106.184.166 can't find amaxit.com.cn: Non-existent domain
`端口映射:把外网的某个TCP或者UDP端口映射到内网某台电脑的某个TCP或者UDP端口,主要用来发布内网服务器。
若外网接入是固定IP地址,可以直接映射外网IP到内网服务器某个端口。如外网接如是固定IP地址219.133.133.
133我们想让外面访问219.133.133.133的TCP9000端口映射到内网的192.168.0.210的TCP80端口,把192.168.0.
210的网站对外发布。
rsync从远端拉取
rsync -avzg -e 'ssh -p 2010' /var/mail/ceshi.com root@192.168.177.110/var/mail
rsync -avzg -e "ssh -p2010" root@192.168.1.140:/root/ce ./
数据库
创建数据库
create database school;
create schema sch;
show charset;
show collation;
CREATE DATABASE test CHARSET utf8;
create database xyz charset utf8mb4 collate utf8mb4_bin;
DELETE FROM stu
truncate table stu;
区别:
delete: DML操作, 是逻辑性质删除,逐行进行删除,速度慢.
truncate: DDL操作,对与表段中的数据页进行清空,速度快.
show databases; #查看所有数据库
show tables; #查看当前库的所有表
SHOW TABLES FROM #查看某个指定库下的表
show create database world #查看建库语句
show create table world.city #查看建表语句
show grants for root@'localhost' #查看用户的权限信息
show charset; #查看字符集
show collation #查看校对规则
show processlist; #查看数据库连接情况
show index from #表的索引情况
show status #数据库状态查看
SHOW STATUS LIKE '%lock%'; #模糊查询数据库某些状态
SHOW VARIABLES #查看所有配置信息
SHOW variables LIKE '%lock%'; #查看部分配置信息
show engines #查看支持的所有的存储引擎
show engine innodb status\G #查看InnoDB引擎相关的状态信息
show binary logs #列举所有的二进制日志
show master status #查看数据库的日志位置信息
show binlog evnets in #查看二进制日志事件
show slave status \G #查看从库状态
SHOW RELAYLOG EVENTS #查看从库relaylog事件信息
desc (show colums from city) #查看表的列定义信息
select id,date from maillog order by id desc limit 5;
+---------+---------------------+
| id | date |
+---------+---------------------+
| 1111620 | 2021-08-05 15:13:30 |
| 1111619 | 2021-08-05 15:13:30 |
| 1111618 | 2021-08-05 14:50:41 |
| 1111617 | 2021-08-05 14:52:10 |
| 1111616 | 2021-08-05 14:47:40 |
+---------+---------------------+
5 rows in set (0.012 sec)
select <字段1, 字段2, ...> from < 表名 > where < 表达式 >;
select id from content_filter where id<5;
+----+
| id |
+----+
| 3 |
| 4 |
+----+
1. LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是
一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的
最大数目。初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法:
LIMIT # OFFSET #。
2.则为从第5条后面的记录开始展示,10是偏移量。也就是说从第5条开始,取10条记录。(即截取数据库中的第5条
之后的10条记录)
mysql> SELECT * FROM table LIMIT 5,10; //检索记录行6-15
3.为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.
4.如果只给定一个参数,它表示返回最大的记录行数目:
mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行
//换句话说,LIMIT n 等价于 LIMIT 0,n。
update 更新 (https://www.w3school.com.cn/sql/sql_update.asp)
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
MariaDB [表]> SELECT * FROM `admin` ORDER BY `password` DESC LIMIT 0, 1000;
update admin set password='2' where password ='1'
update admin set password='2' where username='admin'
1、delete 语句用于删除表中的行。delete语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操
作作为事务记录在日志中保存
语法:delete from 表名称 where 列名称 = 值,
如:删除student表中姓名为张三丰的学生信息-delete from studentwhere name=‘张三丰’;
2、drop (删除表):删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,
除非新增一个表。
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger)索引(index);依赖于该表的
存储过程/函数将被保留,但其状态会变为:invalid。
3、truncate (清空表中的数据):删除内容、释放空间但不删除定义(保留表的数据结构)。与drop不同的是,
只是清空表数据而已。
注意:truncate 不能删除行数据,要删就要把表清空。
检查表是否损坏
mysqlcheck -uroot -p -c --databases 表名称
数据导出
mysqldump -u root -p 表名称 > /var/表名称.sql
数据导入
mysql -u root -p 表名称 < 表名称.sql
修复表(具体的某个表)
repair table 表名称;
使用双网卡,同时使用2个网关的时候就需要加一条静态路由了。当然还有很多时候会需要加路由。
一:使用 route 命令添加
使用route 命令添加的路由,机器重启或者网卡重启后路由就失效了,方法:
//添加到主机的路由
route add –host 192.168.1.11 dev eth0
# route add –host 192.168.1.12 gw 192.168.1.1
//添加到网络的路由
route add –net 192.168.1.11 netmask 255.255.255.0 eth0
route add –net 192.168.1.11 netmask 255.255.255.0 gw 192.168.1.1
route add –net 192.168.1.0/24 eth1
//添加默认网关
route add default gw 192.168.2.1
//删除路由
route del –host 192.168.1.11 dev eth0
二:在linux下设置永久路由的方法:
./etc/sysconfig/static-routes :
any net 192.168.3.0/24 gw 192.168.3.254
any net 10.250.228.128 netmask 255.255.255.192 gw 10.250.228.129
使用static-routes的方法是最好的。无论重启系统和service network restart 都会生效
static-routes文件又是什么呢,这个是network脚本执行时调用的一个文件,这个文件的放置在/etc/sysconfig
目录下,在network脚本中的位置是:
# Add non interface-specific static-routes.
if [ -f /etc/sysconfig/static-routes ]; then
grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
/sbin/route add -$args
done
fi
从这段脚本可以看到,这个就是添加静态路由的方法,static-routes的写法是
any net 192.168.0.0/16 gw 网关ip
Time to live exceeded,什么原因?
Linux下使用ping命令ping另一台主机,返回
From 192.168.2.1 icmp_seq=0 Time to live exceeded
使用telnet命令,返回 telnet: Unable to connect to remote host: No route to host
超时,到远程主机没路由,看下你两个机子是不是在同一网段。
TTL即生存时间(time-to-live),指定数据包被路由器丢弃之前允许通过的网段数量。
它是IP(中文全称:网络协议)协议包中的一个值,它告诉网络,数据包在网络中的时间是否太长而应被丢弃。在使用ping命令ping某个ip地址时,会显一个TTL值,TTL是生存时间的意思,就是说这个ping的数据包能在网络上存在多少时间。一般Linux系统的TTL值为64或255,Windows NT/2000/XP系统的默认TTL值为128,Win7系统的TTL值是64,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。
当我们对网络上的主机进行ping操作的时候,我们本地机器会发出一个数据包,数据包经过一定数量的路由器传送到目的主机,但是由于很多的原因,一些数据包不能正常传送到目的主机,那如果不给这些数据包一个生存时间的话,这些数据包会一直在网络上传送,导致网络开销的增大。当数据包传送到一个路由器之后,TTL就自动减1,如果减到0了还是没有传送到目的主机,那么就自动丢失。
当TTL被扣到0时,最后一个经手的路由器就会给源主机发来一个Time to live exceeded的ICMP信息。
建议用traceroute命令试一下,如果是跑动态路由的话应该不会有这种问题,很可能是静态路由配置错误
网友评论