-----vim技巧-----
grep -v "^$"" #过滤空白符
grep -v "^#" #不显示以#号开头的行
#在全部内容的行首添加 # 号注释
:% s/^/#/g
#在1~10 行首添加 # 号注释
:1,10 s/^/#/g
#删除所有内容
:.,$d
x 删除后面的字符
X 删除前一个字符
3x 删除3个字符
dd 就是删除一行
D 删除到行尾
echo -n 不换行输出
echo -e 处理特殊字符
若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
例:
#echo -e "a\bdddd"
dddd
$echo -e "a\ndddd" //自动换行
a
dddd
#arping 192.168.1.1 //测试IP是否有冲突
-----find实用命令-----
#删除一个月之前的所有文件
# find . -mtime +29 -exec rm -rf {} \;
#统计排序大小一周之前大于100M的文件
# find . -size +100M -a -mtime 7 -exec ls -lhS {} \;
#查询当前目录下前一天所有文件总大小:
# find . -mtime -1 -type f -ls |awk '{sum+=$1}END{print sum}'
1457223926
#目录下30分钟内的文件,并逐行为这个文件添加行头 1234
# find . -type f -amin -30 -exec sed -i 's/^/1234/' {} \;
查看当前TCP连接的状态和对应的连接数量,一般只关心TIME_WAIT的个数。端口的数量只有65535个,占用一个少一个,会严重的影响到后继的新连接。这种情况下,我们就有必要调整下Linux的TCP内核参数,让系统更快的释放TIME_WAIT连接。
[root@system1 ~]# sysctl -p
[root@system1 ~]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
ESTABLISHED 43
#vim /etc/sysctl.conf
net.ipv4.tcp_tw_reuse = 1
#表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1
#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭;
net.ipv4.tcp_fin_timeout
#修改系統默认的 TIMEOUT 时间。
lsof -a -u root -d txt #查看所属root用户进程所打开的文件类型为txt的文件
# lsof |grep /var/log/messages
syslogd 1283 root 2w REG 3,3 5381017 1773647 /var/log/messages (deleted)
如果可以通过文件描述符查看相应的数据,那么就可以使用 I/O 重定向将其复制到文件中,如:
cat /proc/1283/fd/2 > /var/log/messages
对于许多应用程序,尤其是日志文件和数据库,这种恢复删除文件的方法非常有用
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
#----lscpu命令,查看的是cpu的统计信息----
# lscpu
Architecture: i686 #cpu架构
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian #小尾序
CPU(s): 4 #总共有4核
On-line CPU(s) list: 0-3
Thread(s) per core: 1 #每个cpu核,只能支持一个线程,即不支持超线程
Core(s) per socket: 4 #每个cpu,有4个核
Socket(s): 1 #总共有1一个cpu
Vendor ID: GenuineIntel #cpu产商 intel
CPU family: 6
Model: 42
Stepping: 7
CPU MHz: 1600.000
BogoMIPS: 5986.12
Virtualization: VT-x #支持cpu虚拟化技术
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 6144K
#查看/proc/cpuinfo,可以知道每个cpu信息,如每个CPU的型号,主频等。
#cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 42
model name : Intel(R) Core(TM) i5-2320 CPU @ 3.00GHz
#修改hostname有几种方式?
1: hostname DB-Server --运行后立即生效(新会话生效),但是在系统重启后会丢失所做的修改
2: echo DB-Server > /proc/sys/kernel/hostname --运行后立即生效(新会话生效),但是在系统重启后会丢失所做的修改
3: sysctl kernel.hostname=DB-Server --运行后立即生效(新会话生效),但是在系统重启后会丢失所做的修改
4: 修改/etc/sysconfig/network下的HOSTNAME变量 --需要重启生效,永久性修改。
-----selinux常用查看命令-----
#semanage login -l //查看当前SELinux用户的状态
#semanage login -a -s unconfined_u username //限制了添加-a普通用户userame,并为这种约束定义-s user_u上下文
id -Z //unconfined 不受任何selinux设置限制
#vim /sys/fs/selinux/booleans/selinuxuser_ping //里面的参数通常是1,它允许用户执行ping和traceroute
#getsebool user_exec_content //on它说明允许用户执行自己主目录中或/tmp目录中的脚本
#setsebool user_exec_content off
#getsebool -a //显示全部可用的布尔型参数列表
#semanage boolean -l //显示每个布尔型参数的更多信息,配合grep使用
#vim /etc/selinux/targeted/comtexts/files/file_contexts //配置默认的上下文
#ps -eZ //列出每个-e进程的selinux上下文
#ausearch -m avc -c sudo //审计搜索命令,过滤某些特定类型的问题 访问向量缓存(access vecrot cache)消息,-c允许我们定义通常在日志中使用的名字,如httpd,su
#sealert -a /var/log/audit/audit.log //提供列表分析
selinux上下文定义了使用正则表达式 (/.*)? 这个正则被广泛用于匹配一个目录及其包含的所有文件 例: /var/ftp(/.*)?