完成基础知识后,多搜索网络综合文档,整理为我所用html
/sed /模式空间 /awk seq split Network iptables selinux watch crontab eval expr FTP SSH /LVM /Heartbeat /Keepalived /linux服务器优化 /负载均衡 /经常使用脚本、命令
以指定增量打印数字序列。linux
基本用法shell
seq [选项]... 尾数 seq [选项]... 首数 尾数 seq [选项]... 首数 增量 尾数
选项:安全
-f, --format=格式 使用printf 样式的浮点格式 -s, --separator=字符串 使用指定字符串分隔数字(默认使用:\n) -w, --equal-width 在列前添加0 使得宽度相同
例:bash
seq --format=%1.f 1000000 1000001
服务器
显示
1000000
1000001网络
对比,不使用--format的状况,默认使用%g显示负载均衡
[plain] $ seq 1000000 1000001
显示
1e+06
1e+06ssh
seq -w -s ' ' 0 10
优化
显示
00 01 02 03 04 05 06 07 08 09 10
注:-s用于改变字数间的分隔符,-w用以保证等宽显示。
切割文件
split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]
参数:
-<行数>或-l<行数> 指定每多少行就要切成一个小文件。
-b <字节> 指定每多少字就要切成一个小文件。支持单位:m,k
-C <字节> 与-b参数相似,但切割时尽可能维持每行的完整性。
--help 显示帮助。
--version 显示版本信息。
[输出文件名] 设置切割后文件的前置文件名,split会自动在前置文件名后再加上编号。
说明:
split可将文件切成较小的文件,预设每1000行会切成一个小文件。
使用例子:
split -b 100m 1111.log (按照字节分隔) split -l 1000000 1111.log(按照行数分隔)
eval cmd
eval对cmd两遍扫描,如第一遍扫描后,cmdLine是普通命令,则执行;如cmdLine含变量间接引用,则保证间接引用语义。
举例以下:
set 11 22 33 44
如要输出最近一参数,即44,使用:
echo $4
但如咱们不知道几个参数,要输出最后一个,使用$#来输出最后一个参数:
echo "\$$#"
结果$4,
非44。
使用eval:
eval echo "\$$#"
结果为44
求表达式变量的值,通常用于整数值,也可用于字符串。
字串长度
# expr length "this is a test" 14
数字求商数
# expr 14 % 9 5
从位置处抓取字串
# expr substr "this is a test" 3 5 is is
数字串only the first character
# expr index "testforthegame" e 2
字串真实重现
# expr quote thisisatestformela thisisatestformela
查看SELinux状态:
一、sestatus -v #若是SELinux status参数为enabled即为开启状态 二、getenforce ##也能够用这个命令检查
关闭SELinux:
一、临时关闭(不用重启机器): setenforce 0 ##设置SELinux 成为permissive模式 ##setenforce 1 设置SELinux 成为enforcing模式 二、修改配置文件须要重启机器: 修改/etc/selinux/config,将SELINUX=enforcing改成SELINUX=disabled 重启
watch[参数][命令]
将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令
-n或--interval 缺省每2秒运行一下程序,可用-n或-interval来指定间隔的时间 -d或--differences 高亮显示变化的区域 -d=cumulative 把变更过的地方(无论最近的那次有没有变更)都高亮显示出来 -t 或-no-title 会关闭watch命令在顶部的时间间隔,命令,当前时间的输出 -h, --help 查看帮助文档
实例1:每隔一秒高亮显示网络连接数的变化状况
watch -n 1 -d netstat -ant 其它操做: 切换终端: Ctrl+x 退出watch:Ctrl+g
实例2:每隔一秒高亮显示http连接数的变化状况
watch -n 1 -d 'pstree|grep http' 每隔一秒高亮显示http连接数的变化状况。 后面接的命令若带有管道符,须要加''将命令区域归整。
实例3:实时查看模拟攻击客户机创建起来的链接数
watch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'
实例4:监测当前目录中 scf' 的文件的变化
watch -d 'ls -l|grep scf'
实例5:10秒一次输出系统的平均负载
watch -n 10 'cat /proc/loadavg'
crontab [-u username] [-l|-e|-r]
选项:
-u :只有 root 才能进行这个任务,亦即帮其余使用者建立/移除 crontab 工做排程; -e :编辑 crontab 的工做内容 -l :查阅 crontab 的工做内容 -r :移除全部的 crontab 的工做内容,若仅要移除一项,请用 -e 去编辑
crontab -e命令编辑/var/spool/cron对应用户cron文件,也可修改/etc/crontab文件。
Minute Hour Day Month Week command 分钟 小时 天 月 星期 命令 0-59 0-23 1-31 1-12 0-6 command
Minute 每一个小时的第几分钟执行该任务 Hour 天天的第几个小时执行该任务 Day 每个月的第几天执行该任务 Month 每一年的第几个月执行该任务 DayOfWeek 每周的第几天执行该任务,0表示周日 Command 指定要执行的程序 、脚本或命令
Command必须,其它可选。不指定字段,用*填补。
*表明取值范围内的数字, /表明”每”, -表明从某个数字到某个数字, ,分开几个离散的数字
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
前四行配置 cron 任务运行环境变量:
SHELL--指定shell 环境(默认bash shell) PATH --执行命令的程序路径 MAILTO--cron任务的输出邮件给变量定义的用户名,空串(MAILTO="")不寄; HOME --执行命令或脚本的主目录
若cron 任务须要根据调度来执行,而不是每小时、每日、每周、或每个月地执行,它可被添加到/etc/cron.d目录。
该目录中的全部文件使用和 /etc/crontab 中同样的语法。
编辑完cron设置,在/var/spool/cron生成一与用户同名文件,不可直接编辑,只可用crontab -e 编辑。
cron启动后每一分钟读该文件,检查是否要执行里面的命令。
5 * * * * ls 指定每小时的第5分钟执行一次ls命令 30 5 * * * ls 指定天天的 5:30 执行ls命令 30 7 8 * * ls 指定每个月8号的7:30分执行ls命令 30 5 8 6 * ls 指定每一年的6月8日5:30执行ls命令 30 6 * * 0 ls 指定每星期日6:30执行ls命令 [注:0表示星期天,1表示星期1,以此类推,也能够用英文来表示,sun表示星期天,mon表示星期一等。] 30 3 10,20 * * ls 每个月10号及20号的3:30执行ls命令[注:“,”用来链接多个不连续的时段] 25 8-11 * * * ls 天天8-11点的第25分钟执行ls命令[注:“-”用来链接连续的时段] */15 * * * * ls 每15分钟执行一次ls命令 [即每一个小时的第0 15 30 45 60分钟执行ls命令 ] 30 6 */10 * * ls 每月中,每隔10天6:30执行一次ls命令[即每个月一、十一、2一、31日是的6:30执行一次ls命令 ]
天天7:50以root 身份执行/etc/cron.daily目录中的全部可执行文件
50 7 * * * root run-parts /etc/cron.daily [ 注:run-parts参数表示,执行后面目录中的全部可执行文件
第十、20、30分钟输出到/tmp/cron1.txt:
10,20,30 * * * * echo "第十、20、30分钟输出一次" >> /tmp/cron1.txt
以用户lzw.me的身份每两小时就运行某个程序:
0 */2 * * * lzw.me /usr/bin/somecommand >> /dev/null 2>&1
A、cron配置文件路径 #vi /etc/crontab B、重启cron的方法 #/etc/rc.d/init.d/crond restart Usage: /etc/rc.d/init.d/crond {start|stop|status|reload|restart|condrestart} C、将脚本改为可执行 chmod +x filename
SSH为Secure Shell的缩写,为建立在应用层和传输层基础上的安全协议。
基本功能:
ssh name@remoteserver 或 ssh remoteserver -l name
说明:server表明远程主机,name为登陆远程主机用户名。
ssh name@remoteserver -p 2222 或 ssh remoteserver -l name –p 2222
说明:
p 参数指定端口号
一般在路由里作端口映射时,咱们不会把22端口直接映射出去,而是转换成其余端口号,这时就须要使用-p 端口号命令格式。
ssh -t remoteserver1 ssh remoteserver2
说明:
当remoteserver2没法直达,可以使用-t参数,而后由remoteserver1跳转到remoteserver2。
ssh -l name remoteserver ‘command’
说明:
链接到远程主机,并执行远程主机的command命令。
例如:查看远程主机的内存使用状况。
默认SSH监听端口22,攻击者使用端口扫描软件就能够看到主机是否运行有SSH服务.
将SSH端口修改成大于1024的端口是一个明智的选择.
因大多数端口扫描软件(包括nmap)默认状况都不扫描高位端口。打开/etc/ssh/sshd_config文件并查找下面这样的行:
Port 22
去掉该行前面的# 号,而后修改端口号并从新启动SSH服务:
$ /etc/init.d/ssh restart
两个SSH协议版本,仅使用SSH协议版本2会更安全,SSH协议版本1有安全问题,包括中间人攻击(man-in-the-middle)和注入(insertion)攻击。
编辑/etc/ssh/sshd_config文件并查找下面这样的行:
# Protocol 2,1
修改成:
Protocol 2
一般状况下,不采用直接用root用户登陆到远程主机,因为root用户拥有超级权限,这样会带来安全隐患,因此,通常咱们用普通用户登陆,当须要管理远程主机时,再切换到root用户下。
打开/etc/ssh/sshd_config文件并查找下面这样的行:
#PermitRootLogin yes
将#号去掉,而后将yes修改为no,重启ssh服务,这样就能够禁止root用户登陆。
首先编辑一个文件,如bannertest.txt,文件内容自行定义。而后打开/etc/ssh/sshd_config文件并查找下面这样的行:
#Banner /some/path
将#号去掉,而后将bannertest.txt文件的全路径替换/some/path,而后保存,重启ssh服务。当客户端登陆时,就会看到bannertest.txt文件中的提示信息。
在两台服务器之间传送文件。传输过程当中仍使用ssh加密。
将远程主机的/tmp/test 文件复制到本地的/bak文件夹下
scp -p root@192.168.1.120:/tmp/test /bak
将本地/bak/1234 文件复制到远程主机的/tmp路径下
scp -p /bak/1234 root@192.168.1.120:/tmp
ftp [hostname| ip-address]
a)在Linux命令行下输入:
ftp 192.168.1.1b)服务器询问你用户名和密码,分别输入用户名和相应密码,待认证经过便可。
get和mget。
将文件从远端主机中传送至本地主机中:
get [remote-file] [local-file]
如要获取远程服务器上/usr/your/1.htm,则
ftp> get /usr/your/1.htm 1.htm (回车)
远端主机接收一批文件至本地主机:
mget [remote-files]
如要获取服务器上/usr/your/下的全部文件,则
ftp> cd /usr/your/ ftp> mget *.* (回车)
此时每下载一个文件,都会有提示。若是要除掉提示,则在mget . 命令前先执行:prompt off
注意:文件都下载到了linux主机的当前目录下。好比,在 /usr/my下运行的ftp命令,则文件都下载到了/usr/my下。
将本地一个文件传送至远端主机中
put local-file [remote-file]
如要把本地的1.htm传送到远端主机/usr/your,并更名为2.htm
ftp> put 1.htm /usr/your/2.htm (回车)
将本地主机中一批文件传送至远端主机。
mput local-files
如要把本地当前目录下全部html文件上传到服务器/usr/your/ 下
ftp> cd /usr/your (回车) ftp> mput *.htm (回车)
注意:上传文件都来自于主机的当前目录下。好比,在 /usr/my下运行的ftp命令,则只有在/usr/my下的文件linux才会上传到服务器/usr/your 下。
bye:中断与服务器的链接。
ftp> bye (回车)
sed之因此能以行为单位的编辑或修改,缘由在于它使用了两个空间:
活动的“模式空间(pattern space)” 起辅助做用的“暂存缓冲区(holdingspace)