nc
nc扫描服务器端口
# nc -z localhost 1-10000 //扫描本机1到10000端口,获取打开的端口
Connection to localhost 22 port [tcp/ssh] succeeded!
Connection to localhost 80 port [tcp/http] succeeded!
Connection to localhost 111 port [tcp/sunrpc] succeeded!
Connection to localhost 199 port [tcp/smux] succeeded!
Connection to localhost 3306 port [tcp/mysql] succeeded!
Connection to localhost 6010 port [tcp/x11-ssh-offset] succeeded!
Connection to localhost 6011 port [tcp/*] succeeded!
#
nc检测ip和端口
nc -w2 -z -t $ip $port //根据返回值,可以判断是否succeed之类的!
-z Specifies that nc should just scan for listening daemons, without sending any data to them. It is an error to use this option in conjunction with the -l option.
mysql from unixtime
mysql> select from_unixtime(1631111148);
route添加删除
方法1、
####################router####################
# route del -net 192.168.0.0 netmask 255.255.255.0 dev eth1
# route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1
# route add default gw 192.168.0.1 //增加默认路由
# route del default //删除默认路由
# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.1
# route del -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.1
方法2、
####################ip router####################
# ip route | column -t
192.168.0.0/24 dev eth1 scope link
10.2.0.0/16 dev eth2 proto kernel scope link src 10.2.0.111
default via 10.2.255.254 dev eth2
# ip route del 192.168.0.0/24 dev eth1
# ip route add 192.168.0.0/24 dev eth1
# ip route del via 10.2.255.254 //删除默认路由
# ip route add via 10.2.255.254 //增加默认路由
# ip route add 192.168.1.0/24 via 192.168.0.1 //增加静态路由,192.168.0.1为下一跳地址
# ip route del 192.168.1.0/24 via 192.168.0.1 //删除静态路由
shell下的重定向
0--标准输入
1--标准输出
2--错误输出
vim
vim-删除换行符,即使两行连接为一行
在命令状态下,在某一行上按"J"键将Join下一行。
vim末行模式小技巧
:r !ifconfig eth0
.vimrc
set nu
set smarttab
set tabstop=4
set expandtab
set shiftwidth=4
set smartindent
set encoding=utf-8
vim"猪头"快捷键
usleep
sleep some number of microseconds
Nice[root@taolr:~]# time `usleep 1000000;echo nice`
0
real 0m1.033s
user 0m0.001s
sys 0m0.009s
Nice[root@taolr:~]# time `sleep 1;echo nice`
0
real 0m1.025s
user 0m0.001s
sys 0m0.022s
。。。
rpmforge
分享一个第三方的yum源
### Name: RPMforge RPM Repository for RHEL 6 - dag
### URL: http://rpmforge.net/
[rpmforge]
name = RHEL $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/rpmforge
mirrorlist = http://apt.sw.be/redhat/el6/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1
[rpmforge-extras]
name = RHEL $releasever - RPMforge.net - extras
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/extras
mirrorlist = http://apt.sw.be/redhat/el6/en/mirrors-rpmforge-extras
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge-extras
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1
[rpmforge-testing]
name = RHEL $releasever - RPMforge.net - testing
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/testing
mirrorlist = http://apt.sw.be/redhat/el6/en/mirrors-rpmforge-testing
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge-testing
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1
RPM-GPG-KEY
/etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
The following public key can be used to verify RPM packages
downloaded from http://dag.wieers.com/apt/ using 'rpm -K'
if you have the GNU GPG package.
Questions about this key should be sent to:
Dag Wieers <dag@wieers.com>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.1 (GNU/Linux)
mQGiBD9JMT0RBAC9Q2B0AloUMTxaK73sD0cOu1MMdD8yuDagbMlDtUYA1aGeJVO6
TV02JLGr67OBY+UkYuC1c3PUwmb3+jakZd5bW1L8E2L705wS0129xQOZPz6J+alF
5rTzVkiefg8ch1yEcMayK20NdyOmhDGXQXNQS8OJFLTIC6bJs+7MZL83/wCg3cG3
3q7MWHm3IpJb+6QKpB9YH58D/2WjPDK+7YIky/JbFBT4JPgTSBy611+bLqHA6PXq
39tzY6un8KDznAMNtm+NAsr6FEG8PHe406+tbgd7tBkecz3HPX8nR5v0JtDT+gzN
8fM3kAiAzjCHUAFWVAMAZLr5TXuoq4lGTTxvZbwTjZfyjCm7gIieCu8+qnPWh6hm
30NgA/0ZyEHG6I4rOWqPks4vZuD+wlp5XL8moBXEKfEVOMh2MCNDRGnvVHu1P3eD
oHOooVMt9sWrGcgxpYuupPNL4Uf6B6smiLlH6D4tEg+qCxC17zABI5572XJTJ170
JklZJrPGtnkPrrKMamnN9MU4RjGmjh9JZPa7rKjZHyWP/z/CBrQ1RGFnIFdpZWVy
cyAoRGFnIEFwdCBSZXBvc2l0b3J5IHYxLjApIDxkYWdAd2llZXJzLmNvbT6IWQQT
EQIAGQUCP0kxPQQLBwMCAxUCAwMWAgECHgECF4AACgkQog5SFGuNeeYvDQCeKHST
hIq/WzFBXtJOnQkJGSqAoHoAnRtsJVWYmzYKHqzkRx1qAzL18Sd0iEYEEBECAAYF
Aj9JMWAACgkQoj2iXPqnmevnOACfRQaageMcESHVE1+RSuP3txPUvoEAoJAtOHon
g+3SzVNSZLn/g7/Ljfw+uQENBD9JMT8QBACj1QzRptL6hbpWl5DdQ2T+3ekEjJGt
llCwt4Mwt/yOHDhzLe8SzUNyYxTXUL4TPfFvVW9/j8WOkNGvffbs7g84k7a5h/+l
IJTTlP9V9NruDt1dlrBe+mWF6eCY55OFHjb6nOIkcJwKxRd3nGlWnLsz0ce9Hjrg
6lMrn0lPsMV6swADBQP9H42sss6mlqnJEFA97Fl3V9s+7UVJoAIA5uSVXxEOwVoh
Vq7uECQRvWzif6tzOY+vHkUxOBRvD6oIU6tlmuG3WByKyA1d0MTqMr3eWieSYf/L
n5VA9NuD7NwjFA1kLkoDwfSbsF51LppTMkUggzwgvwE46MB6yyuqAVI1kReAWw+I
RgQYEQIABgUCP0kxPwAKCRCiDlIUa4155oktAKDAzm9QYbDpk6SrQhkSFy016BjE
BACeJU1hpElFnUZCL4yKj4EuLnlo8kc=
=mqUt
-----END PGP PUBLIC KEY BLOCK-----
用它来安装一些小软件,真的很给力哟,要不是试试 tmux!你会得到很大的惊喜,因为tmux真的太酷了……
upstream负载实现nginx与tomcat简单集群
......
server {
listen 80;
server_name tao.test.com;
root /path/to/tomcat/webapps/ROOT;
location / {
proxy_pass http://tomcat1_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
access_log /var/log/nginx/tomcat1_access.log main;
}
.......
upstream tomcat1_servers {
server 192.168.8.8:8080;
server x.x.x.x:x;
}
......
sed操作连接文件注意
[root@taolr:/]# cat test.txt
abc
def
ghi
jkl
mno
[root@taolr:/]# sed "s/abc/ABC/g" test.txt
ABC
def
ghi
jkl
mno
[root@taolr:/]# ln -s test.txt test1.txt
[root@taolr:/]# ll
...
lrwxrwxrwx. 1 root root 8 Jul 16 14:29 test1.txt -> test.txt
-rw-r--r--. 1 root root 20 Jul 16 14:28 test.txt
[root@taolr:/]# sed -i "s/abc/ABC/g" test1.txt
[root@taolr:/]# ll
...
-rw-r--r--. 1 root root 20 Jul 16 14:30 test1.txt
-rw-r--r--. 1 root root 20 Jul 16 14:28 test.txt
[root@taolr:/]# rm -rf test1.txt
root@taolr:/]# ln -s test.txt test1.txt
[root@taolr:/]# sed -i -c "s/abc/ABC/g" test1.txt //sed -c 注意点
[root@taolr:/]# ls -l
...
lrwxrwxrwx. 1 root root 8 Jul 16 14:32 test1.txt -> test.txt
-rw-r--r--. 1 root root 20 Jul 16 14:32 test.txt
[root@taolr:/]# cat test1.txt
ABC
def
ghi
jkl
mno
[root@taolr:/]# cat test.txt
ABC
def
ghi
jkl
mno
man sed
-c, --copy
use copy instead of rename when shuffling files in -imode. While this will avoid breaking links (symbolic or hard), the resulting editing oper-
ation is not atomic. This is rarely the desired mode; --follow-symlinks is usually enough, and it is both faster and more secure.
进程内存使用率脚本
#!/bin/bash
ps -C $1 -O rss |gawk '{ count ++; sum += $2 };\
END { count --; print "Number of processes=",count;\
print "Mememory usage per process =", sum/1024/count, "MB";\
print "Total memory usage =", sum/1024, "MB" ;};'
使用:
shell>./mem.sh java
Number of processes = 3
Memory usage per process = 153.672 MB
Total memory usage = 461.016 MB
shell>./mem.sh oracle
Number of processes = 71
Memory usage per process = 47.5638 MB
Total memory usage = 3377.03 MB
top_cpu
Cpu(s):表示这一行显示CPU总体信息
0.0%us:us = user mode! 用户态进程占用CPU时间百分比,不包含renice值为负的任务占用的CPU的时间。
0.7%sy:sy = system mode! 内核占用CPU时间百分比
0.0%ni:ni = low priority user mode (nice)! renice值为负的任务的用户态进程的CPU时间百分比。nice是优先级的意思
99.3%id:id = idle task! 空闲CPU时间百分比
0.0%wa:wa = I/O waiting! 系统I/O等待输入输出的的CPU时间百分比
0.0%hi:hi = servicing IRQs! CPU硬中断时间百分比
0.0%si:si = servicing soft IRQs! CPU软中断时间百分比
0.0%st:st = steal (time given to other DomU instances)
nginx的rewrite小记
① 生产环境下要存有谨慎,例如,修改了nginx的配置文件,一定要先“../nginx –t “ 检测语法,然后再“../nginx –s reload” 重新加载配置文件!注意细节!
② If 模块可以放到Location模块的里面,也可以放到location的外面,server的里面,注意有 If 和没有 if 对 rewrite 的区别!如下:
(rewrite前面也有#号~所以实验是不对的啦~)
没有if 的话,如果b3.html 文件不存在了,那么不跳转!
如果有 if 的话,如果 b3.html 文件不存在了,那么就不会跳转了!要注意细节:
Notice: 后来又测试了几次,发现它都会跳转过去!不过有没有If !b3.html 没有的话,也会跳转的!?
③ 几个小实验
3.1 index和autoindex
得到的实验结果是:
如果将目录 /www/server0 下面的 index.html文件更名或删除,访问的结果是:
另外,如果实验配置中,启动 autoindex,那么 agx_index失效之后,会启动 agx_autoindex模块
该配置下的实验结果是:
当然,如果找得到index.html,结果依然是:
。。。。。。
还有很多nginx的内容需要实践,最重要的是看需求是什么,然后用相应的配置。
极力推荐 agentzh的Nignx的教程
SecureCRT复制键
crontab不能执行的5种原因
还算全面
1 crond服务未启动
crontab不是Linux内核的功能,而是依赖一个crond服务,这个服务可以启动当然也可以停止。如果停止了就无法执行任何定时任务了,解决的方法是打开它:
crond
或
service crond start
如果提示crond命令不存在,可能被误删除了,CentOS下可以通过这个命令重新安装:
yum -y install crontabs
2 权限问题
比如:脚本没有x执行权限,解决方法:
增加执行权限,或者用bash abc.sh的方法执行
3 路径问题
有的命令在shell中执行正常,但是在crontab执行却总是失败。有可能是因为crontab使用的sh未正确识别路径,比如:以root身份登录shell后执行一个/root/test.sh,只要执行
./test.sh
就可以了。但是在crontab中,就会找不到这个脚本,比如写完整:
/root/test.sh
4 时差问题
因为服务器与客户端时差问题,所以crontab的时间以服务器时间为准。
5 变量问题
有时候命令中含有变量,但crontab执行时却没有,也会造成执行失败。
转载这样我想起以前写的一篇新浪博客,与crontab相关,看第5小节的所谓的“思想的火花”吧!
du 查看当前一层目录的大小
shell> du --max-depth=1 这个参数就是目录层数的意思
shell> du -h --max-depth=1
vmware共享主机wifi上网
①主机是win7共享wifi上网.
②edit--Virtual network editor--VMnet0--Bridged (connect VMs to directly to the external network) -- 下拉菜单 --选择 Bridged to 无线上网卡型号或者是 AutoMatic.
③虚拟机选择桥接.
tmux 主要快捷键
-- 基本使用
tmux //运行C-b d //返回主 shell , tmux 依旧在后台运行,里面的命令也保持运行状态tmux attach //恢复tmux-- 快捷键
tmux 的使用主要就是依靠快捷键,通过 C-b 来调用。
C-b ? // 显示快捷键帮助
C-b C-o //调换窗口位置
C-b 空格键 //采用下一个内置布局
C-b ! // 把当前窗口变为新窗口
C-b " // 模向分隔窗口
C-b % // 纵向分隔窗口
C-b q // 显示分隔窗口的编号
C-b o // 跳到下一个分隔窗口
C-b 上下键 // 上一个及下一个分隔窗口
C-b C-方向键 //调整分隔窗口大小
C-b & // 确认后退出 tmux
C-b c // 创建新窗口
C-b ,//修改当前窗口名称
C-b 0~9 //选择几号窗口
C-b c // 创建新窗口
C-b n // 选择下一个窗口
C-b l // 最后使用的窗口
C-b p // 选择前一个窗口
C-b w // 以菜单方式显示及选择窗口
C-b s // 以菜单方式显示和选择会话
C-b t //显示时钟
我的控制键为:C-b
1、 C-b [ 进入复制模式
2、 参考上表移动鼠标到要复制的区域,移动鼠标时可用vim的搜索功能"/","?"
3、 按空格键开始选择复制区域
4、 选择完成后安enter键退出
5、 C-b ] 粘贴
几个常用命令:
shell>tmux list-session
shell>tmux new -s session-name
shell>tmux kill-session -tsession-name
shell>tmux attach -tsession-name
参考
实体机64位不能安装64位虚拟机
进BIOS,开启CPU虚拟化的支持!
时间修改
date 081915062013.00 (月日时分年.秒)
clock -w //写入BIOS
SecureCRT字符编码相关
①Character encoding 选 "utf8"
②字体选择的时候可能要考虑.(--虽然在terminal中偶比较讨厌这种字体--)
SecureCRT全屏
shell多进程并发执行
for (( i = 0; i <= $(( $j - 1 )); i++ ))
do
{
//内部逻辑... 注意变量的使用,最好封装到子shell中.
} & //关键是这个 "&" 符号.
done
wait//等待所有子进程结束,不wait也OK,完了最后ps检查.
以HTTP方式共享当前文件夹的文件
$ python -m SimpleHTTPServer
这命令启动了Python的SimpleHTTPServer模块,考虑到Python在绝大多数的Linux发行版当中都默认安装,所以这个命令很可能是最简单的跨平台传文件的方法。命令执行后将在本机8000端口开放HTTP服务,在其他能访问本机的机器的浏览器打开http://ip:8000即打开一个目录列表,点击即可下载。
如果需要修改端口,如下操作即可:
$ python -m SimpleHTTPServer 8080