当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪如何解决dd命令输出结果无法重定向到文件的问题      如何解决dd命令输出结果无法重定向到文件的问题,感兴趣的朋友可以参考下。 先以time为例: 解决time命令输出信息的重定向问题   time命令的输出信息是打印在标准错误输出上的, 我们通.........
    ▪如何查看dd命令的拷贝进度      linux中的DD命令可以很方便的作二进制拷贝,比如可以做硬盘克隆。 一般使用方式如下: dd if=/src/device/name of=/dst/device/name 然后就等它完成,进程退出。 但是当我们需要copy的东西很巨大的时.........
    ▪快速查看硬件信息的命令一览      linux下查看硬件信息的命令一览,供大家学习参考。 1、查看平台 [root@master ~]# arch i686 [root@master ~]# uname -m i686 查看系统版本 [root@master ~]# more /etc/redhat-release CentOS release 5.6 (Final) [root@master .........

[1]如何解决dd命令输出结果无法重定向到文件的问题
    来源: 互联网  发布时间: 2013-12-24

如何解决dd命令输出结果无法重定向到文件的问题,感兴趣的朋友可以参考下。

先以time为例:
解决time命令输出信息的重定向问题
 
time命令的输出信息是打印在标准错误输出上的, 我们通过一个简单的尝试来验证一下。

代码如下:
[root@web186 root]# time find . -name "mysql.sh" >1.txt
real    0m0.081s
user    0m0.060s
sys     0m0.020s
[root@web186 root]# time find . -name "mysql.sh" 2>2.txt
./work186/sms/bin/mysql.sh
./work186/sms/src/scripts/mysql.sh
./work186/sms/src/scripts1/mysql.sh
real    0m0.068s
user    0m0.040s
sys     0m0.030s

通过上面的尝试,发现无法将time的输出信息重定向到文件里面,为什么?因为time是shell的关键字,shell做了特殊处理,它会把time命令后面的命令行作为一个整体来进行处理,在重定向时,实际上是针对后 面的命令来的,time命令本身的输出并不会被重定向的。那现在怎么办呢?网上提供了两种解决方法【2,3】,我们一一尝试一下。
 
第一种解决方法,就是将time命令和将要执行的命令行放到一个shell代码块中,也就是一对大括号中,要注意空格和分号的使用。
[root@web186 root]# {time find . -name "mysql.sh"} 2>2.txt
 
好像成功了。慢,看一下对不对。
[root@web186 root]# cat 2.txt
-bash: {time: command not found
 
原来bash把 {time 作为一个整体来处理了,前后都加上空格试试。
[root@web186 root]# { time find . -name "mysql.sh" } 2>2.txt
> Ctrl+C
 
这次Bash认为命令都没有输入完成,少了分号。因为Bash认为后面的 } 是find命令的参数。

代码如下:
[root@web186 root]# { time find . -name "mysql.sh"; } 2>2.txt
./work186/sms/bin/mysql.sh
./work186/sms/src/scripts/mysql.sh
./work186/sms/src/scripts1/mysql.sh
./work186/sms1/bin/mysql.sh
./work186/sms1/src/scripts/mysql.sh
./temp/sms/bin/mysql.sh
./temp/sms/src/scripts/mysql.sh
[root@web186 root]# cat 2.txt
real    0m0.068s
user    0m0.030s
sys     0m0.040s

第一种方式的尝试成功了,总结起来就是 { time command-line; } 2>file  注意分隔符的使用。
 
另外一种方式就是使用子Shell的方式,如下所示:

代码如下:
[root@web186 root]# (time find . -name "mysql.sh") 2>2.txt
./work186/sms/bin/mysql.sh
./work186/sms/src/scripts/mysql.sh
./work186/sms/src/scripts1/mysql.sh
./work186/sms1/bin/mysql.sh
./work186/sms1/src/scripts/mysql.sh
./temp/sms/bin/mysql.sh
./temp/sms/src/scripts/mysql.sh
[root@web186 root]# cat 2.txt
real    0m0.083s
user    0m0.040s
sys     0m0.020s
 

第二种方式的尝试也成功了,总结起来就是 (time command-line) 2>file 这里time紧贴着小括号(也可以的,命令行结束也不必带分号。当然最好还是用第一种方式,毕竟启动一个子shell是要多占些资源的。
 
针对dd命令。同time命令,dd命令包括了time命令。
故 dd if=/dev/zero of=/mnt/test bs=1k count=100 >>output.txt

此时并不能把dd命令显示的时间和速度保存到output.txt里。因为dd命令的输出是到标准错误输出上的。
必须采用dd if=/dev/zero of=/mnt/test bs=1k count=100  2>>output.txt 才可以。

您可能感兴趣的文章:
Linux下dd命令生成指定大小的虚拟块设备文件
linux下dd命令备份磁盘的节点(主引导记录)恢复数据
linux中dd命令的用法详解
linux中dd命令使用详解
使用dd命令克隆磁盘的方法介绍
linux中dd命令详解(清除硬盘数据)
dd命令中seek和skip的用法
如何查看dd命令的拷贝进度


    
[2]如何查看dd命令的拷贝进度
    来源: 互联网  发布时间: 2013-12-24

linux中的DD命令可以很方便的作二进制拷贝,比如可以做硬盘克隆。
一般使用方式如下:
dd if=/src/device/name of=/dst/device/name
然后就等它完成,进程退出。

但是当我们需要copy的东西很巨大的时候,这个过程是很痛苦的,很多人会查看iostat,来估算大概需要多少时间完成,这是很不直观的,也不可靠。

如果我们dd --help
会看到其实是有方法可以查看copy进度的, 帮助文件中的example如下:
$ dd if=/dev/zero of=/dev/null& pid=$! 后台运行dd测试,保存进程号到pid中。
 
实际我们使用的时候可以新开一个终端,
ps -ef | grep dd
找到dd的PID, 然后发送USR1(用户自定义信号),查看copy进度

有些场合我们可能使用当前这个终端, 那么我们可以把当前运行的dd转到后台:ctrl+z, 这时候dd进程被stop了,使用bg %1让其在后台继续运行,并且编为1号,后面如果要它到前台运行,只要键入fg %1就可以了。

然后我们输入kill -USR1 PID,这里的PID是前面用ps查看到的进程号,这时候你就能看到当前的copy信息了,以及平均copy速度。
 
可以结合watch -n 1 kill -USR1 PID实时刷新copy进度。

您可能感兴趣的文章:
Linux下dd命令生成指定大小的虚拟块设备文件
linux下dd命令备份磁盘的节点(主引导记录)恢复数据
linux中dd命令的用法详解
linux中dd命令使用详解
使用dd命令克隆磁盘的方法介绍
linux中dd命令详解(清除硬盘数据)
dd命令中seek和skip的用法
如何解决dd命令输出结果无法重定向到文件的问题


    
[3]快速查看硬件信息的命令一览
    来源: 互联网  发布时间: 2013-12-24

linux下查看硬件信息的命令一览,供大家学习参考。

1、查看平台
[root@master ~]# arch
i686
[root@master ~]# uname -m
i686
查看系统版本
[root@master ~]# more /etc/redhat-release
CentOS release 5.6 (Final)
[root@master ~]# lsb_release -a
LSB Version: :core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-ia32:printing-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 5.6 (Final)
Release: 5.6
Codename: Final
查看32还是64位的
[root@master ~]# file /sbin/init
/sbin/init: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

2、查看网卡信息
lspci | grep -i ether
02:01.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)

3、查看CPU
查看物理CPU的个数
[root@hwb-e2-matapm yh]# cat /proc/cpuinfo | grep "physical id" | sort -u | wc -l
2
查看逻辑CPU的个数
[root@hwb-e2-matapm yh]# cat /proc/cpuinfo | grep "processor" | wc -l
8
查看核数
[root@hwb-e2-matapm yh]# cat /proc/cpuinfo | grep "cores" | uniq
cpu cores : 4
正常来说:逻辑cpu的个数等于物理cpu的个数乘以核数,如果不相等,表示你的CPU支持超线程

4、查看硬盘
大概换算: 1GB = 1000MB ; 1MB=1000KB ;1 KB=1000B (字节) 1B = 8
[root@master ~]# fdisk -l
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 2610 20860402+ 8e Linux LVM
可以看出硬盘21.4G,有255个磁面,63个柱头,2610个磁柱,每个磁柱的容量约为:8.22528M
如果要查看一个硬盘是否完全划分,很容易看下边的start end是否达到了总的磁柱量,若达到则划分完毕
在使用fdisk对磁盘进行分区时候,可以用t来改变分区类型,用L可以看到支持的分区类型
进入fdisk /dev/sda后可以直接按a然后来指定哪个分区是启动分区,
在对一个新的硬盘分区之后,需要partprobe一下来载入分区表
然后需要格式化,通过mkfs 补全一下可以看到
mkfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.msdos mkfs.vfat 支持格式化的集中分区类型
通过df可以查看硬盘容量包括inode的容量
[root@master ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/VolGroup00-LogVol00
5059200 123388 4935812 3% /
/dev/sda1 26104 35 26069 1% /boot
tmpfs 36924 1 36923 1% /dev/shm
/dev/hdc 0 0 0 - /mnt
/dev/hdc 0 0 0 - /var/www/html/centos
每个分区最前边的那个位置叫做超级块,后边的依次是Inode表,然后是block
显示超级块的数据 (超级快描述和维护文件系统的状态)
tune2fs -l /dev/sda1 = dumpe2fs -h /dev/sda1
[root@hwb-e2-matapm yh]# tune2fs -l /dev/sda1
tune2fs 1.35 (28-Feb-2004)
Filesystem volume name: /1
Last mounted on: <not available>
Filesystem UUID: 01d38341-e312-4d6d-bcbe-572f189ad92b
Filesystem magic number: 0xEF53 (用来识别档案系统为ext2/ext3)的签名
Filesystem revision #: 1 (dynamic) (V2格式支援动态inode大小现在一般都为1)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_file (开启档案系统功能,has_journal表示系统必须是ext3或者ext4)
Default mount options: (none)
Filesystem state: clean (表示数据一致)
Errors behavior: Continue (表示继续正常运作, remount-ro表示冲洗你挂载为只读模式,panic表示及时当掉的系统)
Filesystem OS type: Linux (建立档案系统的作业系统)
Inode count: 786432 (档案系统的总inode数目)
Block count: 1572354 (档案系统的总区块数目)
Reserved block count: 78617
Free blocks: 1169326 (空闲块)
Free inodes: 766699 (空闲节点)
First block: 0 (superblock的区块编数)
Block size: 4096 (块大小4KB )
Fragment size: 4096 (ext2,ext3,ext4都不支援fragment因此和区块大小一般都一样)
Reserved GDT blocks: 383
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 16384
Inode blocks per group: 512
Filesystem created: Fri Mar 14 00:28:52 2008 (档案系统建立时间)
Last mount time: Tue Oct 18 09:24:22 2011 (上次挂载时间)
Last write time: Tue Oct 18 09:24:22 2011 (上次改变内容时间)
Mount count: 19
Maximum mount count: -1
Last checked: Fri Mar 14 00:28:52 2008
Check interval: 0 (<none>)
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Journal inode: 8
Default directory hash: tea
Directory Hash Seed: 0da2600b-45c8-4650-bbcb-34e6cabb7a10
Journal backup: inode blocks
-------------------------------------------------------------
iostat -x 1 3
avg-cpu: %user %nice %system %iowait %steal %idle
0.74 1.96 6.00 1.99 0.00 89.31
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 1.01 22.60 4.14 2.89 116.99 203.98 45.67 0.47 67.04 6.79 4.77
sda1 0.91 22.60 4.13 2.89 116.85 203.96 45.68 0.47 67.07 6.79 4.77
sda2 0.09 0.00 0.00 0.00 0.11 0.02 46.98 0.00 11.18 8.50 0.00
如果%util接近100%说明I/O请求过多,I/O瓶颈
如果idle小于70%,I/O压力就比较大可以结合vmstat的b参数和wa参数来判断
svcm(I/O服务时间)应该小于await(等待时间)
avgqu-sz可以作为衡量I/O负荷的指标,是按照单位时间来计算出来的平均值,所以不能反映瞬间I/O洪水

5、查找PCI设置
[root@hwb-e2-matapm yh]# lspci | grep -i ether
07:04.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5715 Gigabit Ethernet (rev a3)
07:04.1 Ethernet controller: Broadcom Corporation NetXtreme BCM5715 Gigabit Ethernet (rev a3)
09:04.0 Ethernet controller: Broadcom Corporation NetXtreme 5715S Gigabit Ethernet (rev a3)
09:04.1 Ethernet controller: Broadcom Corporation NetXtreme 5715S Gigabit Ethernet (rev a

6、全部硬件信息
dmidecode PS:输出信息太多包含BIOS,主板太多反而很杂乱让人眼花缭乱的感觉

7、负载
uptime 的loadaverage
如果每个CPU(按照逻辑CPU个数计算)当前活动进程数不大于3,则系统性能良好
不大于4表示可以接收
大于5则表示严重要查找是什么引起了CPU的负载高....
vmstat也是个很好的命令,正常的比较好理解,主要是 in: 每秒的中断数,包括时钟中断 cs:每秒的环境(上下文)切换次数

备注:本文内容参考了构建高可用linux服务器。


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3