1、替换
将hadoop目录里面的所有文件里面的 “home/szuser”替换成”opt”
sed -i “s/home\/szuser/opt/g” `grep home\/szuser -rl hadoop`
还有种方式就是管道:
grep -rl ‘home/szuser/ahu’ ./hadoop | xargs sed -i ‘s/home\/szuser\/ahu/opt\/ahu/g’
2、Dump线程
#jstack -l 12681 > 1.txt
3、环境变量的设置与生效
#vi /usr/profile 进行设置
source /usr/profile 执行后可以马上生效
环境变量修改
#vi /etc/profile
在适当位置添加PATH=$PATH:/etc/apache/bin
这种方法最好,除非你强制手动修改PATH的值,否则将不会被改变
生效还需要执行:source /etc/profile
环境变量加到~/.bash_profile中只有在用户登录时才有作用(推荐使用)
4、windows通过IP查看主机名 (windows也加一个)
nbtstat -a 10.69.152.22
5、shell文件的执行
source a.sh 和直接执行 ./a.sh 有什么不同?
调用./a.sh来执行shell是在一个子shell里运行的,所以执行后,结果并没有反应到父shell里,但是source是在当前shell环境中执行的
6、删除文件/文件夹
-r 就是向下递归,不管有多少级目录,一并删除
-f 就是直接强行删除,不作任何提示的意思
删除文件夹实例:rm -rf /var/log/httpd/access,将会删除/var/log/httpd/access目录以及其下所有文件、文件夹
8、压缩,解压
#tar -zcvf /tmp/etc.tar.gz /etc
tar -zcvf 打包后生成的文件名全路径 要打包的目录
例子:把/etc文件夹打包后生成一个/tmp/etc.tar.gz的文件,
解压是 #tar -zxvf /tmp/etc.tar.gz
9、复制
本地复制
#cp lib lib_bak -Rfa
网络复制
#scp perforce.tar.gz caih@ftc-lbsrdetl305:/home/caih
10、查找
先匹配文件名,再查关键词
#find . -name “giga*” | xargs grep “exception” -n
查找当前目录下所有文件里面是否包含某个字符串,命令如下:
#grep -R “exception” . -n
vi文件内查找
vi行号定位用”:行号” , 查找用”?待查字符串”
更多参考:http://wenku.baidu.com/view/b764df4bc850ad02de8041c2.html
11 、存储查看
当前目录下面的大小
[root@dbtest newjob]# du -h –max-depth=1
–max-depth=1 参数可以让 du 命令显示当前目录下 1 级子目录的统计信息
[root@dbtest newjob]# du -sh /home/newjob/
781M /home/newjob/
所有目录的大小
[root@dbtest newjob]# df -h
12、显示消耗内存最多的 10 个运行中的进程,以内存使用量排序
ps aux | sort -nk +4 | tail
13、用 Wget 的递归方式下载整个网站
wget –random-wait -r -p -e robots=off -U Mozilla www.example.com
14、ulimit命令详细
#lsof -n |awk ‘{print $2}’|sort|uniq -c |sort -nr|more
在Linux下,我们使用ulimit -n 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。
对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象squid、mysql、java等单进程处理大量请求的应用来说就有 点捉襟见肘了。如果单个进程打开的文件句柄数量超过了系统定义的值,就会提到“too many files open”的错误提示。如何知道当前进程打开了多少个文件句柄呢?下面一段小脚本可以帮你查看:
在系统访问高峰时间以root用户执行上面的脚本,可能出现的结果如下:
# lsof -n|awk ‘{print $2}’|sort|uniq -c |sort -nr|more
131 24204
57 24244
57 24231
56 24264
其中第一列是打开的文件句柄数量,第二列是进程号。得到进程号后,我们可以通过ps命令得到进程的详细内容。
# ps -aef|grep 24204
mysql 24204 24162 99 16:15 ? 00:24:25 /usr/sbin/mysqld
哦,原来是mysql进程打开最多文件句柄数量。但是他目前只打开了131个文件句柄数量,远远底于系统默认值1024。
但是如果系统并发特别大,尤其是squid服务器,很有可能会超过1024。这时候就必须要调整系统参数,以适应应用变化。Linux有硬性限制和软性限制。可以通过ulimit来设定这两个参数。方法如下,以root用户运行以下命令:
# ulimit -HSn 4096
以 上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过4096,毕竟打开的文件句柄数越多响 应时间肯定会越慢。设定句柄数量后,系统重启后,又会恢复默认值。如果想永久保存下来,,可以修改 /etc/profile 把上面命令加到最后。加到~/.bash_profile中只有在用户登录时才有作用,加到/etc/profile中。windows没有这个文件句柄的太多限制,基本上就是内存决定。win句柄和LINUX的不一样,他好像是个hash表来存储(这部分WIN是开源的),不像linux是个数组。linux下打开多了应该只要他们不活动,也没什么开销。