博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对 Linux 初级、中级、高级用户非常有用的 60 个命令
阅读量:5341 次
发布时间:2019-06-15

本文共 31170 字,大约阅读时间需要 103 分钟。

对 Linux 初级、中级、高级用户非常有用的 60 个命令

 

 

初级篇:

 

你打算从Windows换到Linux上来,还是你刚好换到Linux上来?哎哟!!!我说什么呢,是什么原因你就出现在我的世界里了。从我以往的经验来说,当我刚使用Linux,命令,终端啊什么的,吓了我一跳。我担心该记住多少命令,来帮助我完成所有任务。毫无疑问,在线文档,书籍,man pages以及社区帮了我一个大忙,但是我还是坚信有那么一篇文章记录了如何简单学习和理解命令的秘籍。这激发了我掌握Linux和使它容易使用的积极性。本文就是通往那里的阶梯。

 

1. ls命令

ls命令是列出目录内容(List Directory Contents)的意思。运行它就是列出文件夹里的内容,可能是文件也可能是文件夹。

root@raspberrypi:/# lsbin   boot.bak  etc   lib         media  opt   root  sbin     srv  tmp  varboot  dev       home  lost+found  mnt    proc  run   selinux  sys  usr

 

“ls -l”命令以详情模式(long listing fashion)列出文件夹的内容。

 

root@raspberrypi:/# ls -ltotal 92drwxr-xr-x   2 root root  4096 Jul 26 12:19 bindrwxr-xr-x   2 root root 16384 Jan  1  1970 bootdrwxr-xr-x   2 root root  4096 Jan  1  1970 boot.bakdrwxr-xr-x  12 root root  3060 Aug 26  2013 devdrwxr-xr-x 100 root root  4096 Aug 26  2013 etcdrwxr-xr-x   3 root root  4096 Jul 26 11:47 homedrwxr-xr-x  13 root root  4096 Aug 19 16:36 libdrwx------   2 root root 16384 Jul 26 11:22 lost+founddrwxr-xr-x   2 root root  4096 Jul 26 11:24 mediadrwxr-xr-x   2 root root  4096 Jun 15 15:44 mntdrwxr-xr-x   7 root root  4096 Aug 26 02:09 optdr-xr-xr-x  75 root root     0 Jan  1  1970 procdrwx------   7 root root  4096 Aug 23 01:47 rootdrwxr-xr-x  13 root root   600 Aug 26 02:44 rundrwxr-xr-x   2 root root  4096 Jul 26 12:19 sbindrwxr-xr-x   2 root root  4096 Jun 20  2012 selinuxdrwxr-xr-x   3 root root  4096 Aug 22 10:17 srvdr-xr-xr-x  12 root root     0 Jan  1  1970 sysdrwxrwxrwt   4 root root  4096 Aug 26 02:51 tmpdrwxr-xr-x  10 root root  4096 Jul 26 11:24 usrdrwxr-xr-x  11 root root  4096 Jul 26 13:43 var

 

"ls -a"命令会列出文件夹里的所有内容,包括以"."开头的隐藏文件。

root@raspberrypi:/# ls -a

. bin boot.bak etc lib media opt root sbin srv tmp var
.. boot dev home lost+found mnt proc run selinux sys usr

 

 

注意:在Linux中,文件以“.”开头的就是隐藏文件,并且每个文件,文件夹,设备或者命令都是以文件对待。ls -l 命令输出:

  1. d (代表了是目录).
  2. rwxr-xr-x 是文件或者目录对所属用户,同一组用户和其它用户的权限。
  3. 上面例子中第一个ravisaive 代表了文件文件属于用户ravisaive
  4. 上面例子中的第二个ravisaive代表了文件文件属于用户组ravisaive
  5. 4096 代表了文件大小为4096字节.
  6. May 8 01:06 代表了文件最后一次修改的日期和时间.
  7. 最后面的就是文件/文件夹的名字

更多"ls"例子请查看 

 

2. lsblk命令

"lsblk"就是列出块设备。除了RAM外,以标准的树状输出格式,整齐地显示块设备。

lsblk -l”命令以列表格式显示块设备(而不是树状格式)。

 

 

注意:lsblk是最有用和最简单的方式来了解新插入的USB设备的名字,特别是当你在终端上处理磁盘/块设备时。

 

3. md5sum命令

md5sum”就是计算和检验MD5信息签名。md5 checksum(通常叫做哈希)使用匹配或者验证文件的文件的完整性,因为文件可能因为传输错误,磁盘错误或者无恶意的干扰等原因而发生改变。

 

4. dd命令

dd”命令代表了转换和复制文件。可以用来转换和复制文件,大多数时间是用来复制iso文件(或任何其它文件)到一个usb设备(或任何其它地方)中去,所以可以用来制作USB启动器。

root@raspberry:~# dd if=/home/user/Downloads/debian.iso of=/dev/sdb1 bs=512M; sync

 

注意:在上面的例子中,usb设备就是sdb1(你应该使用lsblk命令验证它,否则你会重写你的磁盘或者系统),请慎重使用磁盘的名,切忌。

dd 命令在执行中会根据文件的大小和类型 以及 usb设备的读写速度,消耗几秒到几分钟不等。

 

 

 

5. uname命令

"uname"命令就是Unix Name的简写。显示机器名,操作系统和内核的详细信息。

root@raspberrypi:/# uname -aLinux raspberrypi 3.6.11+ #528 PREEMPT Tue Aug 20 00:25:53 BST 2013 armv6l GNU/Linux

 

注意: uname显示内核类别, uname -a显示详细信息。上面的输出详细说明了uname -a

  1. Linux“: 机器的内核名
  2. tecmint“: 机器的节点名
  3. 3.8.0-19-generic“: 内核发布版本
  4. #30-Ubuntu SMP“: 内核版本
  5. i686“: 处理器架构
  6. GNU/Linux“: 操作系统名

 

 

6. history命令

history”命令就是历史记录。它显示了在终端中所执行过的所有命令的历史。

注意:按住“CTRL + R”就可以搜索已经执行过的命令,它可以在你写命令时自动补全。

 

 

7. sudo命令

sudo”(super user do)命令允许授权用户执行超级用户或者其它用户的命令。通过在sudoers列表的安全策略来指定。

 

注意:sudo 允许用户借用超级用户的权限,然而"su"命令实际上是允许用户以超级用户登录。所以sudosu更安全。

并不建议使用sudo或者su来处理日常用途,因为它可能导致严重的错误如果你意外的做错了事,这就是为什么在linux社区流行一句话:

“To err is human, but to really foul up everything, you need root password.”

 

“人非圣贤孰能无过,但是拥有root密码就真的万劫不复了。”  # 译

aa

 

8. mkdir命令

mkdir”(Make directory)命令在命名路径下创建新的目录。然而如果目录已经存在了,那么它就会返回一个错误信息"不能创建文件夹,文件夹已经存在了"("cannot create folder, folder already exists")

root@raspberrypi:/opt/labpark# mkdir raspbox

注意:目录只能在用户拥有写权限的目录下才能创建。mkdir:不能创建目录`tecmint`,因为文件已经存在了。(上面的输出中不要被文件迷惑了,你应该记住我开头所说的-在linux中,文件,文件夹,驱动,命令,脚本都视为文件)

 

9. touch 命令

touch”命令代表了将文件的访问和修改时间更新为当前时间。touch命令只会在文件不存在的时候才会创建它。如果文件已经存在了,它会更新时间戳,但是并不会改变文件的内容。

root@raspberrypi:/opt/labpark# touch rasp.txt

注意:touch 可以用来在用户拥有写权限的目录下创建不存在的文件。

 

10. chmod 命令

chmod”命令就是改变文件的模式位。chmod会根据要求的模式来改变每个所给的文件,文件夹,脚本等等的文件模式(权限)。

在文件(文件夹或者其它,为了简单起见,我们就使用文件)中存在3中类型的权限

Read (r)=4Write(w)=2Execute(x)=1

所以如果你想给文件只读权限,就设置为'4';只写权限,设置权限为'2';只执行权限,设置为1; 读写权限,就是4+2 = 6, 以此类推。

现在需要设置3种用户和用户组权限。第一个是拥有者,然后是用户所在的组,最后是其它用户。

这里root的权限是 rwx(读写和执行权限),

所属用户组权限是 r-x (只有读和执行权限, 没有写权限)
对于其它用户权限是 -x(只有只执行权限)

为了改变它的权限,为拥有者,用户所在组和其它用户提供读,写,执行权限。

 

11. chown命令

chown”命令就是改变文件拥有者和所在用户组。每个文件都属于一个用户组和一个用户。在你的目录下,使用"ls -l",你就会看到像这样的东西。

root@raspberrypi:/opt# ls -l

total 24
drwxr-xr-x 2 root root 4096 Aug 26 02:51 labpark
drwxr-xr-x 3 root root 4096 Aug 22 12:20 node
drwxr-xr-x 2 root root 4096 Aug 21 06:57 python
drwxr-xr-x 7 root root 4096 Aug 19 16:41 vc
-rw-r--r-- 1 root root 13 Aug 22 10:04 vsftpd.txt
d-wx-wx-wx 2 root root 4096 Aug 22 11:26 wwwroot

在这里,目录labpark属于用户"root",和用户组"root",

chown”命令用来改变文件的所有权,所以仅仅用来管理和提供文件的用户和用户组授权。

测试试用的是一个Raspberry,所以系统里有一个默认用户pi,属于用户组pi的,试用下面的命令,

root@raspberrypi:/opt# chown pi:pi labpark/

可以看到labpark的所属组已经更改为pi pi

root@raspberrypi:/opt# ls -ltotal 24drwxr-xr-x 2 pi   pi   4096 Aug 26 02:51 labparkdrwxr-xr-x 3 root root 4096 Aug 22 12:20 nodedrwxr-xr-x 2 root root 4096 Aug 21 06:57 pythondrwxr-xr-x 7 root root 4096 Aug 19 16:41 vc-rw-r--r-- 1 root root   13 Aug 22 10:04 vsftpd.txtd-wx-wx-wx 2 root root 4096 Aug 22 11:26 wwwroot

注意:“chown”所给的文件改变用户和组的所有权到新的拥有者或者已经存在的用户或者用户组。

 

 

12. apt命令

Debian系列以“apt”命令为基础,“apt”代表了Advanced Package Tool。APT是一个为Debian系列系统(Ubuntu,Kubuntu等等)开发的高级包管理器,在Gnu/Linux系统上,它会为包自动地,智能地搜索,安装,升级以及解决依赖。

root@raspberrypi:/opt# apt-get install nginxReading package lists... DoneBuilding dependency treeReading state information... Donenginx is already the newest version.0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

  

root@raspberrypi:/opt# apt-get updateGet:1 http://mirrordirector.raspbian.org wheezy Release.gpg [490 B]Hit http://raspberrypi.collabora.com wheezy Release.gpgHit http://archive.raspberrypi.org wheezy Release.gpgGet:2 http://mirrordirector.raspbian.org wheezy Release [14.4 kB]Hit http://raspberrypi.collabora.com wheezy ReleaseHit http://archive.raspberrypi.org wheezy ReleaseHit http://raspberrypi.collabora.com wheezy/rpi armhf PackagesHit http://archive.raspberrypi.org wheezy/main armhf PackagesGet:3 http://mirrordirector.raspbian.org wheezy/main armhf Packages [7,415 kB]1% [3 Packages 22.9 kB/7,415 kB 0%] [Waiting for headers] [Waiting for headers]^C

 

注意:上面的命令会导致系统整体的改变,所以需要root密码(查看提示符为"#",而不是“$”).和yum命令相比,Apt更高级和智能。

见名知义,apt-cache用来搜索包中是否包含子包mplayerapt-get用来安装,升级所有的已安装的包到最新版。

关于apt-get 和 apt-cache命令更多信息,请查看 

 

 

13. tar命令

tar”命令是磁带归档(Tape Archive),对创建一些文件的的归档和它们的解压很有用。

 

root@raspberry:~# tar -zxvf abc.tar.gz (记住'z'代表了.tar.gz)root@raspberry:~# tar -jxvf abc.tar.bz2 (记住'j'代表了.tar.bz2)root@raspberry:~# tar -cvf archieve.tar.gz(.bz2) /path/to/folder/abc

注意: "tar.gz"代表了使用gzip归档,“bar.bz2”使用bzip压缩的,它压缩的更好但是也更慢。

了解更多"tar 命令"的例子,请查看 

 

14. cal 命令

cal”(Calender),它用来显示当前月份或者未来或者过去任何年份中的月份。

root@raspberrypi:/opt# cal    August 2013Su Mo Tu We Th Fr Sa             1  2  3 4  5  6  7  8  9 1011 12 13 14 15 16 1718 19 20 21 22 23 2425 26 27 28 29 30 31

显示指定的年份的月份,可以是过去的也可以是未来的。

root@raspberrypi:/opt# cal 10 1986    October 1986Su Mo Tu We Th Fr Sa          1  2  3  4 5  6  7  8  9 10 1112 13 14 15 16 17 1819 20 21 22 23 24 2526 27 28 29 30 31

注意: 你不需要往回调整日历50年,既不用复杂的数据计算你出生那天,也不用计算你的生日在哪天到来,[因为它的最小单位是月,而不是日]。

 

15. date命令

date”命令使用标准的输出打印当前的日期和时间,也可以深入设置。

root@raspberrypi:/opt# dateMon Aug 26 03:21:36 UTC 2013

设置系统时间:

root@raspberrypi:/opt# date --set='26 aug 2013 11:42'Mon Aug 26 11:42:00 UTC 2013

注意:这个命令在脚本中十分有用,以及基于时间和日期的脚本更完美。而且在终端中改变日期和时间,让你更专业!!!(当然你需要root权限才能操作这个,因为它是系统整体改变)

 

16. cat命令

cat”代表了连结(Concatenation),连接两个或者更多文本文件或者以标准输出形式打印文件的内容。

在book.txt中只有一个book单词,在facebook.txt中只有facebook一个单词,然后连接之后输出如下:

root@raspberrypi:/opt/labpark# cat book.txt facebook.txtbookfacebook

 

 

! 叫做非,带'!'的反向字符串为真

更多请阅读Linux cat 命令的实例 

 

17. cp 命令

“copy”就是复制。它会从一个地方复制一个文件到另外一个地方。

root@raspberrypi:/opt/labpark# cp book.txt book_backup.txt

 

注意: cp,在shell脚本中是最常用的一个命令,而且它可以使用通配符(在前面一块中有所描述),来定制所需的文件的复制。

 

 

 

18. mv 命令

mv”命令将一个地方的文件移动到另外一个地方去。

root@raspberrypi:/opt/labpark# mv nihao.txt /opt/python/

注意:mv 命令可以使用通配符。mv需谨慎使用,因为移动系统的或者未授权的文件不但会导致安全性问题,而且可能系统崩溃。

 

 

19. pwd 命令

pwd”(print working directory),在终端中显示当前工作目录的全路径。

root@raspberrypi:/opt/labpark# pwd/opt/labpark

注意: 这个命令并不会在脚本中经常使用,但是对于新手,当从连接到nux很久后在终端中迷失了路径,这绝对是救命稻草。

 

 

20. cd 命令

最后,经常使用的“cd”命令代表了改变目录。它在终端中改变工作目录来执行,复制,移动,读,写等等操作。

 

注意: 在终端中切换目录时,cd就大显身手了。“cd ~”会改变工作目录为用户的家目录,而且当用户发现自己在终端中迷失了路径时,非常有用。“cd ..”从当前工作目录切换到(当前工作目录的)父目录。

这些命令肯定会让你在Linux上很舒服。但是这并不是结束。例如,如果你熟练使用这些命令,欢呼吧,少年,你会发现你已从小白级别提升为了中级用户了。在下篇文章,我会介绍像“kill”,"ps","grep"等等命令,期待吧,我不会让你失望的。

 

 

 

 

对中级 Linux 用户非常有用的 20 个命令

21. 命令: Find

搜索指定目录下的文件,从开始于父目录,然后搜索子目录。

root@raspberrypi:/opt/labpark# find book*book_backup.txtbook.txt

 

root@raspberrypi:/opt/labpark# find -name *.c./hello.c

 

root@raspberrypi:/opt/labpark# find -iname FACE*./facebook.txt

 

注意: `-name‘选项是搜索大小写敏感。可以使用`-iname‘选项,这样在搜索中可以忽略大小写。(*是通配符,可以搜索所有的文件;‘.sh‘你可以使用文件名或者文件名的一部分来制定输出结果)

 

注意:以上命令查找根目录下和所有文件夹以及加载的设备的子目录下的所有包含‘tar.gz'的文件。

’find'命令的更详细信息请参考

 

 

22. 命令: grep

 

grep‘命令搜索指定文件中包含给定字符串或者单词的行。举例搜索‘/etc/passwd‘文件中的‘pi'

root@raspberrypi:/opt/labpark# grep pi /etc/passwdpi:x:1000:1000:,,,:/opt/wwwroot:/bin/bash

使用’-i'选项将忽略大小写。

root@raspberrypi:/opt/labpark# grep -i  'PI' /etc/passwdpi:x:1000:1000:,,,:/opt/wwwroot:/bin/bash

使用’-r'选项递归搜索所有自目录下包含字符串 “localhost“.的行。

root@raspberrypi:/opt/labpark# grep -r "localhost" /etc/php5//etc/php5/cgi/php.ini:SMTP = localhost/etc/php5/cli/php.ini:SMTP = localhost/etc/php5/fpm/php.ini:SMTP = localhost

注意:您还可以使用以下选项:

  1. -w 搜索单词 (egrep -w ‘word1|word2‘ /path/to/file).
  2. -c 用于统计满足要求的行 (i.e., total number of times the pattern matched) (grep -c ‘word‘ /path/to/file).
  3. –color 彩色输出 (grep –color server /etc/passwd).

 

23. 命令: man

man‘是系统帮助页。Man提供命令所有选项及用法的在线文档。几乎所有的命令都有它们的帮助页,例如:

root@raspberrypi:/opt/labpark# manWhat manual page do you want?root@raspberrypi:/opt/labpark# man manMAN(1)                        Manual pager utils                        MAN(1)NAME       man - an interface to the on-line reference manualsSYNOPSIS       man  [-C  file]  [-d]  [-D]  [--warnings[=warnings]]  [-R encoding] [-L       locale] [-m system[,...]] [-M path] [-S list]  [-e  extension]  [-i|-I]       [--regex|--wildcard]   [--names-only]  [-a]  [-u]  [--no-subpages]  [-P       pager] [-r prompt] [-7] [-E encoding] [--no-hyphenation] [--no-justifi†      cation]  [-p  string]  [-t]  [-T[device]]  [-H[browser]] [-X[dpi]] [-Z]       [[section] page ...] ...       man -k [apropos options] regexp ...       man -K [-w|-W] [-S list] [-i|-I] [--regex] [section] term ...       man -f [whatis options] page ...       man -l [-C file] [-d] [-D] [--warnings[=warnings]]  [-R  encoding]  [-L       locale]  [-P  pager]  [-r  prompt]  [-7] [-E encoding] [-p string] [-t]       [-T[device]] [-H[browser]] [-X[dpi]] [-Z] file ...       man -w|-W [-C file] [-d] [-D] page ...       man -c [-C file] [-d] [-D] page ...       man [-hV]DESCRIPTION

上面是man命令的系统帮助页,类似的有cat和ls的帮助页。

注意:系统帮助页是为了命令的使用和学习而设计的。

 

 

24. 命令: ps

ps命令给出正在运行的某个进程的状态,每个进程有特定的id成为PID。

root@raspberrypi:/opt/labpark# ps  PID TTY          TIME CMD 2801 pts/1    00:00:01 bash 2868 pts/1    00:00:00 su 2885 pts/1    00:00:00 su 2892 pts/1    00:00:00 bash 2981 pts/1    00:00:00 ps

使用‘-A‘选项可以列出所有的进程及其PID。

root@raspberrypi:/opt/labpark# ps -A  PID TTY          TIME CMD    1 ?        00:00:01 init    2 ?        00:00:00 kthreadd    3 ?        00:00:00 ksoftirqd/0    5 ?        00:00:00 kworker/0:0H    6 ?        00:00:00 kworker/u:0    7 ?        00:00:00 kworker/u:0H    8 ?        00:00:00 khelper    9 ?        00:00:00 kdevtmpfs   10 ?        00:00:00 netns   12 ?        00:00:00 bdi-default   13 ?        00:00:00 kblockd   14 ?        00:00:00 khubd   15 ?        00:00:00 rpciod   16 ?        00:00:00 khungtaskd   17 ?        00:00:00 kswapd0   18 ?        00:00:00 fsnotify_mark   19 ?        00:00:00 nfsiod   20 ?        00:00:00 crypto   27 ?        00:00:00 kthrotld   28 ?        00:00:00 VCHIQ-0   29 ?        00:00:00 VCHIQr-0   30 ?        00:00:00 VCHIQs-0   31 ?        00:00:00 iscsi_eh   32 ?        00:00:00 dwc_otg   33 ?        00:00:00 DWC Notificatio   35 ?        00:00:00 deferwq   36 ?        00:00:00 kworker/u:2   37 ?        00:00:15 mmcqd/0   38 ?        00:00:00 jbd2/mmcblk0p2-   39 ?        00:00:00 ext4-dio-unwrit  154 ?        00:00:00 udevd  636 ?        00:00:00 udevd  650 ?        00:00:00 udevd 1523 ?        00:00:01 ifplugd 1546 ?        00:00:00 ifplugd 1686 ?        00:00:00 kworker/0:2 1784 ?        00:00:00 dhclient 1839 ?        00:00:00 rc 1848 ?        00:00:02 startpar 1914 ?        00:00:00 rsyslogd 1940 ?        00:00:00 php5-fpm 1941 ?        00:00:00 php5-fpm 1942 ?        00:00:00 php5-fpm 1967 ?        00:00:00 cron 2005 ?        00:00:00 dbus-daemon 2048 ?        00:00:00 nginx 2050 ?        00:00:00 nginx 2069 ?        00:00:00 mysqld_safe 2443 ?        00:00:14 mysqld 2444 ?        00:00:00 logger 2501 ?        00:00:00 sshd 2529 ?        00:00:00 thd 2537 ?        00:00:00 vsftpd 2692 ?        00:00:00 ntpd 2715 ?        00:00:00 rc.local 2718 ?        00:00:00 rc.local 2720 ?        00:00:25 python 2723 ?        00:00:02 sshd 2728 ?        00:00:00 console-kit-dae 2795 ?        00:00:00 polkitd 2801 pts/1    00:00:01 bash 2868 pts/1    00:00:00 su 2875 pts/1    00:00:00 bash 2885 pts/1    00:00:00 su 2892 pts/1    00:00:00 bash 2934 ?        00:00:00 kworker/0:1 2971 ?        00:00:00 flush-179:0 2982 pts/1    00:00:00 ps

 

注意:当你要知道有哪些进程在运行或者需要知道想杀死的进程PID时ps命令很管用。你可以把它与‘grep‘合用来查询指定的输出结果,例如:

root@raspberrypi:/opt/labpark# ps -A | grep -i nginx 2048 ?        00:00:00 nginx 2050 ?        00:00:00 nginx

 

ps命令与grep命令用管道线分割可以得到我们想要的结果。

 

25. 命令: kill

也许你从命令的名字已经猜出是做什么的了,kill是用来杀死已经无关紧要或者没有响应的进程.它是一个非常有用的命令,而不是非常非常有用.你可能很熟悉Windows下要杀死进程可能需要频繁重启机器因为一个在运行的进程大部分情况下不能够杀死,即使杀死了进程也需要重新启动操作系统才能生效.但在linux环境下,事情不是这样的.你可以杀死一个进程并且重启它而不是重启整个操作系统.

杀死一个进程需要知道进程的PID.

假设你想杀死已经没有响应的‘nginx'进程,运行如下命令:

root@raspberrypi:/opt/labpark# kill 2048

注意:kill需要PID作为参数,pkill可以选择应用的方式,比如指定进程的所有者等.

 

 

26. 命令: whereis

whereis的作用是用来定位命令的二进制文件\资源\或者帮助页.举例来说,获得ls和kill命令的二进制文件/资源以及帮助页:

root@raspberrypi:/# whereis lsls: /bin/ls /usr/share/man/man1/ls.1.gz
root@raspberrypi:/# whereis killkill: /bin/kill /usr/share/man/man2/kill.2.gz /usr/share/man/man1/kill.1.gz

 

注意:当需要知道二进制文件保存位置时有用.

 

 

 

27. 命令: service

service‘命令控制服务的启动、停止和重启,它让你能够不重启整个系统就可以让配置生效以开启、停止或者重启某个服务。

查看当前服务状态

root@raspberrypi:/# service --status-all [ ? ]  alsa-utils [ - ]  bootlogs [ ? ]  bootmisc.sh [ ? ]  checkfs.sh [ ? ]  checkroot-bootclean.sh [ - ]  checkroot.sh [ - ]  console-setup [ + ]  cron [ + ]  dbus [ ? ]  dphys-swapfile [ ? ]  fake-hwclock [ - ]  hostname.sh [ ? ]  hwclock.sh [ + ]  ifplugd [ - ]  kbd [ - ]  keyboard-setup [ ? ]  killprocs [ ? ]  kmod [ - ]  lightdm [ - ]  motd [ ? ]  mountall-bootclean.sh [ ? ]  mountall.sh [ ? ]  mountdevsubfs.sh [ ? ]  mountkernfs.sh [ ? ]  mountnfs-bootclean.sh [ ? ]  mountnfs.sh [ ? ]  mtab.sh [ ? ]  mysql [ ? ]  networking [ - ]  nfs-common [ + ]  nginx [ - ]  ntp [ + ]  php5-fpm [ ? ]  plymouth [ ? ]  plymouth-log [ - ]  procps [ ? ]  rc.local [ - ]  rmnologin [ - ]  rpcbind [ - ]  rsync [ + ]  rsyslog [ ? ]  sendsigs [ + ]  ssh [ - ]  sudo [ + ]  triggerhappy [ + ]  udev [ ? ]  udev-mtab [ ? ]  umountfs [ ? ]  umountnfs.sh [ ? ]  umountroot [ - ]  urandom [ + ]  vsftpd [ - ]  x11-common

 

查看nginx服务的状态:service nginx status

root@raspberrypi:/# service nginx status[ ok ] nginx is running.

 

停止nginx服务:

root@raspberrypi:/# service nginx stopStopping nginx: nginx.root@raspberrypi:/# service nginx status[FAIL] nginx is not running ... failed!

启动nginx服务:

root@raspberrypi:/# service nginx startStarting nginx: nginx.root@raspberrypi:/# service nginx status[ ok ] nginx is running.

 

注意:要想使用service命令,进程的脚本必须放在‘/etc/init.d‘,并且路径必须在指定的位置。

如果要运行“service apache2 start”实际上实在执行“service /etc/init.d/apache2 start”.

 

 

 

28. 命令: alias

alias是一个系统自建的shell命令,允许你为名字比较长的或者经常使用的命令指定别名。

我经常用ls -l‘命令,它有五个字符(包括空格)。于是我为它创建了一个别名‘l'。

root@raspberrypi:/# alias l='ls -l'root@raspberrypi:/# aliasalias l='ls -l'

试试它是否能用:

root@raspberrypi:/# ltotal 92drwxr-xr-x   2 root root  4096 Jul 26 12:19 bindrwxr-xr-x   2 root root 16384 Jan  1  1970 bootdrwxr-xr-x   2 root root  4096 Jan  1  1970 boot.bakdrwxr-xr-x  12 root root  3060 Aug 26 10:43 devdrwxr-xr-x 100 root root  4096 Aug 26 10:43 etcdrwxr-xr-x   3 root root  4096 Jul 26 11:47 homedrwxr-xr-x  13 root root  4096 Aug 19 16:36 libdrwx------   2 root root 16384 Jul 26 11:22 lost+founddrwxr-xr-x   2 root root  4096 Jul 26 11:24 mediadrwxr-xr-x   2 root root  4096 Jun 15 15:44 mntdrwxr-xr-x   7 root root  4096 Aug 26 03:11 optdr-xr-xr-x  79 root root     0 Jan  1  1970 procdrwx------   7 root root  4096 Aug 23 01:47 rootdrwxr-xr-x  14 root root   620 Aug 26 11:45 rundrwxr-xr-x   2 root root  4096 Jul 26 12:19 sbindrwxr-xr-x   2 root root  4096 Jun 20  2012 selinuxdrwxr-xr-x   3 root root  4096 Aug 22 10:17 srvdr-xr-xr-x  12 root root     0 Jan  1  1970 sysdrwxrwxrwt   4 root root  4096 Aug 26 11:39 tmpdrwxr-xr-x  10 root root  4096 Jul 26 11:24 usrdrwxr-xr-x  11 root root  4096 Jul 26 13:43 var

去掉’l'别名,要使用unalias命令:

root@raspberrypi:/# unalias lroot@raspberrypi:/# aliasroot@raspberrypi:/# ^Croot@raspberrypi:/# lbash: l: command not found

去掉‘l’别名之后,再输入‘l’,就会报 commadn not found!

 

 

29.命令: df

报告系统的磁盘使用情况。在跟踪磁盘使用情况方面对于普通用户和系统管理员都很有用。 ‘df‘ 通过检查目录大小工作,但这一数值仅当文件关闭时才得到更新。

root@raspberrypi:/# dfFilesystem     1K-blocks    Used Available Use% Mounted onrootfs          15128576 2169496  12325996  15% //dev/root       15128576 2169496  12325996  15% /devtmpfs          216120       0    216120   0% /devtmpfs              44876     232     44644   1% /runtmpfs               5120       0      5120   0% /run/locktmpfs              89740       0     89740   0% /run/shm/dev/mmcblk0p1     57288   18512     38776  33% /boot

加上 -h 参数,按M为单位输出

root@raspberrypi:/# df -hFilesystem      Size  Used Avail Use% Mounted onrootfs           15G  2.1G   12G  15% //dev/root        15G  2.1G   12G  15% /devtmpfs        212M     0  212M   0% /devtmpfs            44M  232K   44M   1% /runtmpfs           5.0M     0  5.0M   0% /run/locktmpfs            88M     0   88M   0% /run/shm/dev/mmcblk0p1   56M   19M   38M  33% /boot

df’命令的更多例子请参阅 .

 

30. 命令: du

 

估计文件的空间占用。 逐层统计文件(例如以递归方式)并输出摘要。

注意: ‘df‘ 只显示文件系统的使用统计,但‘du‘统计目录内容。‘du‘命令的更详细信息请参阅.

 

 

 

31. 命令: rm

'rm' 标准移除命令。 rm 可以用来删除文件和目录。

'rm' 不能直接删除目录,需要加上相应的'-rf'参数才可以。

警告: "rm -rf" 命令是一个破坏性的命令,假如你不小心删除一个错误的目录。一旦你使用'rm -rf' 删除一个目录,在目录中所有的文件包括目录本身会被永久的删除,所以使用这个命令要非常小心。

 

 

33. 命令: passwd

这是一个很重要的命令,在终端中用来改变自己密码很有用。显然的,因为安全的原因,你需要知道当前的密码。

root@raspberrypi:/opt/wwwroot# passwdEnter new UNIX password:Retype new UNIX password:passwd: password updated successfully

 

34. 命令: lpr

这个命令用来在命令行上将指定的文件在指定的打印机上打印。

root@raspberry:~# lpr -P deskjet-4620-series 1-final.pdf

 

注意: "lpq"命令让你查看打印机的状态(是开启状态还是关闭状态)和等待打印中的工作(文件)的状态。

 

35. 命令: cmp

比较两个任意类型的文件并将结果输出至标准输出。如果两个文件相同, ‘cmp‘默认返回0;如果不同,将显示不同的字节数和第一处不同的位置。

以下面两个文件为例:

先看看book.txt有什么吧:

root@raspberrypi:/opt/labpark# cat book.txtHi, this is the book.

再看看test.txt

root@raspberrypi:/opt/labpark# cat test.txtHi,this is test file!

.比较一下这两个文件,看看命令的输出。

root@raspberrypi:/opt/labpark# cmp book.txt test.txtbook.txt test.txt differ: byte 4, line 1

 

36. 命令: wget

Wget是用于非交互式(例如后台)下载文件的免费工具.支持HTTPHTTPSFTP协议和 HTTP 代理。

 

root@raspberrypi:/opt# wget http://www.nodejs.org/dist/v0.11.5/node-v0.11.5.tar.gz--2013-08-26 11:59:38--  http://www.nodejs.org/dist/v0.11.5/node-v0.11.5.tar.gzResolving www.nodejs.org (www.nodejs.org)... 165.225.133.150Connecting to www.nodejs.org (www.nodejs.org)|165.225.133.150|:80... connected.HTTP request sent, awaiting response... 200 OKLength: 15054281 (14M) [application/octet-stream]Saving to: `node-v0.11.5.tar.gz'42% [===============>                       ] 6,436,208   1.17M/s  eta 13s

 

 

37 命令: mount

mount 是一个很重要的命令,用来挂载不能自动挂载的文件系统。你需要root权限挂载设备。

在插入你的文件系统后,首先运行"lsblk"命令,识别出你的设备,然后把分配的设备名记下来。

 

 

 

 

 

对 Linux 专家非常有用的 20 个命令

 

 

41. 命令: ifconfig

ifconfig用来配置常驻内核的网络接口信息。在系统启动必要时用来设置网络适配器的信息。之后,它通常是只需要在调试时或当系统需要调整时使用。

root@raspberrypi:/opt# ifconfigeth0      Link encap:Ethernet  HWaddr b8:27:eb:1c:aa:00          inet addr:10.2.58.80  Bcast:10.2.59.255  Mask:255.255.254.0          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX packets:75745 errors:0 dropped:0 overruns:0 frame:0          TX packets:34414 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000          RX bytes:24591939 (23.4 MiB)  TX bytes:3747774 (3.5 MiB)lo        Link encap:Local Loopback          inet addr:127.0.0.1  Mask:255.0.0.0          UP LOOPBACK RUNNING  MTU:16436  Metric:1          RX packets:0 errors:0 dropped:0 overruns:0 frame:0          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:0          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

检查所有的网络适配器

“-a”参数用来显示所有网络适配器(网卡)的详细信息,包括那些停用的适配器。

root@raspberrypi:~# ifconfig -aeth0      Link encap:Ethernet  HWaddr b8:27:eb:1c:aa:00          inet addr:10.2.58.80  Bcast:10.2.59.255  Mask:255.255.254.0          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX packets:1768 errors:0 dropped:0 overruns:0 frame:0          TX packets:708 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000          RX bytes:250870 (244.9 KiB)  TX bytes:75918 (74.1 KiB)lo        Link encap:Local Loopback          inet addr:127.0.0.1  Mask:255.0.0.0          UP LOOPBACK RUNNING  MTU:16436  Metric:1          RX packets:0 errors:0 dropped:0 overruns:0 frame:0          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:0          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)wlan0     Link encap:Ethernet  HWaddr e8:4e:06:0e:05:a6          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX packets:0 errors:0 dropped:0 overruns:0 frame:0          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

 

42. 命令: netstat

netstat命令显示各种网络相关的信息,如网络连接,路由表,接口统计,伪装连接,组播成员身份等....

root@raspberrypi:~# netstat -aActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address           Foreign Address         Statetcp        0      0 *:mysql                 *:*                     LISTENtcp        0      0 *:http                  *:*                     LISTENtcp        0      0 *:ftp                   *:*                     LISTENtcp        0      0 *:ssh                   *:*                     LISTENtcp        0     52 10.2.58.80:ssh          nihaopc.sohu-inc.:58688 ESTABLISHEDudp        0      0 *:52725                 *:*udp        0      0 *:bootpc                *:*udp        0      0 10.2.58.80:ntp          *:*udp        0      0 localhost:ntp           *:*udp        0      0 *:ntp                   *:*Active UNIX domain sockets (servers and established)Proto RefCnt Flags       Type       State         I-Node   Pathunix  2      [ ACC ]     STREAM     LISTENING     2613     /var/run/php5-fpm.sockunix  2      [ ACC ]     STREAM     LISTENING     2634     /var/run/dbus/system_bus_socketunix  2      [ ACC ]     SEQPACKET  LISTENING     482      /run/udev/controlunix  8      [ ]         DGRAM                    2532     /dev/logunix  2      [ ACC ]     STREAM     LISTENING     3061     /var/run/mysqld/mysqld.sockunix  2      [ ]         DGRAM                    3066     /var/run/thd.socketunix  3      [ ]         STREAM     CONNECTED     2612unix  3      [ ]         STREAM     CONNECTED     3663unix  2      [ ]         DGRAM                    2536unix  2      [ ]         DGRAM                    3626

 

显示所有tcp相关端口:

root@raspberrypi:~# netstat -atActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address           Foreign Address         Statetcp        0      0 *:mysql                 *:*                     LISTENtcp        0      0 *:http                  *:*                     LISTENtcp        0      0 *:ftp                   *:*                     LISTENtcp        0      0 *:ssh                   *:*                     LISTENtcp        0     52 10.2.58.80:ssh          nihaopc.sohu-inc.:58688 ESTABLISHED

 

显示所有连接的统计信息:

root@raspberrypi:~# netstat -sIp:    2363 total packets received    0 forwarded    0 incoming packets discarded    2348 incoming packets delivered    1383 requests sent out    12 dropped because of missing routeIcmp:    0 ICMP messages received    0 input ICMP message failed.    ICMP input histogram:    0 ICMP messages sent    0 ICMP messages failed    ICMP output histogram:Tcp:    141 active connections openings    1 passive connection openings    0 failed connection attempts    70 connection resets received    1 connections established    708 segments received    978 segments send out    8 segments retransmited    0 bad segments received.    70 resets sentUdp:    395 packets received    0 packets to unknown port received.    0 packet receive errors    397 packets sentUdpLite:TcpExt:    2 delayed acks sent    213 packets directly queued to recvmsg prequeue.    36114 bytes directly received in process context from prequeue    35 packet headers predicted    239 acknowledgments not containing data payload received    2 congestion windows recovered without slow start after partial ack    8 other TCP timeouts    70 connections reset due to early user close    TCPRcvCoalesce: 3    TCPOFOQueue: 91IpExt:    InNoRoutes: 7    InMcastPkts: 41    InBcastPkts: 1204    InOctets: 428992    OutOctets: 116913    InMcastOctets: 1744    InBcastOctets: 253841

 

好的!由于某些原因如果你不想解析netstat 输出的主机、端口和用户名称的话 

root@raspberrypi:~# netstat -an

好,你可能需要获取的 netstat 持续输出的动态信息,通过传递中断输出指令 (ctrl + c)来停止。

root@raspberrypi:~# netstat -c

 

 

更多关于“netstat”的例子和使用方法,浏览文章。

 

 

43. 命令: nslookup

网络实用程序,用于获得互联网服务器的信息。顾名思义,该实用程序将发现通过查询 DNS 域的名称服务器信息。

root@raspberrypi:~# nslookup

 

 

45.命令: uptime

你连接到你的 Linux 服务器时发现一些不寻常或恶意的东西,你会做什么?猜测......不,绝不!你可以运行uptime来验证当服务器无人值守式到底发生了什么事情。

root@raspberrypi:~# uptime 04:09:59 up 7 min,  1 user,  load average: 0.01, 0.31, 0.24

 

 

 

50. 命令:w

是否觉得命令'w'很滑稽?但是事实上不是的。它是一个命令,尽管只有一个字符长!命令"w"是uptimewho命令,以前后的顺序组合在一起。

root@raspberrypi:~# w 04:10:30 up 7 min,  1 user,  load average: 0.01, 0.27, 0.23USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHATroot     pts/0    10.2.58.132      04:04    0.00s  0.65s  0.03s w

 

 

 

52. 命令: top

显示CPU进程信息。这个命令自动刷新,默认是持续显示CPU进程信息,除非使用了中断指令(Ctrl+c)。

 

root@raspberrypi:~# toptop - 04:11:19 up 8 min,  1 user,  load average: 0.00, 0.23, 0.22Tasks:  67 total,   1 running,  66 sleeping,   0 stopped,   0 zombie%Cpu(s):  1.7 us,  0.7 sy,  0.0 ni, 97.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 stKiB Mem:    448760 total,   133924 used,   314836 free,    10656 buffersKiB Swap:   102396 total,        0 used,   102396 free,    66232 cached  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND 2816 root      20   0  9920 6008 3032 S   1.0  1.3   0:04.21 python 2922 root      20   0  4664 1356 1028 R   1.0  0.3   0:00.09 top 1857 root      20   0  2012 1856 1496 S   0.3  0.4   0:00.64 startpar 2539 mysql     20   0  279m  31m 5672 S   0.3  7.2   0:03.22 mysqld 2818 root      20   0  9804 3260 2628 S   0.3  0.7   0:00.68 sshd    1 root      20   0  2144  728  620 S   0.0  0.2   0:01.63 init    2 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kthreadd    3 root      20   0     0    0    0 S   0.0  0.0   0:00.01 ksoftirqd/0    5 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kworker/0:0H    6 root      20   0     0    0    0 S   0.0  0.0   0:00.08 kworker/u:0    7 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kworker/u:0H    8 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 khelper    9 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kdevtmpfs   10 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 netns   11 root      20   0     0    0    0 S   0.0  0.0   0:00.43 kworker/0:1   12 root      20   0     0    0    0 S   0.0  0.0   0:00.00 bdi-default   13 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kblockd

另查看  ·[@Lesus 注:htop比top命令更好用,不过需要自己安装]

 

53. 命令: mkfs.ext4

这个命令在指定的设备上创建一个新的ext4文件系统,如果这个命令后面跟的是个错误的设备,那么整个设备就会被擦除和格式化,所以建议不要运行这个命令,除非你清楚自己正在干什么。

Mkfs.ext4 /dev/sda1 (sda1 block will be formatted)mkfs.ext4 /dev/sdb1 (sdb1 block will be formatted)

更多查看: 

 

 

 

54. vi/emac/nano 命令

 

vi (visual), emacnano 是 linux 中最常用的一些编辑器。它们经常用于编辑文本,配置,… 等文件. A quick guide to work around vi and nano is, emac is a.

 

 

55. 命令: rsync

Rsync复制文件,参数-P开启进度条。如果你已经安装了rsync,你可以使用一个简单的别名。

root@raspberrypi:~# alias cp='rsync -aP'

现在尝试在终端复制一个大文件,这样将会看到显示剩余部分的输出,与进度条类似。

而且,保持和维护备份是系统管理员不得不做的最重要、最无聊的工作之一。Rsync是一个用于新建和维护备份的非常好用的终端工具(也存在许多其它工具)。

 

[root@raspberry~]$ rsync -zvr IMG_5267\ copy\=33\ copy\=ok.jpg ~/Desktop/ sending incremental file list IMG_5267 copy=33 copy=ok.jpg sent 2883830 bytes  received 31 bytes  5767722.00 bytes/sec total size is 2882771  speedup is 1.00

 

注意-z表示压缩, -v表示详细信息,-r表示递归。

 

 

56. 命令: free

跟踪内存的使用和资源一样重要,就像管理员执行的任何其它任务,可以使用 'free' 命令来在这里救援.

root@raspberrypi:/opt/labpark# free             total       used       free     shared    buffers     cachedMem:        448760     134304     314456          0      10664      66648-/+ buffers/cache:      56992     391768Swap:       102396          0     102396

3

以可读的格式显示,检查当前内存使用

root@raspberrypi:/opt/labpark# free -h             total       used       free     shared    buffers     cachedMem:          438M       131M       307M         0B        10M        65M-/+ buffers/cache:        55M       382MSwap:          99M         0B        99M

 

设定 时间间隔 后 ,持续检查 使用状态

root@raspberrypi:/opt/labpark# free -s 3             total       used       free     shared    buffers     cachedMem:        448760     134552     314208          0      10680      66652-/+ buffers/cache:      57220     391540Swap:       102396          0     102396             total       used       free     shared    buffers     cachedMem:        448760     134552     314208          0      10680      66652-/+ buffers/cache:      57220     391540Swap:       102396          0     102396

 

阅读更多

 

57. mysqldump 命令

好了,现在你从名字上就能明白这个命令所代表的作用。mysqldump 命令会转储(备份)数据库的全部或特定一部分数据到一个给定的文件中。例如:

[root@raspberry~]$ mysqldump -u root -p --all-databases > /home/server/Desktop/backupfile.sql

 

注意: mysqldump 需要 mysql 在运行中并且有正确的授权密码。我们在 中讨论了一些有用的 “mysqldump” 命令用法。

 

 

 

 

58. mkpasswd 命令

根据指定的长度,产生一个难猜的随机密码。

[root@raspberry ~]$ mkpasswd -l 10zI4+Ybqfx9
[root@raspberry ~]$ mkpasswd -l 20 w0Pr7aqKk&hmbmqdrlmk

注意: -l 10 产生一个10个字符的随机密码,而-l 20 产生 20个字符的密码,它可以设置为任意长度来取得所希望的结果。这个命令很有用,经常在脚本语言里使用来产生随机的密码。你可能需要 yum 或 apt ‘expect’ 包来使用这个命令。

apt-get install expect//或者yum  install expect

 

 

 

59. Command: paste

合并两个或多个文本文件,按行来进行合并。示例。如果 a1.txt 的内容是:

root@raspberrypi:/opt/labpark# cat a1.txt12345

如果 a2.txt 的内容是:

root@raspberrypi:/opt/labpark# cat a2.txt        a        b                c        d        e        f

合并a1.txt, a2.txt 两个或多个文本文件,按行来进行合并.输出到 a3.txt 文件之后查看a3.txt

root@raspberrypi:/opt/labpark# paste a1.txt a2.txt > a3.txtroot@raspberrypi:/opt/labpark# cat a3.txt1               a2               b3                       c4               d5               e                f

 

60.Command: lsof

 

lsof 是"list open files("列表中打开的文件") 的缩写,显示您的系统当前已打开的所有文件。这是非常有用的对于想找出哪些进程使用某一特定文件,或显示为单个进程打开所有文件。一些有用的 ,你可能会感兴趣阅读。

 

这里并没有结束,系统管理员会很多东西,为你提供漂亮的界面,服务于你的工作。系统管理实际上是学习和实现的一门优雅的艺术。我们会尽力给你介绍 linux 专业人员必须了解的知识以及一些其他必要东西,linux本身是基础的,简单的。深入理解是不断学习的过程。你的美言好词总是在不断鼓励我们写出更多的优秀,丰富的文章。"喜之以分享,助我来传播"。

 

 

 

 

 

 

转载于:https://www.cnblogs.com/didi/p/3282137.html

你可能感兴趣的文章
How to Find Research Problems
查看>>
Linux用户管理
查看>>
数据库第1,2,3范式学习
查看>>
《Linux内核设计与实现》第四章学习笔记
查看>>
使用iperf测试网络性能
查看>>
struts2入门之准备工作
查看>>
从C语言的弱类型属性说起
查看>>
图片的显示隐藏(两张图片,默认的时候显示第一张,点击的时候显示另一张)...
查看>>
Docker 安装MySQL5.7(三)
查看>>
python 模块 来了 (调包侠 修炼手册一)
查看>>
关于CSS的使用方式
查看>>
本地MongoDB服务开启与连接本地以及远程服务器MongoDB服务
查看>>
跨域解决方案之CORS
查看>>
学习RESTFul架构
查看>>
分析语句执行步骤并对排出耗时比较多的语句
查看>>
原生JS轮播-各种效果的极简实现
查看>>
软件工程总结作业---提问回顾与个人总结
查看>>
计数器方法使用?
查看>>
带你全面了解高级 Java 面试中需要掌握的 JVM 知识点
查看>>
sonar结合jenkins
查看>>