一、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,则上一次工作目录也会改变
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
参数:
-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覆盖
二十二、file
检查文件的类型,然后使用适当的打开命令或应用程序使用
file [options] <filename>...
常用选项:-b 列出文件辨识结果时,不显示文件名称
-f 列出文件中文件名的文件类型
-F 使用指定分隔符号替换输出文件名后默认的”:” 分隔符
-L 查看对应软链接对应文件的文件类型
--helpeg 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命令的直接输出部分内容如下
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 详细显示指令的执行过程。
<p>-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)发送错误信息。
网友评论