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

linux搜集的一些命令及用法

2013-08-07 14:20 381 查看
1、

解决/etc/init.d/after.local不起作用(init.d目录下的其他文件也是如此设置)

查看等级 runlevel=`who -r | awk '{print $2}'`
修改等级 chkconfig after.local $runlevel

2、

$ a=`echo root:x:0:0:root:/root:/bin/bash | cut -d : -f 1,5`   

$ echo $a  

root:root  

上面的例子中,把 root:x:0:0:root:/root:/bin/bash 重定向到cut命令里,-d表示分隔符,这里使用冒号: 作为分隔符,-f 表示字段,选择了第1,和第5个字段

3、

shell中的eval命令将会首先扫描命令行进行所有的替换,然后再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。

例如

$:cat ext

count=3

cmd=echo

cmd="$cmd \$$count"

ext 11 22 33

此时cmd=" echo $3"

eval $cmd 等价于 "echo 33 "

如果是bash,可以用indirect expansion来搞,语法为 ${!var}。

比如

foo=bar

bar=123

echo ${!foo}

会打印 123

4、

如果需要找到某些文件后进行操作,有三种方法

第一种find,后面加-exec 命令 {} \;注意空格

find ./ -type f -name "[^s]*" -exec dos2unix {} \;

第二种管道和xargs命令,xargs是一条Unix和类Unix操作系统的常用命令。它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题

ls -l|awk '{if($4~/oinstall/) print $9}'|xargs rm -rf

第三种使用``

rm -rf `ls -l|awk '{if($4~/oinstall/) print $9}'`

5、

linux关闭命令输入时显示,不显示命令代码,但显示命令结果

stty -echo(关闭回显)

stty echo(开启回显)

6、

查找/目录下包含ORACLE_HOME内容的文档,是检测文件内容,不是名字

find / -type f -exec grep -l "ORACLE_HOME" {} \;

7、

for循环如何将数字转换成list,用$(seq 1 50)

for num in $(seq 1 50)

do

......

done

8、

根据ip和子网掩码计算网络号

echo 192.168.10.10/255.255.255.0|awk 'BEGIN{FS="[./]";OFS="."} END{ print and($1,$5),and($2,$6),and($3,$7),and($4,$8)}'

9、

lvm工具位置

LVM能够动态调整逻辑卷的大小。实际上你的LVM卷按照通常分区的概念是在同一个分区上(当然这取决于你安装时如何分区,我说的是一般情况),每个LVM卷都能动态扩展到整个分区的大小,只要你的三个逻辑卷已用空间之和小于这个分区的大小,那么你可以向任何LVM卷上继续拷贝文件。

RedHat、Ubuntu: /sbin/lvm 

你可以用which lvm 或者 whereis lvm 在你的系统上查找。

pvscan

vgdisplay

查看具体磁盘大小

# fdisk -l /dev/diskname

2. 初始化PV

# pvcreate -f /dev/diskname

# pvremove  /dev/diskname 删除pv

3. 创建VG

# vgcreate -s pesize vg_name /dev/diskname

4. 扩展VG

# vgextend /dev/vg_name /dev/diskname1 /dev/diskname2

5. 删除VG

? 卸载文件系统

? 先删除VG中所有的lv

? 去激活VG

# vgchange -a n /dev/vg_name

? 删除VG

# vgremove /dev/vg_name

6. 激活VG

# vgchange -a y vg_name

7. 去激活VG

# vgchange -a n vg_name

8. 创建LV

? 指定LE数量(LV大小为100个LE)

# lvcreate -l 100 -n Name /dev/vg_name

? 指定大小(LV大小为100M)

# lvcreate -L 100 -n Name /dev/vg_name

9. 扩展LV

? 指定LE数量(LV扩展100个LE)

# lvextend -l 100 /dev/vg_name/lv_name

? 指定大小(LV扩展100M)

# lvextend -L 100 /dev/vg_name/lv_name

10. 删除LV

# lvremove /dev/vg_name/lv_name

11. 创建文件系统

? 创建文件系统

# mkfs.ext3 /dev/vg_name/lv_name

? 创建文件系统挂载的目录

# mkdir /fsname

? 挂载文件系统

# mount /dev/vg_name/lv_name /fsname

? 卸载文件系统

# umount /fsname

10、

linux中>和>>区别

> 直接把内容生成到指定文件,会覆盖源文件中的内容,还有一种用途是直接生成一个空白文件,相当于touch命令

>>尾部追加,不会覆盖掉文件中原有的内容

11、

tar 解压缩 tar -vxf 文件名

gzip解压缩 gzip -dvf 文件名

tar -cvf [包名] 〔要打包的文件命〕例如:/home下有1.out,2.out,3.out三个文件,我想把它打包并且起名为“123.tar”并且存在/opt下。tar -cvf /opt/123.tar /home/*.out然后在opt下就有一个名为123.tar的包了。里面包含文件1.out,2.out,3.out.

不压缩用:tar -cvf out.tar 1.out 2.out 3.out

gz压缩用:tar -czvf out.tar.gz 1.out 2.out 3.out

bz2压缩用:tar -cjvf out.tar.bz2 1.out 2.out 3.out

输出文件名是写在前面的。

12、

test.sh >/dev/null 意思是将脚本输出全部指向 /dev/null。/dev/null可以理解为黑洞,可以无限往里面扔垃圾。所以这个相当于不输出了。test.sh > 2>&1 ,这里1是标准输出,2是错误输出。 2>&1的意思就是将错误输出的内容也输出到标准输出流中。就是说将该脚本所有的输出都送到标准输出流中

13、

文件比较运算符

-e filename 如果 filename存在,则为真
[ -e /var/log/syslog ]

-d filename 如果 filename为目录,则为真
[ -d /tmp/mydir ]

-f filename 如果 filename为常规文件,则为真
[ -f /usr/bin/grep ]

-L filename 如果 filename为符号链接,则为真
[ -L /usr/bin/grep ]

-r filename 如果 filename可读,则为真
[ -r /var/log/syslog ]

-w filename 如果 filename可写,则为真
[ -w /var/mytmp.txt ]

-x filename 如果 filename可执行,则为真
[ -L /usr/bin/grep ]

filename1-nt filename2 如果 filename1比 filename2新,则为真
[ /tmp/install/etc/services -nt /etc/services ]

filename1-ot filename2 如果 filename1比 filename2旧,则为真
[ /boot/bzImage -ot arch/i386/boot/bzImage ]

字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)

-z string 如果 string长度为零,则为真
[ -z "$myvar" ]

-n string 如果 string长度非零,则为真
[ -n "$myvar" ]

string1= string2 如果 string1与 string2相同,则为真

[ "$myvar" = "one two three" ]

string1!= string2 如果 string1与 string2不同,则为真

[ "$myvar" != "one two three" ]

算术比较运算符

num1-eq num2 等于
[ 3 -eq $mynum ]

num1-ne num2 不等于
[ 3 -ne $mynum ]

num1-lt num2 小于
[ 3 -lt $mynum ]

num1-le num2 小于或等于
[ 3 -le $mynum ]

num1-gt num2 大于
[ 3 -gt $mynum ]

num1-ge num2 大于或等于
[ 3 -ge $mynum ]

14、

举例说:

脚本名称叫test.sh 入参三个: 1 2 3

运行test.sh 1 2 3后

$*为"1 2 3"(一起被引号包住)

$@为"1" "2" "3"(分别被包住)

$#为3(参数数量)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: