我的linux使用常用命令

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下打开多了应该只要他们不活动,也没什么开销。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>