linux常用命令大群,linux讨论群

linux常用命令及用法

linux常用命令及用法如下:

创新互联公司专注于企业网络营销推广、网站重做改版、麦盖提网站定制设计、自适应品牌网站建设、HTML5建站电子商务商城网站建设、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为麦盖提等各大城市提供网站开发制作服务。

pwd 显示工作路径

shutdown -h now 关闭系统   /halt 关闭系统

shutdown -r now 重启 / reboot 重启

systemctl stop firewalld关闭防火墙

ip addr查看ip地址

1、cd命令:这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。如:

cd /home    进入根目录下面的home目录 

cd home    进入当前目录下的home目录 

cd ..   返回上一层目录 

cd ../.. 返回上两级目录

cd / 返回跟目录

cd - 返回上次所在的目录

2、ls命令:这是一个非常有用的查看文件与目录的命令,list之意,它的参数非常多,下面就列出一些我常用的参数吧,如下:

ls  查看目录中的文件 

ls -a列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来

ls -l   显示文件和目录的详细资料 

3、mkdir命令:创建

mkdir dir1 创建一个叫做 'dir1' 的目录'

mkdir dir1 dir2 同时创建两个目录

4、rm命令:删除

rm -f file1 删除一个叫做 'file1' 的文件'

rmdir dir1 删除一个叫做 'dir1' 的目录' (空目录才能删除)

rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容

rm -rf dir1 dir2 同时删除两个目录及它们的内容

5、mv命令:该命令用于移动文件、目录或更名,move之意,它的常用参数如下:-f 如果目标文件已经存在,不会询问而直接覆盖

mv file1 file2   把文件file1重命名为file2

mv file1 file2 dir   把文件file1、file2移动到目录dir中

6、cp命令:该命令用于复制文件,copy之意,它还可以把多个文件一次性地复制到一个目录下, 它的常用参数如下:

cp  -a file1 file2  连同文件的所有特性把文件file1复制成文件file2

cp dir/* .  复制一个目录下的所有文件到当前工作目录 

cp -a /tmp/dir1 .  复制一个目录到当前工作目录 

cp -a dir1 dir2  复制一个目录

7、find命令:find是一个基于查找的功能非常强大的命令

find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录 

find / -user user1 搜索属于用户 'user1' 的文件和目录 

find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件 

find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件 

find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件

27个常用的 Linux 命令

ls会列举出当前工作目录的内容(文件或文件夹)。

mkdir 用于新建一个新目录

显示当前工作目录

切换文件路径,cd 将给定的文件夹(或目录)设置成当前工作目录。

删除给定的目录。

rm 会删除给定的文件

cp 命令对文件进行复制

mv 命令对文件或文件夹进行移动,如果文件或文件夹存在于当前工作目录,还可以对文件或文件夹进行重命名。

cat 用于在标准输出(监控器或屏幕)上查看文件内容

ail 默认在标准输出上显示给定文件的最后10行内容,可以使用tail -n N 指定在标准输出上显示文件的最后N行内容。

less 按页或按窗口打印文件内容。在查看包含大量文本数据的大文件时是非常有用和高效的。你可以使用Ctrl+F向前翻页,Ctrl+B向后翻页。

grep 在给定的文件中搜寻指定的字符串。grep -i “” 在搜寻时会忽略字符串的大小写,而grep -r “” 则会在当前工作目录的文件中递归搜寻指定的字符串。

这个命令会在给定位置搜寻与条件匹配的文件。你可以使用find -name 的-name选项来进行区分大小写的搜寻,find -iname 来进行不区分大小写的搜寻。

tar命令能创建、查看和提取tar压缩文件。tar -cvf 是创建对应压缩文件,tar -tvf 来查看对应压缩文件,tar -xvf 来提取对应压缩文件。

gzip 命令创建和提取gzip压缩文件,还可以用gzip -d 来提取压缩文件。

unzip 对gzip文档进行解压。在解压之前,可以使用unzip -l 命令查看文件内容。

help会在终端列出所有可用的命令,可以使用任何命令的-h或-help选项来查看该命令的具体用法。图就省略啦,会有详细列表显示出来的。

whatis 会用单行来描述给定的命令,就是解释当前命令。

exit用于结束当前的终端会话。

ping 通过发送数据包ping远程主机(服务器),常用与检测网络连接和服务器状态。

who能列出当前登录的用户名。

su 用于切换不同的用户。即使没有使用密码,超级用户也能切换到其它用户。

uname会显示出关于系统的重要信息,如内核名称、主机名、内核版本、处理机类型等等,使用uname -a可以查看所有信息。

df查看文件系统中磁盘的使用情况–硬盘已用和可用的存储空间以及其它存储设备。你可以使用df -h将结果以人类可读的方式显示。

ps显示系统的运行进程。

top命令会默认按照CPU的占用情况,显示占用量较大的进程,可以使用top -u 查看某个用户的CPU使用排名情况。

shutdown用于关闭计算机,而shutdown -r用于重启计算机。这个我就不试了......

linux常用的命令有哪些

Linux运维人员必会的120个命令

来自《跟老男孩学Linux运维:核心系统命令实战》一书

前言

第1章 Linux命令行简介 / 1

1.1Linux命令行概述 / 1

1.2在Linux命令行下查看命令帮助 / 4

1.3Linux shutdown reboot halt / 9

关机:

shutdown -h now

halt

init 0

第2章 文件和目录操作命令 / 13

2.1pwd:显示当前所在的位置 / 13

2.2cd:切换目录 / 16

2.3tree:以树形结构显示目录下的内容 / 18

2.4mkdir:创建目录 / 22

2.5touch:创建空文件或改变文件的时间戳属性 / 27

2.6ls:显示目录下的内容及相关属性信息 / 30

2.7cp:复制文件或目录 / 39

2.8mv:移动或重命名文件 / 42

2.9rm:删除文件或目录 / 45

2.10rmdir:删除空目录 / 48

2.11ln:硬链接与软链接 / 49

2.12readlink:查看符号链接文件的内容 / 54

2.13find:查找目录下的文件 / 55

2.14xargs:将标准输入转换成命令行参数 / 68

2.15rename:重命名文件 / 71

2.16basename:显示文件名或目录名 / 72

2.17dirname:显示文件或目录路径 / 72

2.18chattr:改变文件的扩展属性 / 73

2.19lsattr:查看文件扩展属性 / 75

2.20file:显示文件的类型 / 76

2.21md5sum:计算和校验文件的MD5值 / 77

2.22chown:改变文件或目录的用户和用户组 / 80

2.23chmod:改变文件或目录权限 / 81

2.24chgrp:更改文件用户组 / 85

2.25umask:显示或设置权限掩码 / 86

2.26老男孩从新手成为技术大牛的心法 / 90

第3章 文件过滤及内容编辑处理命令 / 91

3.1cat:合并文件或查看文件内容 / 91

3.2tac:反向显示文件内容 / 103

3.3more:分页显示文件内容 / 104

3.4less:分页显示文件内容 / 107

3.5head:显示文件内容头部 / 109

3.6tail:显示文件内容尾部 / 111

3.7tailf:跟踪日志文件 / 114

3.8cut:从文本中提取一段文字并输出 / 115

3.9split:分割文件 / 117

3.10paste:合并文件 / 118

3.11sort:文本排序 / 123

3.12join:按两个文件的相同字段合并 / 127

3.13uniq:去除重复行 / 129

3.14wc:统计文件的行数、单词数或字节数 / 131

3.15iconv:转换文件的编码格式 / 133

3.16dos2unix:将DOS格式文件转换成UNIX格式 / 134

3.17diff:比较两个文件的不同 / 135

3.18vimdiff:可视化比较工具 / 138

3.19rev:反向输出文件内容 / 139

3.20tr:替换或删除字符 / 140

3.21od:按不同进制显示文件 / 143

3.22tee:多重定向 / 145

3.23vi/vim:纯文本编辑器 / 147

3.24老男孩逆袭思想:做Linux运维的多个好处 / 152

第4章 文本处理三剑客 / 153

4.1grep:文本过滤工具 / 153

4.2sed:字符流编辑器 / 159

4.3awk基础入门 / 165

第5章 Linux信息显示与搜索文件命令 / 176

5.1uname:显示系统信息 / 176

5.2hostname:显示或设置系统的主机名 / 178

5.3dmesg:系统启动异常诊断 / 179

5.4stat:显示文件或文件系统状态 / 181

5.5du:统计磁盘空间使用情况 / 183

5.6date:显示与设置系统时间 / 186

5.7echo:显示一行文本 / 190

5.8watch:监视命令执行情况 / 193

5.9which:显示命令的全路径 / 195

5.10whereis:显示命令及其相关文件全路径 / 196

5.11locate:快速定位文件路径 / 197

5.12updatedb:更新mlocate数据库 / 199

5.13老男孩逆袭思想:新手在工作中如何问问题不会被鄙视 / 200

第6章 文件备份与压缩命令 / 201

6.1tar:打包备份 / 201

6.2gzip:压缩或解压文件 / 208

6.3zip:打包和压缩文件 / 211

6.4unzip:解压zip文件 / 212

6.5scp:远程文件复制 / 214

6.6rsync:文件同步工具 / 216

6.7老男孩逆袭思想:新手如何高效地提问 / 220

第7章 Linux用户管理及用户信息查询命令 / 222

7.1 useradd:创建用户 / 222

7.2usermod:修改用户信息 / 227

7.3userdel:删除用户 / 229

7.4groupadd:创建新的用户组 / 230

7.5groupdel:删除用户组 / 231

7.6passwd:修改用户密码 / 232

7.7chage:修改用户密码有效期 / 237

7.8chpasswd:批量更新用户密码 / 238

7.9su:切换用户 / 240

7.10visudo:编辑sudoers文件 / 242

7.11sudo:以另一个用户身份执行命令 / 244

7.12id:显示用户与用户组的信息 / 248

7.13w:显示已登录用户信息 / 249

7.14who:显示已登录用户信息 / 250

7.15users:显示已登录用户 / 252

7.16whoami:显示当前登录的用户名 / 253

7.17last:显示用户登录列表 / 253

7.18lastb:显示用户登录失败的记录 / 254

7.19lastlog:显示所有用户的最近登录记录 / 255

第8章 Linux磁盘与文件系统管理命令 / 257

8.1fdisk:磁盘分区工具 / 257

8.2partprobe:更新内核的硬盘分区表信息 / 265

8.3tune2fs:调整ext2/ext3/ext4文件系统参数 / 266

8.4parted:磁盘分区工具 / 268

8.5mkfs:创建Linux文件系统 / 272

8.6dumpe2fs:导出ext2/ext3/ext4文件系统信息 / 274

8.7resize2fs:调整ext2/ext3/ext4文件系统大小 / 275

8.8fsck:检查并修复Linux文件系统 / 278

8.9dd:转换或复制文件 / 281

8.10mount:挂载文件系统 / 284

8.11umount:卸载文件系统 / 288

8.12df:报告文件系统磁盘空间的使用情况 / 289

8.13mkswap:创建交换分区 / 293

8.14swapon:激活交换分区 / 294

8.15swapoff:关闭交换分区 / 295

8.16sync:刷新文件系统缓冲区 / 296

第9章 Linux进程管理命令 / 298

9.1ps:查看进程 / 298

9.2pstree:显示进程状态树 / 305

9.3pgrep:查找匹配条件的进程 / 306

9.4kill:终止进程 / 307

9.5killall:通过进程名终止进程 / 310

9.6pkill:通过进程名终止进程 / 311

9.7top:实时显示系统中各个进程的资源占用状况 / 313

9.8nice:调整程序运行时的优先级 / 320

9.9renice:调整运行中的进程的优先级 / 323

9.10nohup:用户退出系统进程继续工作 / 324

9.11strace:跟踪进程的系统调用 / 325

9.12ltrace:跟踪进程调用库函数 / 332

9.13runlevel:输出当前运行级别 / 334

9.14init:初始化Linux进程 / 335

9.15service:管理系统服务 / 335

第10章 Linux网络管理命令 / 338

10.1ifconfig:配置或显示网络接口信息 / 338

10.2ifup:激活网络接口 / 343

ifup eth0

10.3ifdown:禁用网络接口 / 343

ifdown eth0

service network restart(/etc/init.d/network restart) 激活整个网络,所有网卡。

10.4route:显示或管理路由表 / 344

10.5arp:管理系统的arp缓存 / 350

10.6ip:网络配置工具 / 351

10.7netstat:查看网络状态 / 358

10.8ss:查看网络状态 / 362

10.9ping:测试主机之间网络的连通性 / 363

10.10traceroute:追踪数据传输路由状况 / 366

10.11arping:发送arp请求 / 367

10.12telnet:远程登录主机 / 369

10.13nc:多功能网络工具 / 370

10.14ssh:安全地远程登录主机 / 373

10.15wget:命令行下载工具 / 376

10.16mailq:显示邮件传输队列 / 379

10.17mail:发送和接收邮件 / 381

10.18nslookup:域名查询工具 / 386

10.19dig:域名查询工具 / 389

10.20host:域名查询工具 / 393

10.21nmap:网络探测工具和安全/端口扫描器 / 394

10.22tcpdump:监听网络流量 / 398

第11章 Linux系统管理命令 / 407

11.1lsof:查看进程打开的文件 / 407

11.2uptime:显示系统的运行时间及负载 / 411

11.3free:查看系统内存信息 / 411

11.4iftop:动态显示网络接口流量信息 / 413

11.5vmstat:虚拟内存统计 / 415

11.6mpstat:CPU信息统计 / 419

11.7iostat:I/O信息统计 / 420

11.8iotop:动态显示磁盘I/O统计信息 / 423

11.9sar:收集系统信息 / 425

11.10chkconfig:管理开机服务 / 430

11.11ntsysv:管理开机服务 / 433

11.12 setup:系统管理工具 / 434

11.13ethtool:查询网卡参数 / 436

11.14mii-tool:管理网络接口的状态 / 437

11.19rpm:RPM包管理器 / 443

11.20yum:自动化RPM包管理工具 / 446

top命令

第12章 Linux系统常用内置命令 / 450

12.1Linux内置命令概述 / 450

12.2Linux内置命令简介 / 450

12.3Linux常用内置命令实例 / 452

Linux 史上最全命令大全

1、ls命令

cd /root

ls #显示当前目录下所有的非隐藏文件

ls -a #显示当前目录下所有文件,包含隐藏文件

ls -l #显示当前目录下所有的非隐藏文件的详情

ls -al #显示当前目录下所有文件,包含隐藏文件 的详情

ls -lh #以列表形式显示当前目录下所有的非隐藏文件的大小(K M T)

ls -alh #以列表形式显示所有文件,包含隐藏文件的文件大小(K M T)

常用的组合:

ls

ll #等价于 ls -l

ls /etc #显示/etc目录下的文件

2:pwd命令

用来显示当前所在的路径

绝对路径: 从/目录开始的路径

/root

/etc/sysconf

/opt/server/data-integration/libswt/win64

相对路径: 相对当前的路径

3、mkdir命令

cd /root

mkdir mytest #在当前目录创建文件夹

mkdir -p 111/222/333 #一次创建多级文件夹

mkdir /root/mydemo #使用绝对路径来创建

mkdir mydemo2 #使用相对对路径来创建

4、rm命令

这个命令既可以删除文件,也可以删除目录

删文件:

cd /root

rm a.txt #删除时,会给出提醒确认,输入y删除,n不删除

rm -f b.txt #强制删除 等价于 rm -f /root/b.txt

rm ../dir2/b.txt

touch a.java b.java c.java

rm a.java b.java c.java #一次可以删除多个文件

rm *.java -fr #可以删除当前目录下的所有.java文件

cd dir

rm * -fr #删除当前目录的所有内容

删目录:

rm -r 111 #删除目录,依次提醒删除

rm -rf mytest #强制删除 等价于 rm mytest -fr

常用组合:

rm -fr 文件或目录

5、cd命令

cd 命令可以进入一个目录,类似于对windows上的文件夹进行双击

cd #直接cd 可以从任何一个目录回到/root目录

cd /root #进入root目录

cd /opt/server/data-integration/system/

cd .. #回到上一级目录

cd ../.. #回到上上一级目录

cd - #可以在最近的两次目录之间切换

cd /root

mdkir dir1 dir2

cd dir1

cd ../dir2 #使用相对路径 /中国/广东省/深圳市/宝安区/留仙二路/78号

6、历史命令和table补全

使用上下方向键可以找出历史命令

table键:

cd /opt/ #两次table可以列出/opt目录下所有的文件和子目录

cd /opt/s #一次table可以自动补全目录内容,前提是/opt目录下只有一个s开头的目录

7、touch命令

cd /root

touch a.java #在当前目录创建a.txt文件

touch b.java c.java #创建多个文件

touch /root/d.java #通过绝对路径创建

8、mv命令

移动:

1、mv 文件 目录 #将文件移动到目录中区

cd /root/dir1

touch a.txt

mv a.txt /root/dir2 #等价于 mv a.txt ../dir2

2、 mv 目录1 目录2 #将目录1移动到目录2下面(前提是目录2必须存在)

cd /root

mv dir2 dir1 #将dir2移动到dir1下面

重命名:

1、mv 文件1 文件2 #给文件重命名(文件2不能存在)

cd /root

mv a.txt aaa.txt #将a.txt 重命名为aaa.txt

2、mv 目录1 目录2 #给目录重命名(目录2不能存在)

cd /root

mv dir1 dirx #将dir1重命名为dirx

9、cat命令

显示文件内容

cd /root

cat user.txt

10、cp命令

复制文件

cd /root

cp user.txt user2.txt

cp user.txt /opt/ #将当前目录的user.txt 复制到/opt目录,文件名保持不变

cp user.txt /opt.user2.txt #将当前目录的user.txt 复制到/opt目录,文件名改为user2.txt

cp /opt/server/data-integration/pan.sh ./ #将指定目录里的文件复制到当前目录(.后边的/可以去掉)

cp /opt/server/data-integration/pan.sh ./dirx #将指定目录里的文件复制到当前目录下的dirx目录(.后边的/比可以去掉)

cp /opt/server/data-integration/pan.sh /root/dirx #作用同上

11、解压和压缩

Linux的压缩包后缀一般是: .tar.gz

解压:

.tar.gz

将snappy-1.1.1.tar.gz上传到/root/dir1目录

tar -zxvf snappy-1.1.1.tar.gz #默认解压到当前目录

tar -xvf snappy-1.1.1.tar.gz #默认解压到当前目录

tar -xvf snappy-1.1.1.tar.gz -C /opt #将压缩包解压到/opt目录

.zip格式

unzip mysql-connector-java-8.0.13.zip #默认解压到当前目录

unzip -d /opt mysql-connector-java-8.0.13.zip #解压到指定目录

压缩:

.tar.gz

tar -czvf snappy-1.1.1.tar.gz snappy-1.1.1 #将snappy-1.1.1文件夹进行打包压缩

tar -czvf /root/dir/snappy-1.1.1.tar.gz /opt/server/snappy-1.1.1

.zip格式

zip -r mysql-connector-java-8.0.13.zip mysql-connector-java-8.0.13/

12、find命令

用来实现文件的查找

find / -name 'a.txt' #从/目录开始查找a.txt文件

find / -name 'ins*' #从/目录开始查找以ins开头的文件

find / -type f -size +100M #查找/目录下文件大小大于100M的文件

13、grep命令

grep lang anaconda-ks.cfg #从anaconda-ks.cfg文件中查找包含lang的内容

14、ps命令

ps #查看依赖终端的进程

ps -ef #查看Linux系统中所有的进程

15、kill命令

kill -9 进程的pid #每次启动进程时,pid会发生变化,但是进程运行期间pid不会变化

16、管道 |

管道就是把前边命令的结果作为后边命令的输入

ps -ef | grep mysql #查找和mysql相关的进程

ll /etc | grep java #在/etc目录中查找java相关的文件

17、用户的操作

用户创建和密码设置

useradd itheima #创建新用户itheima

passwd itheima #设置用户itheima密码

用户删除

userdel -r itheima #删除用户itheima

18、文件的权限

所属用户: root 文件的创建者

所属用户组: root 和文件创建者在一个组的用户

其他用户: itcast 既不是文件创建者,也和文件创建者不在同一组

r: 可读

w:可写

x: 可执行

chmod命令:

方式1:

chmod u+rw a.txt #在所属用户之前的权限基础上添加可读和可写权限

chmod u=rw a.txt #将所属用户的权限直接修改为可读,可写

chmod +x #给所属用户,所属用户组和其他用户全部加上可执行权限

方式2:

chmod 777 a.txt #给所有用户加上所有权限

19、clear命令

用来清屏

快捷键: ctrl + l

20、history命令

用来查看所有的历史命令

21:vi编辑器的使用

vi a.txt #打开a.txt文件

vim a.txt #vim是vi的增强

22、网络管理命令

hostname :查看主机名

修改主机名: /etc/hostname

ifconfig :查看ip地址

修改ip地址: /etc/sysconfig/network-scripts/ifcfg-ens33

服务问题:

service network restart

Linux常用命令

1、ls命令

ls是list的缩写,常用命令为ls(显示出当前目录列表),ls -l(详细显示当前目录列表),ls -lh(人性化的详细显示当前目录列表),ls -a(显示出当前目录列表,包含隐藏文件)

2、cd 命令

cd是change direcory的缩写,常用命令为 cd 目录,cd ..为返回上级目录,cd - 返回上次所在目录

3、pwd命令

常用命令为pwd 显示当前所在目录

4、mkdir命令

mkdir命令为创建空目录命令,通常用法为mkdir 目录名,mkdir -p 目录名/目录名 可以递归创建多个不存在的目录

5、rm命令

rm为删除命令remove,rm 文件,谨慎操作

6、rmdir命令

rm为删除命令remove direcory,rm 目录,谨慎操作

7、mv命令

mv命令move,移动剪切命令,mv 文件 目录,mv 文件 文件(会覆盖)

8、cp命令

cp命令为copy命令,复制文件或目录到别的目录里面,cp 文件/目录 目录/文件

9、touch命令

touch命令创建空文件,比如touch xx.txt,touch 目录 文件

10、cat命令

cat命令查看当前文件内容,cat fi.txt f2.txt f3.txt合并文件内容,cat -n 对所有行进行编号

11、nl命令

nl命令 为文件加入显示行号,nl 文件名,nl -b a 文件名,将空行也加如行号

12、more 命令

more命令 按页显示文件内容,more 文件名,more -2 文件名 每2行显示一页

13、less命令

less命令查看文件内容,可以上下翻页,less 文件名

14、head命令

head命令可以查看文件前几行内容,head -n 2 文件名

15、tail命令

tail命令可以查看文件后几行内容,tail -n 2 文件名

16、which命令

which 可以执行文件名称,显示路径

17、whereis命令

whereis -m svn 查出说明文档路径,whereis -s svn 找source源文件。

18、locate命令

locate /etc/m 搜索ect目录下所有m开头的文件

19、find 命令

find . -name "*.log"根据关键字查找

20、find exec命令

ls -l命令放在find命令的-exec选项中 find . -type f -exec ls -l {} ;

21、find xargs命令

find . -type f -print | xargs file查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件

22、ls -lih命令

详细的文件属性

23、zmodem

linux常用命令

linux常用命令如下:

1、查看内核版本:uname -a。

2、控制台-》图形界面:init 5或者startx。

3、图形界面-》控制台: init3或者直接注销。

4、如何查看ip地址:ifconfig。

5、配置ip:ifconfig eth0 ip地址。

6、重启:reboot 或者 shutdown -r now。

7、普通用户切换到系统用户:su。

8、注销用户指令:logout。

linux的学习技巧:

如果你想系统的学习Linux,你必需清楚的认识到这一点。如果你真正想系统的学习linux,想用Linux有所作为,那么请忘记Windows的思维方式,思想性的转变比暂时性的技术提高更有用, 而思想上的改变往往是受到我们行动所影响的,有不懂的问题就自己思考,查资料, 实在不会再去找别人的电脑去查,这样就加深了我每次对问题的理解,慢慢感受和习惯Linux的操作方式。


网站题目:linux常用命令大群,linux讨论群
网站网址:http://scyanting.com/article/dsiogdo.html