命令使用

一、date

时区:
    timedatectl status 查看时区的状态信息
    timedatectl list-timezones  列出系统上的所有时区
    timedatectl set-timezone  设置时区

date           显示系统时间
clock或hwclock 显示硬件时间
    hwclock -s 以硬件时间为准修改系统时间
    hwclock -w 以系统之间为准修改硬件时间
ntpdate:同步ntp时间服务器
    eg ntp 172.17.0.1
date MMDDHHmmYYYY.ss    修改时间
date命令:
    date(选项)(参数)
    参数:
        -d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号; 
        -s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;  
        -u:显示GMT;   
        --help:在线帮助;   
        --version:显示版本信息。
    参数:
        <+时间日期格式>:指定显示时使用的日期时间格式。

    日期格式字符串列表:
        %H 小时,24小时制(00~23) 
        %I 小时,12小时制(01~12) 
        %k 小时,24小时制(0~23) 
        %l 小时,12小时制(1~12) 
        %M 分钟(00~59) 
        %p 显示出AM或PM 
        %r 显示时间,12小时制(hh:mm:ss %p) 
        %s 从1970年1月1日00:00:00到目前经历的秒数 
        %S 显示秒(00~59) 
        %T 显示时间,24小时制(hh:mm:ss) 
        %X 显示时间的格式(%H:%M:%S) 
        %Z 显示时区,日期域(CST) 
        %a 星期的简称(Sun~Sat) 
        %A 星期的全称(Sunday~Saturday) 
        %h,%b 月的简称(Jan~Dec) 
        %B 月的全称(January~December) 
        %c 日期和时间(Tue Nov 20 14:12:58 2012)
        %d 一个月的第几天(01~31)
        %x,%D 日期(mm/dd/yy) 
        %j 一年的第几天(001~366) 
        %m 月份(01~12) 
        %w 一个星期的第几天(0代表星期天) 
        %W 一年的第几个星期(00~53,星期一为第一天)
        %y 年的最后两个数字(1999则是99)
    示例:
        格式化输出:
            date +"%Y-%m-%d" 
            2017-06-07
        输出昨天日期:
            date -d "1 day ago" +"%Y-%m-%d" 
            2017-06-06
        2秒后输出:
            date -d "2 second" +"%Y-%m-%d %H:%M.%S" 
            2017-06-07 14:21.31
        传说中的 1234567890 秒: 
            date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S" 2009-02-13 23:02:30
        普通转格式: 
            date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S" 
            2009/12/12 00:00.00 
        apache格式转换: 
            date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S" 
            2009-12-05 00:00.37 
        格式转换后时间游走: 
            date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S" 
            2007-12-05 00:00.37
        加减操作: 
            date +%Y%m%d //显示前天年月日 
            date -d "+1 day" +%Y%m%d //显示前一天的日期 
            date -d "-1 day" +%Y%m%d //显示后一天的日期 
            date -d "-1 month" +%Y%m%d //显示上一月的日期 
            date -d "+1 month" +%Y%m%d //显示下一月的日期 
            date -d "-1 year" +%Y%m%d //显示前一年的日期 
            date -d "+1 year" +%Y%m%d //显示下一年的日期 
        设定时间: 
            date -s //设置当前时间,只有root权限才能设置,其他只能查看 date -s 20120523 //设置成20120523,这样会把具体时间设置成空00:00:00 
            date -s 01:01:01 //设置具体时间,不会对日期做更改 
            date -s "01:01:01 2012-05-23" //这样可以设置全部时间 
            date -s "01:01:01 20120523" //这样可以设置全部时间 
            date -s "2012-05-23 01:01:01" //这样可以设置全部时间 
            date -s "20120523 01:01:01" //这样可以设置全部时间
时区配置文件:
    /etc/localtime 本地时区配置文件
    /usr/share/zoneinfo  所有时区的配置文件
    cp /usr/share/zoneinfo/America/New_York /etc/localtime  修改本地时区为纽约时间

二、关机或重启系统

reboot:重新启动
     参数:
        -f:强制关机,不调用shutdown
        -p:切断电源
poweroff:关机即关闭电源
halt:关机
shutdown:关机或重启
    参数:
        -r:reboot
        -h:halt
        -c:取消
        TIME:
            +m:相对时间表示法,多久之后,如+3
            hh:mm 绝对时间表示,指明具体关机时间
    eg  shutdown -h 18:00   
        shutdown -h 18:00 “the system whil be halt”  关机前显示提示信息

三、alias:别名

alias cdnet=“cd /etc/sysconfig/network-scripts”  定义别名
unalias cdnet   删除cdnet别名
如果别名同原命令同名,若要执行原命令可使用
    “\COMMAND”
    'COMMAND'
    /PATH/COMMAND   外部命令
别名可保存在/etc/bashrc或~/.bashrc文件,./bashrc刷新立即生效

四、hash:

hash:查看hash表(表中记录了查找到并执行过的命令,即缓冲中记录的命令)
作用就是为了记录或显示程序的位置

hash:显示缓冲中的命令信息,不显示别名
    -d:清空指定命令的缓存   eg hash -d ls
    -r:清空所有名的缓存  eg hash -r
    -l:显示hash缓存,也可显示别名(全部)
    -p path name:将命令全路径path起别名为name    eg hash -p /usr/bin/ls dan
    -t name:打印缓存中name(别名)的路径

五、screen

需要安装screen软件包

控制同一台设备所有加入的会话,将同步操作
新建screen会话
    screen -S [SESSION]
加入screen会话
    screen -x [SESSION]
显示所有已经打开的SCREEN会话
    screen -ls 
恢复某screen会话
    screen -r [SESSION]
剥离当前screen会话
    ctrl+a,d

六、echo:输入回显

参数:
    -n 关闭自动换行功能
    -e 启用转义字符
        \a:提示发声
        \t:插入tab
        \b:退格键(即覆盖删除键)
        \c:最后不加上换行符号
        \n:新添一行,换行且光标移至行首
        \r:回车,即光标移至行首,但不换行
        \\:插入\符号
        \0nn: 插入八进制数
        \xHH:插入十六进制
        \033[##m: 控制颜色
            第一个数字3:字体前景色
            第一个数字4:字体背景色
            第二个数字:表示颜色本身:0-7
            如果同时使用前景色和背景色:\033[3#;4#m
                \033[#m:单个数字用于控制字体加粗,下划线等功能
                \033[0m 关闭所有属性 
                \033[1m 设置高亮度 
                \033[4m 下划线 
                \033[5m 闪烁 
                \033[7m 反显 
                \033[8m 消隐 
                \033[30m -- \33[37m 设置前景色 
                \033[40m -- \33[47m 设置背景色 
                \033[nA 光标上移n行 
                \033[nB 光标下移n行 
                \033[nC 光标右移n行 
                \033[nD 光标左移n行 
                \033[y;xH设置光标位置 
                \033[2J 清屏 
                \033[K 清除从光标到行尾的内容 
                \033[s 保存光标位置 
                \033[u 恢复光标位置 
                \033[?25l 隐藏光标 
                \033[?25h 显示光标 
    eg echo -e "\033[43;31;5mdanran\033[0m"   danran添加颜色显示

七、文件格式转换

hexdump -C 查看二进制文件
dos2unix:将win记事本文件转换为Linux格式(需安装dos2unix程序包)
unix2dos:将记事本文件转换为win格式 eg unix2dos a.txt
iconf -f gb2312 a.txt -o aa.txt 将gb2312格式的a.txt文件转换为UTF-8格式的aa.txt文件
export LANG="zh_CN.UTF-8" 将系统上的英文格式转换为中文UTF-8格式

八、shell中的引用

‘’:强引用,变量替换不会进行
“”:弱引用,能够执行变量替换
``:命令引用,引用命令执行结果,命令替换的另外一个符号:$(COMMAND)
{}:括号引用    eg file{1..10}
eg touch `date +%F`

九、history

命令行历史:
    重复前一命令:
        !!
        !-1
        ctrl+p 
    !:0:执行上一条命令(去除参数)
    !:1:执行上一条命令的第一个参数
    ctrl+n  显示当前命令历史中的下一条命令,但不执行
    ctrl+j 执行当前命令
    !-n:执行history命令历史中的倒数第几条命令
    ! string:重复前一个以 “string”开头的命令
    !?string:重复前一个包括“string”的命令
    !string:p  仅打印命令历史,而不执行
    !$:p 打印输出 !$ :(上一条命令的最后一个参数)的内容
    !*:p 打印输出 !* (上一条命令的所有参数)的内容
    ^string  删除上一条命令中的第一个string
    ^string1^string2  将上一条命令中的第一个string1替换为string2
    !:gs/string1/string2  将上一条命令中所有的string1 都替换为string2
    ctrl+r 在命令历史中查找命令
    strl+g 从历史搜索模式退出
    重新调用前一个命令中的最后一个参数
        !$
        ESC .
        alt .
调用历史参数:
    command !^ : 利用上一个命令的第一个参数做cmd 的参数
    command !$ : 利用上一个命令的最后一个参数做cmd 的参数
    command !* : 利用上一个命令的全部参数做cmd 的参数
    command !:n : 利用上一个命令的第n个参数做cmd 的参数
    command !n:^ 调用第n条命令的第一个参数
    command !n:$ 调用第n条命令的最后一个参数
    command !n:m 调用第n条命令的第 第m个 参数
    command !n:* 调用第n条命令的所有

命令history
    history [-c] [-d offset] [n]
    history -anrw [filename]
    history -ps arg [arg...]
        -c:清空命令历史
        -d offset:  删除历史中指定的第offset 个命令
         n: 显示最近的n 条历史
        -a: 追加本次会话新执行的命令历史列表至历史文件
        -n: 读历史文件中未读过的行到历史列表
        -r: 读历史文件附加到历史列表
        -w: 保存历史列表到指定的历史文件
        -p: 展开历史参数成多行,但不存在历史列表中
        -s: 展开历史参数成一行,附加在历史列表后

命令历史环境变量:
    HISTSIZE:命令历史记录的条数
    HISTFILE:指定历史文件,默认为~/.bash_history
    HISTFILESIZE:命令历史文件记录历史的条数
    HISTTIMEFORMAT=“%F %T"  显示时间
    HISTIGNORE=“str1:str2:… " 忽略string1,string2 历史
    控制命令历史的记录方式:
        环境变量:HISTCONTROL
            ignoredups 默认,忽略重复的命令,连续且相同为“重复”
            ignorespace  忽略所有以空白开头的命令
            ignoreboth 相当于ignoredups, ignorespace 的组合
            erasedups 删除 重复命令
    export  变量名=" 值“
    存放在 /etc/profile 或 或 ~/.bash_profile

十、cd:切换工作目录

. :当前工作目录
..:返回上一级目录
- :切换至上一次工作的目录,

$OLDPWD变量记录了上一次所在的工作目录,改变$OLDPWD,则上一次工作目录也会改变

命令使用_第1张图片
image

改变当前PWD的路径,仅仅目录显示改变了,但是实际的路径并没有改变

-P:切换到真实路径
cd -P /bin 实际切换到的是/usr/bin目录,因为/bin为/usr/bin的链接文件

十一、ls

列出当前目录的内容或指定目录(命令本身为别名)

-a 包含隐藏文件
-l 显示额外的信息
-R 目录递归通过
-ld 目录和符号链接信息
-1 文件分行显示
–S 按从大到小排序
–t 按mtime 排序
–u 配合-t 选项,显示并按atime 从新到旧排序
–U 按目录存放顺序显示
–X 按文件后缀排序

十二、文件名统配符:globbing

*:任意长度任意字符
?: 任意单个字符
~danran:danran用户家目录
~+:当前工作目录
~-:前一个工作目录
[0-9]:匹配数字范围,只能匹配一个字符
[a-z]:字母,不分大小写
[A-Z]:字母,不区分大小写

[dan]:匹配列表中的任何的一个字符
[^dan]:匹配列表中的所有字符以外的字符
[^]:匹配指定范围之外的任意单个字符
[]:匹配指定范围内的任意单个字符
    eg [abc],[a-m],[A-Z],[a-zA-Z],[0-9],[0-9a-zA-Z]
        [:space:]:水平或垂直空白字符
        [:blank:]:水平空白字符
        [:punct:]:标点符号
        [:print:]:可打印字符
        [:lower:]:小写字母
        [:upper:]:大写字母
            [a-d] 匹配的是a A b B c C d 
        [:alpha:]:大小写字母
        [:digit:]:数字
        [:alnum:]:数字和大小写字母
        [:cntrl:]:控制(非打印字符)
        [:graph:]:图形字符
        [:xdigit:]:十六进制字符
# man 7 glob 

十三、touch 更新时间戳

> dan 创建dan文件,若文件已存在,则覆盖原文件
>> dan 创建dan文件,若文件已存在,则追加内容,并且不损坏原有的内容
touch [OPTION] FILE
    -a:仅改变atime和ctime
    -m:仅改变mtime和ctime
    -t:[[CC]yy]MMDDhhmm.ss  指定atime和mtime的时间戳
    -c:如果文件不存在,则不予创建

十四、删除文件

rm [OPTION] FILE

-i:用户交互
-f:强制删除
-r:递归
-no-preserve-root:此选项表明获取root权限删除根目录

十五、cp 复制文件

复制文件,文件属性及权限不会改变

cp [OPTION] FILE


命令使用_第2张图片
参数:
    -i:覆盖前提示是否覆盖文件
    -n:不提示直接覆盖原文件 ,-i -n最后的生效
    -r, -R:  递归复制目录及内部的所有内容
    -a: 归档,相当于-dR --preserv=all
    -d:--no-dereference --preserv=links  不复制原文件,只复制链接名
    --preserv[=ATTR_LIST](保留)
        mode:  权限
        ownership:  属主属组
        timestamp:时间戳
        links:复制链接文件
        xattr
        context   安全上下为
        all
    -p:等同--preserv=mode,ownership,timestamp
    -v:--verbose    显示复制过程
    -f:--force  如果原文件不能打开,则强制删除原文件后再次重新写入,属性发生改变

备份配置文件(-a,文件属性信息完全复制,等同于备份)

cp -a /etc/passwd{,.bak}     
cp -a /etc/passwd /etc/passwd.bak

十六、mv移动文件

-i:交互
-f:强制

十七、rename 批量更改文件名

rename ‘.txt’ '.txt.bak' *.txt  将txt后缀名更改为txt.bak
rename '.txt.bak' '' *.txt   将txt.bak后缀名清除

十八、tree显示目录树结构

-d:只显示目录
-L level:指定显示的层级数目
-P pattern:只显示由指定pattern匹配到的路径
eg  tree -L 2 -d /boot   只显示boot目录下的二级目录文件
    tree -P -L 1 /etc/rc.d   模式匹配显示一级目录数文件,包括文本文件

十九、mkdir 创建目录

-p:  递归创建目录
-v:  显示详细信息
-m MODE:  创建目录时直接指定权限  
eg:mkdir -m 644 danran   创建danran目录,权限为644

二十、rmdir 删除空目录

-p:  递归删除父空目录
-v:  显示详细信息
rm -r 递归删除目录树

二十一shred:文件粉碎工具(覆盖原文件)

彻底删除文件

shred -u file

shred会用一些随机内容覆盖文件所在的节点和数据块,并删除文件(-u参数)。
如果想清除的更彻底一点可以加-z 参数,意思是先用随机数据填充,最后再用0填充。

shred -u -z file

另外shred还可以清除整个分区或磁盘,比如想彻底清除/dev/sdb1分区的内容可以这样:

shred /dev/sdb1 (注意不要加-u参数)
还有一些其他参数如下:

-f, --force 更改权限允许写入(如有必要)
-n, --iterations=N 重写N次,默认为3次
--random-source=FILE 从指定文件读取数据
-s, --size=N 将文件粉碎为固定大小 (可使用后缀如 K、M、G)
-u, --remove 重写后截短并移除文件
-v, --verbose 显示进度
-z, --zero - add 用0覆盖数据
–help 显示帮助
–version 显示版本信息
eg shred -uzvn10 passwd 用随机数覆盖passwd文件10次,最后用0覆盖

命令使用_第3张图片

二十二、file

检查文件的类型,然后使用适当的打开命令或应用程序使用

file [options] ...
常用选项:

-b 列出文件辨识结果时,不显示文件名称
-f 列出文件中文件名的文件类型
-F 使用指定分隔符号替换输出文件名后默认的”:” 分隔符
-L 查看对应软链接对应文件的文件类型
--help

eg file -F "==" -f /etc/issue

二十三、mknod

mknod:创建设备文件
inode节点号不一样,但指向同一个设备

mknod /app/sda b 8 0     b表示设备文件,8表示设备的主设备号,0表示设备的次设备号    
    创建设备文件时,应制定文件类型b,以及主设备和次设备号      

创建空设备文件c,1为主设备号,2为次设备号

mknod /app/zonefile c 1 5

二十四、tr

tr:转换删除字符

tr [OPTION]... SET1 [SET2]
选项:

-c –C --complement:取字符集的补集
-d --delete:删除所有属于第一字符集的字符
-s --squeeze-repeats:把连续重复的字符以单独一个字符表示
-t --truncate-set1:将第一个字符集对应字符转化为第二字符集
\b:退格符
\n:换行
r:回车
\t:水平分割符
\v:垂直tab分隔符
\NNN:跟八进制字符

字符匹配
    [:alnum:]:字母和数字;
    [:alpha:]:字母;
    [:cntrl:]:控制(非打印符 )字符 
    [:digit:]:数字 
    [:graph:]:图形字符 
    [:lower:]:小写字母 
    [:print:]:可打印字符 
    [:punct:]:标点符号 
    [:space:]:空白字符 
    [:upper:]:大写字母 
    [:xdigit:]:十六进制字符
  • 使用< 来重定向标准输入

某些命令能够接受从文件中导入的STDIN:

tr ‘a-z’ ‘A-Z’< /etc/issue
该命令会把/etc/issue 中的小写字符都转换da写写字符
tr –d abc < /etc/fstab
删除fstab 文件中的所有abc 中任意字符

二十五、5.hexdump:查看二进制文件

-b:每个字节显示8字节
-c:每个字节显示ASCII字符
-C:每个字节显示为16进制和相应的ASSII字符
-d:两个字节显示为i10进制
-e:格式化输出
-n:只格式前n个长度的字符
-o:两个字节显示为8进制
-s:从偏移开始输出

二十六、cat:查看文本文件

-A,--show-all  等价于-vET,显示所有非空行符
-b:--number-nonblank  对非空输出行编号,空行不加行编号,等同于nl
-e:等价于 -vE
-E:--show-ends‘  在每行结束处显示$
-n:--number 对输出的所有行编号
-s:--squeeze-blank 压缩相邻的空行为一行
-t:与-vT等价
-T:--show-tabs 将跳字符显示为 ^I
-u:(被忽略)
-v:--show-nonprinting 使用^ 和 M-引用,除了LFD和TAB之外

二十七、strace

strace:对应用的系统调用和信号传递的跟踪结果进行分析

在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间

-o:将strace的输出写入文件filename
-c 统计每一系统调用的所执行的时间,次数和出错的次数等. 
-d 输出strace关于标准错误的调试信息. 
-f 跟踪由fork调用所产生的子进程. 
-ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号. 
-F 尝试跟踪vfork调用.在-f时,vfork不被跟踪. 
-h 输出简要的帮助信息. 
-i 输出系统调用的入口指针. 
-q 禁止输出关于脱离的消息. 
-r 打印出相对时间关于,,每一个系统调用. 
-t 在输出中的每一行前加上时间信息. 
-tt 在输出中的每一行前加上时间信息,微秒级. 
-ttt 微秒级输出,以秒了表示时间. 
-T 显示每一调用所耗的时间. 
-v 输出所有的系统调用.一些调用关于环境变量,状态,输入输出等调用由于使用频繁,默认不输出. 
-V 输出strace的版本信息. 
-x 以十六进制形式输出非标准字符串 
-xx 所有字符串以十六进制形式输出. 
-a column 

二十八、netstat:用于显示各种网络信息

-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令

二十九、chattr、lsattr

这两个命令是用来查看和改变文件、目录属性的,与chmod这个命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。

chattr命令的用法:chattr [ -RVf ] [ -v version ] [ mode ] files…
最关键的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTtu]这些字符组合的,这部分是用来控制文件的属性

+ :在原有参数设定基础上,追加参数。
- :在原有参数设定基础上,移除参数。
= :更新为指定参数设定。
A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。
S:硬盘I/O同步选项,功能类似sync。
a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。
d:即no dump,设定文件不能成为dump程序的备份目标。
i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。
j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。
s:保密性地删除文件或目录,即硬盘空间被全部收回。
u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion。

各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有superuser  (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。

应用举例:

1、用chattr命令防止系统中某个关键文件被修改:
# chattr +i /etc/resolv.conf
然后用mv /etc/resolv.conf等命令操作于该文件,都是得到Operation not permitted 的结果。vim编辑该文件时会提示W10: Warning: Changing a readonly file错误。要想修改此文件就要把i属性去掉:
chattr -i /etc/resolv.conf
# lsattr /etc/resolv.conf
会显示如下属性
----i-------- /etc/resolv.conf

工具dd

dd 命令:convert and copy a file
用法:

dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
bs=#:block size, 复制单元大小
count=# :复制多少个bs

of=file 写到所命名的文件而不是到标准输出
if=file 从所命名文件读取而不是从标准输入
bs=size 指定块大小(既是是ibs 也是obs)
ibs=size 一次读size 个byte
obs=size 一次写size 个byte
cbs=size 一次转化size 个byte
skip=blocks 从开头忽略blocks 个ibs 大小的块
seek=blocks 从开头忽略blocks 个obs 大小的块
count=n 只拷贝n个记录

conv=conversion[,conversion...] 用指定的参数转换文件

转换参数:
    ascii 转换EBCDIC为ASCII
    ebcdic 转换ASCII为EBCDIC
    lcase  把大写字符转换为小写字符
    ucase  把小写字符转换为大写字符
    nocreat  不创建输出文件
    noerror  出错时不停止
    notrunc  不截短输出文件
    sync  把每个输入块填充到ibs 个字节,不足部分用空(NUL)字 字符补齐

备份MBR:

dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

破坏MBR 中的bootloader: :

dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446

有一个大于2K的二进制文件fileA 。现在想从第64 个字节位置
开始读取,需要读取的大小是128Byts 。又有fileB, 想把上
面读取到的128Bytes 写到第32 个字节开始的位置,替换
128Bytes ,实现如下:

dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc 

备份:

dd if=/dev/sdx of=/dev/sdy 将本地的/dev/sdx 整盘备份到/dev/sdy
dd if=/dev/sdx of=/path/to/image 将/dev/sdx 全盘数据备份到指定路径的image 文件
dd if=/dev/sdx | gzip >/path/to/image.gz 备份/dev/sdx 全盘数据,并利用gzip 压缩,保存到指定路径

恢复:

dd if=/path/to/image of=/dev/sdx 将备份文件恢复到指定盘
gzip -dc /path/to/image.gz | dd of=/dev/sdx 将压缩的备份文件恢复到指定盘 

拷贝内存资料到硬盘

dd if=/dev/mem of=/root/mem.bin bs=1024 将内存里的数据拷贝到root 目录下的mem.bin 文件

从光盘拷贝iso 镜像

dd if=/dev/cdrom of=/root/cd.iso 拷贝光盘数据到root 文件夹下,并保存为cd.iso 文件

销毁磁盘数据

dd if=/dev/urandom of=/dev/sda1 利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据,执行此操作以后,/dev/sda1 将无法挂载,创建和拷贝操作无法执行  

得到最恰当的block size

dd if=/dev/zero bs=1024 count=1000000
    of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000
    of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000
    of=/root/1Gb.file
通过比较dd 指令输出中所显示的命令执行时间,即可确定系统最佳的block size

测试硬盘写速度

dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000

测试硬盘读速度

dd if=/root/1Gb.file bs=64k | dd of=/dev/null

修复硬盘

dd if=/dev/sda of=/dev/sda

当硬盘较长时间(比如1,2 年)放置不使用后,磁盘上会
产生消磁点。当磁头读到这些区域时会遇到困难,并可能
导致I/O 错误。当这种情况影响到硬盘的第一个扇区时,
可能导致硬盘报废。上边的命令有可能使这些数据起死回
生,且这个过程是安全高效的

lsof

lsof(list open files)是一个列出当前系统打开文件的工具

lsof命令的直接输出部分内容如下

命令使用_第4张图片
image

lsof输出各列信息的意义如下:

COMMAND:进程的名称 PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

lsof相关使用参数

lsof abc.txt 显示开启文件abc.txt的进程
lsof -c abc 显示abc进程现在打开的文件
lsof -c -p 1234 列出进程号为1234的进程所打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /usr/local/ 显示目录下被进程开启的文件
lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
lsof -d 4 显示使用fd为4的进程
lsof -i 用以显示符合条件的进程情况
lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
    46 --> IPv4 or IPv6
    protocol --> TCP or UDP
    hostname --> Internet host name
    hostaddr --> IPv4地址
    service --> /etc/service中的 service name (可以不止一个)
    port --> 端口号 (可以不止一个)

netstat

netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
    -t: tcp 协议相关
    -u: udp 协议相关
    -w: raw socket 相关
    -l:  处于监听状态
    -a:  所有状态
    -n:  以数字显示IP 和端口;
    -e:扩展格式
    -p:显示相关进程及PID   
常用组合:
    -tan, -uan, -tnl, -unl
显示路由表:
    netstat {--route|-r} [--numeric|-n]
        -r:显示内核路由表
        -n:数字格式
显示接口统计数据:
    netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n]
    # netstat -i
    # netstat –I=IFACE
    # ifconfig -s eno16777736

ss命令

ss [OPTION]... [FILTER]
netstat 通过遍历proc来获取socket 信息,ss使用netlink 与内核tcp_diag模块通信获取socket 信息。

选项:
    -t: tcp协议相关
    -u: udp协议相关
    -w: 裸套接字相关
    -x:unix sock相关
    -l: listen状态的连接
    -a: 所有
    -n: 数字格式
    -p: 相关的程序及PID
    -e: 扩展的信息
    -m:内存用量
    -o:计时器信息   
FILTER : [ state TCP-STATE ] [ EXPRESSION ]
TCP 的常见状态:
    tcp finite state machine:
        LISTEN:监听
        ESTABLISHED:已建立的连接
        FIN_WAIT_1
        FIN_WAIT_2
        SYN_SENT
        SYN_RECV
        CLOSED
    EXPRESSION:
        dport =
        sport =
        示例:’( dport = :ssh or sport = :ssh )’
常用组合:
    -tan, -tanl, -tanlp, -uan

常见用法:
    ss -l  显示本地打开的所有端口
    ss -pl  显示每个进程具体打开的socket
    ss -t -a  显示所有tcp socket
    ss -u -a  显示所有的UDP Socekt
    ss -o state established '( dport = :ssh or sport = :ssh)'  显示所有已建立的ssh 连接
    ss -o state established '( dport = :http or sport = :http )'  显示所有已建立的HTTP 连接
    ss -s  列出当前socket详细信息 

ping

ping命令用于:确定网络和各外部主机的状态;跟踪和隔离硬件和软件问题

-d 使用Socket的SO_DEBUG功能。
-f 极限检测。大量且快速地送网络封包给一台机器,看它的回应。
-n 只输出数值。
-q 不显示任何传送封包的信息,只显示最后的结果。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。
-R 记录路由过程。
-v 详细显示指令的执行过程。

-c 数目:在发送指定数目的包后停止。 -i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。 -I 网络界面:使用指定的网络界面送出数据包。 -l 前置载入:设置在送出要求信息之前,先行发出的数据包。 -p 范本样式:设置填满数据包的范本样式。 -s 字节数:指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。 -t 存活数值:设置存活数值TTL的大小。

ab

ab命令是Apache的Web服务器的性能测试工具,它可以测试安装Web服务器每秒种处理的HTTP请求。

ab(选项)(参数)

选项
    -A:指定连接服务器的基本的认证凭据;    
    -c:指定一次向服务器发出请求数;
    -C:添加cookie;
    -g:将测试结果输出为“gnuolot”文件;
    -h:显示帮助信息;
    -H:为请求追加一个额外的头;
    -i:使用“head”请求方式;
    -k:激活HTTP中的“keepAlive”特性;
    -n:指定测试会话使用的请求数;
    -p:指定包含数据的文件;
    -q:不显示进度百分比;
    -T:使用POST数据时,设置内容类型头;
    -v:设置详细模式等级;
    -w:以HTML表格方式打印结果;
    -x:以表格方式输出时,设置表格的属性;
    -X:使用指定的代理服务器发送请求;
    -y:以表格方式输出时,设置表格属性。
参数:被测主机    

nmcli 命令

  • 地址配置工具:nmcli
nmcli [ OPTIONS ] OBJECT { COMMAND | help }
    device - show and manage network interfaces
    nmcli device help
    connection - start, stop, and manage network connections
    nmcli connection help
修改IP 地址等属性:
    #nmcli connection modify IFACE [+|-]setting.property value
        setting.property:
        ipv4.addresses ipv4.gateway
        ipv4.dns1 ipv4.method manual | auto
修改配置文件执行生效:systemctl restart network
                    nmcli con reload
nmcli 命令生效: nmcli con down eth0 ;nmcli con up eth0

ethtool

ethtool命令用于获取以太网卡的配置信息,或者修改这些配置

-a 查看网卡中 接收模块RX、发送模块TX和Autonegotiate模块的状态:启动on 或 停用off。 
-A 修改网卡中 接收模块RX、发送模块TX和Autonegotiate模块的状态:启动on 或 停用off。 
-c display the Coalesce information of the specified ethernet card。 
-C Change the Coalesce setting of the specified ethernet card。 
-g Display the rx/tx ring parameter information of the specified ethernet card。 
-G change the rx/tx ring setting of the specified ethernet card。 
-i 显示网卡驱动的信息,如驱动的名称、版本等。 
-d 显示register dump信息, 部分网卡驱动不支持该选项。 
-e 显示EEPROM dump信息,部分网卡驱动不支持该选项。 
-E 修改网卡EEPROM byte。 
-k 显示网卡Offload参数的状态:on或off,包括rx-checksumming、tx-checksumming等。 
-K 修改网卡Offload参数的状态。 
-p 用于区别不同ethX对应网卡的物理位置,常用的方法是使网卡port上的led不断的闪;N指示了网卡闪的持续时间,以秒为单位。 
-r 如果auto-negotiation模块的状态为on,则restarts auto-negotiation。 
-S 显示NIC- and driver-specific的统计参数,如网卡接收/发送的字节数、接收/发送的广播包个数等。 
-t 让网卡执行自我检测,有两种模式:offline or online。 
-s 修改网卡的部分配置,包括网卡速度、单工/全双工模式、mac地址等。

declare [ 选项] 变量名

-r  声明或显示只读变量
-i  将变量定义为整型数
-a  将变量定义为数组
-A  将变量定义为关联数组
-f  显示此脚本前定义过的所有函数名及其内容
-F  仅显示此脚本前定义过的所有函数名
-x  声明或显示环境变量和函数
-l 声明变量为小写字母 declare –l var=UPPER
-u 声明变量为大写字母 declare –u var=lower

mktemp命令:创建并显示临时文件,可避免冲突

mktemp [OPTION]... [TEMPLATE]


TEMPLATE: filename.XXX
    X至少要出现三个
OPTION: :
    -d:创建临时目录
    -p DIR或--tmpdir=DIR :指明临时文件所存放目录位置

install

语法
    install [OPTION]... [-T] SOURCE DEST 
    install [OPTION]... SOURCE... DIRECTORY 
    install [OPTION]... -t DIRECTORY SOURCE... 
    install [OPTION]... -d DIRECTORY..

选项
    --backup[=CONTROL]:为每个已存在的目的地文件进行备份。 
    -b:类似 --backup,但不接受任何参数。
    -c:(此选项不作处理)。
    -d:--directory:所有参数都作为目录处理,而且会创建指定目录的所有主目录。
    -D:创建<目的地>前的所有主目录,然后将<来源>复制至<目的地>;在第一种使用格式中有用。
    -g:--group=组:自行设定所属组,而不是进程目前的所属组。
    -m:--mode=模式:自行设定权限模式 (像chmod),而不是rwxr-xr-x。
    -o:--owner=所有者:自行设定所有者 (只适用于超级用户)。
    -p:--preserve-timestamps:以<来源>文件的访问/修改时间作为相应的目的地文件的时间属性。
    -s:--strip:用strip命令删除symbol table,只适用于第一及第二种使用格式。
    -S:--suffix=后缀:自行指定备份文件的<后缀>。
    -t, --target-directory=目录 将源文件所有参数复制到指定目录
    -T, --no-target-directory 将目标文件视为普通文件
    -v:--verbose:处理每个文件/目录时印出名称。
    -Z, --context=CONTEXT  设置文件和目录的SELinux安全环境
    --help:显示此帮助信息并离开。
    --version:显示版本信息并离开。

chkconfig

  • chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
  • 语法:
chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]

参数:
    –add 增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
–del 删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。
–level<等级代号>  指定读系统服务要在哪一个执行等
级中开启或关毕。

chkconfig –list [name]:显示所有运行级系统服务的运行状态信息(on或off)。如果指定了name,那么只显示指定的服务在不同运行级的状态。
chkconfig –add name:增加一项新的服务。chkconfig确保每个运行级有一项启动(S)或者杀死(K)入口。如有缺少,则会从缺省的init脚本自动建立。
chkconfig –del name:删除服务,并把相关符号连接从/etc/rc[0-6].d删除。
chkconfig [--level levels] name:设置某一服务在指定的运行级是被启动,停止还是重置。

grub-install

  • 一、菜单命令
    菜单命令只能用于grub配置文件的全局配置部分,不能用在grub命令行交互界面,菜单命令在配置文件中应放在其它命令之前。
default  //设置默认启动的菜单项 
fallback  //设置启动某菜单项失败后反回的菜单项 
hiddenmenu //隐藏菜单界面 
timeout //设置菜单自动启动的延时时间 
title  //开始一个菜单项 
  • 二、常规命令
    常规命令可以应该于配置文件和grub命令行交互界面,可使用的常规命令有
bootp //通过bootp初始化网络设备 
color //设置菜单界面的颜色 
device //指定设备文件作为驱动器 
dhcp //通过DHCP初始化网络设备 
hide  //隐藏某分区 
ifconfig //手工配置网络设备 
pager //改变内部页程序的状态 
partnew //新建一个主分区 
parttype //改变分区的类型 
password 为菜单界面设置口令 
rarp //通过RARP初始化网络设置 
serial //设置串口设备 
setkey //设置键盘映射 
splashimage //设置GRUB启动时的背景图片文件 
termainal //选择终端类型  
tftpserver //指定TFTP服务器 
unhide //还原某隐藏分区 
  • 三、命令行和菜单项命令
    命令行和菜单项命令可应该于GRUB配置文件的菜单项设置中,也可以用在GRUB命令交互界面。
bolcklist //显示某文件所在分区位置(block list notation) 
boot //启动操作系统 
cat //显示文件内容  
chainloader //把启动控制权软交给另外的启动引导器 
cmp //比较两个文件 
configfile //加载已存在的GRUB配置文件 
debug //设置为debug模式 
displayapm //显示APM BIOS信息 
displaymem //显示内存配置 
embed //嵌入Stage 1.5文件 
find //查找包括某文件的所有设备 
fstest //测试文件系统 
geometry //显示某驱动器的物理信息 
halt //停止计算机运行(软件关机) 
help //显示GRUB的命令帮助信息 
impsprobe //查询对称多处理器(SMP)的信息 
initrd //加载initrd文件 
install //安装GRUB 
ioprobe //查询某驱动器的输入输出(I/O)端口 
kernel //引导操作系统内核  
lock //锁定某GRUB导菜单项,使其输入密码后才可启动 
makeactive //激活某主分区 
map //虚拟映射某驱动器 
md5crypt //使用MD5加密口令 
module //加载模块 
modulenounzip //加载模块不进行解压 
pause //暂停并等待按键 
quit //退出GRUB 
reboot //重新启动计算机 
read //读取内存中的内容 
root //设置GRUB的root设备 
rootnoverify //设备GRUB的root设备但不装载文件系统 
savedefault //保存当前的启动菜单项为默认启动 
setup //自动安装GRUB 
testload //从文件系统中测试读取某文件 
testvbe //测试VESA BIOS EXTENSION 
uppermem //强制设置主机上位内存的大小 
vbeprobe //查询VESA BIOS EXTENSION信息

sysctl

  • sysctl设置和显示在/proc/sys目录中的内核参数.能用sysctl来设置或重新设置连网功能,如IP转发、IP碎片去除及源路由检查等。用户只需要编辑/etc/sysctl.conf文件,即可手工或自动执行由sysctl控制的功能。
参数
    -w 临时改动某个指定参数的值,如
        sysctl -w net.ipv4.ip_forward=1
    -a 显示所有的系统参数
    -p 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载

uname

  • uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。
语法 
    uname(选项) 
选项 
    -a或--all:显示全部的信息;
    -m或--machine:显示电脑类型;
    -n或-nodename:显示在网络上的主机名称;
    -r或--release:显示操作系统的发行编号;
    -s或--sysname:显示操作系统名称;
    -v:显示操作系统的版本;
    -p或--processor:输出处理器类型或"unknown";
    -i或--hardware-platform:输出硬件平台或"unknown";
    -o或--operating-system:输出操作系统名称;
    --help:显示帮助;
    --version:显示版本信息。

modprobe

  • modprobe命令用于智能地向内核中加载模块或者从内核中移除模块
选项
    -a或--all:载入全部的模块;
    -c或--show-conf:显示所有模块的设置信息;
    -d或--debug:使用排错模式;
    -l或--list:显示可用的模块;
    -r或--remove:模块闲置不用时,即自动卸载模块;
    -t或--type:指定模块类型;
    -v或--verbose:执行时显示详细的信息;
    -V或--version:显示版本信息; 
    -help:显示帮助。

modinfo

  • modinfo会显示kernel模块的对象文件,以显示该模块的相关信息。

    语法:
    modinfo [-adhpV][模块文件]
    参数:
    -a或--author  显示模块开发人员。
    -n:指定显示路径
    -d或--description  显示模块的说明。
    -h或--help  显示modinfo的参数使用方法。
    -p或--parameters  显示模块所支持的参数。
    -V或--version  显示版本信息。

depmod

  • depmod命令可产生模块依赖的映射文件,在构建嵌入式系统时,需要由这个命令来生成相应的文件,由modprobe使用。
-a或--all:分析所有可用的模块;
-d或debug:执行排错模式;
-e:输出无法参照的符号;
-i:不检查符号表的版本;
-m<文件>或system-map<文件>:使用指定的符号表文件;
-s或--system-log:在系统记录中记录错误;
-v或--verbose:执行时显示详细的信息;
-V或--version:显示版本信息;
--help:显示帮助。

insmod

  • insmod命令用于将给定的模块加载到内核中
    选项
    -f:不检查目前kernel版本与模块编译时的kernel版本是否一致,强制将模块载入;
    -k:将模块设置为自动卸除;
    -m:输出模块的载入信息;
    -o<模块名称>:指定模块的名称,可使用模块文件的文件名;
    -p:测试模块是否能正确地载入kernel;
    -s:将所有信息记录在系统记录文件中;
    -v:执行时显示详细的信息;
    -x:不要汇出模块的外部符号;
    -X:汇出模块所有的外部符号,此为预设置。

rmmod

  • rmmod命令用于从当前运行的内核中移除指定的内核模块
-v:显示指令执行的详细信息;
-f:强制移除模块,使用此选项比较危险;
-w:等待着,直到模块能够被除时在移除模块;
-s:向系统日志(syslog)发送错误信息。

你可能感兴趣的:(命令使用)