您的位置:首页 > 运维架构 > Shell

shell基本命令[getconf/bc/stat/cut/sh -c/telnet ip 80/lsof ]

2012-03-29 19:19 633 查看
1.1 基本shell命令

1. cat ...|tee -a /home/a/conf/test.conf 把屏幕上的数据写到文件中; tee -a 参数a的意思是,在文件后面添加,不是覆盖

scp -p 选项 p:保留文件的修改时间和访

df -h du -h

2. ssh ip/hostname 命令

ssh ecpmv152196.cm3 ping www.baidu.com 先登录ecpmv152196.cm3 然后执行 ping www.baidu.com

3。 echo -e 允许后面字符串中的转义字符有效 \n 换行符

[caoshuming@hostname ~]$ echo -e "i will use \n $HOME"
i will use 
 /home/caoshuming.pt
[caoshuming@hostname ~]$ echo "i will use \n $HOME"   
i will use \n /home/caoshuming.pt
[caoshuming.pt@hostname ~]$


4. 查看机器的内存mem、swap的使用情况用free 命令

[caoshuming.pt@hostname ~]$ free -m
             total       used       free     shared    buffers     cached
Mem:          1700       1181        518          0        301        639
-/+ buffers/cache:        239       1460
Swap:         1027          0       1027


5. bc 把字符串看成数值来计算

[caoshuming.pt@hostname ~]$ echo "100 - 99.2" |bc
.8


也就是把字符串 "100 - 99.2" 用bc的数值进行计算得到 0.8

6. 理解/etc/cron.d目录;里面都是此台服务器定时执行的脚本

[]$ cd /etc/cron.d/

cat /etc/cron.d/* |grep rm

crontab -u root -l root用户的定时任务

7. which where is 查询命令的目录

which vm_img 后面要加命令 因为在 path里面查询 后面加目录是无效的

]$ which vm_img

/usr/bin/which: no vm_img in (/usr/kerberos/bin:/home/y/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/zengtai.csm/bin)

etc]$ where is vm_img

-bash: where: command not found

[zengtai.csm@ ~]$ hostname -i
172.24.130.57

hostname -s .....l

~]$ hostname -h

Usage: hostname [-v] {hostname|-F file} set hostname (from file)

domainname [-v] {nisdomain|-F file} set NIS domainname (from file)

hostname [-v] [-d|-f|-s|-a|-i|-y|-n] display formatted name

hostname [-v] display hostname

hostname -V|--version|-h|--help print info and exit

dnsdomainname=hostname -d, {yp,nis,}domainname=hostname -y

-s, --short short host name

-a, --alias alias names

-i, --ip-address addresses for the hostname

-f, --fqdn, --long long host name (FQDN)

-d, --domain DNS domain name

-y, --yp, --nis NIS/YP domainname

-F, --file read hostname or NIS domainname from given file

10. geconf

http://hi.baidu.com/dekar/blog/item/6c20c1f64b2baf65dcc47423.html

11.stat 是查看文件的文件状态的命令,可以查看文件的 size IO Blocks access (uid) Modify Changetime 等

Modify:文件数据最后的修改时间,Change:文件i节点最后修改时间,i节点包括:文件的Chown chmod 类型 长度 文件块指针 等

$ a=`stat "/home/zengtai.csm/t.sh"` 
$ echo $a
File: `/home/zengtai.csm/t.sh' Size: 134 Blocks: 8 IO Block: 4096 regular file Device: ca05h/51717d Inode: 848664 Links: 1
 Access: (0744/-rwxr--r--) Uid: (53549/zengtai.csm) Gid: ( 100/ users) Access: 2012-06-10 09:22:45.000000000 +0800
 Modify: 2012-06-10 09:22:26.000000000 +0800 Change: 2012-06-10 09:22:26.000000000 +0800


用cut命令打印出 Change time:

$ stat "/home/zengtai.csm/tt.sh"|grep Change|cut -d : -f2|cut -f1
 2012-06-03 18
shell 中用 |tr -s ' ' 去掉字符串中多余的空格;

shell 中命令的输出不能直接用 | 作为下面命令的输入 ,必须用 $(cmd)| 来实现

$  stat "/home/zengtai.csm/tt.sh"|grep Change|cut -d : -f2
 2012-07-28 11
$ echo $(stat "/home/zengtai.csm/tt.sh"|grep Change|cut -d : -f2)|tr -s ' '
2012-07-28 11


shell 中数组的赋值

my=(`stat "/home/zengtai.csm/tt.sh"`)                          
$ echo ${my[10]}
file

把 stat 命令的结果赋值给my数组,按 空格分开元素

用stat 命令获取文件的最后motidy 的时间,也就是文件中数据最后修改的时间

$ a=`stat -c %Y /home/a/test/browser.tdbm`
$ echo $a
1343656262   -->换算成s


12. 清空一个文件:

cat /dev/null > /tmp/t.txt

sudo -u shuming sh -c 'true > /tmp/t.tx'

13. 用telnet 检测一下到一个域名和ip 端口的通信,一般用来查看是否打通ACL:

telnet www.taobao.com

telnet ip 5198 判断是否打通ACL

14. netcat 命令详解:

http://linux.chinaunix.net/techdoc/system/2008/10/14/1038114.shtml

15. lsof 命令:可以查看一个进程打开的文件,也可以查看某个文件被那些进程打开

http://blog.csdn.net/lidowx/article/details/6019573

sudo lsof -p 进程号 显示进程打开的所有文件

sudo ls0f /var/...file 显示打开次文件的所有进程

16. >/dev/null 2>&1的语法实现原理

http://ninayang1987.blog.sohu.com/165240471.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: