Linux系统中的命令实在是太多了,简单包括两类命令,一类是内部命令,指的是Shell自身提供的功能,一类是外部命令,指的是第三方的控制台应用程序。
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、网站设计、江门网络推广、微信小程序定制开发、江门网络营销、江门企业策划、江门品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供江门建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
一般来说,没必要完全学习所有的命令,大体上有个印象,用到的时候去查一下帮助文档,久而久之,自然熟练。
下面是网友整理的20个最常用的Linux命令:
1. ls命令
ls命令是列出目录内容(List Directory Contents)的意思。运行它就是列出文件夹里的内容,可能是文件也可能是文件夹。
2. lsblk命令
"lsblk"就是列出块设备。除了RAM外,以标准的树状输出格式,整齐地显示块设备。
3. md5sum命令
“md5sum”就是计算和检验MD5信息签名。md5 checksum(通常叫做哈希)使用匹配或者验证文件的文件的完整性,因为文件可能因为传输错误,磁盘错误或者无恶意的干扰等原因而发生改变。
4. dd命令
“dd”命令代表了转换和复制文件。可以用来转换和复制文件,大多数时间是用来复制iso文件(或任何其它文件)到一个usb设备(或任何其它地方)中去,所以可以用来制作USB启动器。
6. history命令
“history”命令就是历史记录。它显示了在终端中所执行过的所有命令的历史。
7. sudo命令
“sudo”(super user do)命令允许授权用户执行超级用户或者其它用户的命令。通过在sudoers列表的安全策略来指定。
8. mkdir命令
“mkdir”(Make directory)命令在命名路径下创建新的目录。然而如果目录已经存在了,那么它就会返回一个错误信息"不能创建文件夹,文件夹已经存在了"("cannot create folder, folder already exists")
9. touch 命令
“touch”命令代表了将文件的访问和修改时间更新为当前时间。touch命令只会在文件不存在的时候才会创建它。如果文件已经存在了,它会更新时间戳,但是并不会改变文件的内容。
10. chmod 命令
“chmod”命令就是改变文件的模式位。chmod会根据要求的模式来改变每个所给的文件,文件夹,脚本等等的文件模式(权限)。
11. chown命令
“chown”命令就是改变文件拥有者和所在用户组。每个文件都属于一个用户组和一个用户。在你的目录下,使用"ls -l",你就会看到像这样的东西。
12. apt命令
Debian系列以“apt”命令为基础,“apt”代表了Advanced Package Tool。APT是一个为Debian系列系统(Ubuntu,Kubuntu等等)开发的高级包管理器,在Gnu/Linux系统上,它会为包自动地,智能地搜索,安装,升级以及解决依赖。
13. tar命令
“tar”命令是磁带归档(Tape Archive),对创建一些文件的的归档和它们的解压很有用。
14. cal 命令
“cal”(Calender),它用来显示当前月份或者未来或者过去任何年份中的月份。
16. cat命令
“cat”代表了连结(Concatenation),连接两个或者更多文本文件或者以标准输出形式打印文件的内容。
17. cp 命令
“copy”就是复制。它会从一个地方复制一个文件到另外一个地方。
18. mv 命令
“mv”命令将一个地方的文件移动到另外一个地方去。
19. pwd 命令
“pwd”(print working directory),在终端中显示当前工作目录的全路径。
20. cd 命令
最后,经常使用的“cd”命令代表了改变目录。它在终端中改变工作目录来执行,复制,移动,读,写等等操作。
磁盘空间管理
系统软件和应用软件,都要以文件的形式存储在计算机的磁盘空间中。因此,应该随时监视磁盘空间的使用情况。Linux系统提供了一组有关磁盘空间管理的命令。
df命令
功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法:df [选项]
说明:df命令可显示所有文件系统对i节点和磁盘块的使用情况。
该命令各个选项的含义如下:
-a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。
-k 以k字节为单位显示。
-i 显示i节点信息,而不是磁盘块。
-t 显示各指定类型的文件系统的磁盘空间使用情况。
-x 列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。
-T 显示文件系统类型。
例1:列出各文件系统的磁盘空间使用情况。
$ df
Filesystem 1 K-blocks Used Available Use% Mounted on
/dev/hda2 1361587 1246406 44823 97% /
df命令的输出清单的第1列是代表文件系统对应的设备文件的路径名(一般是硬盘上的分区);第2列给出分区包含的数据块(1024字节)的数目;第3,4列分别表示已用的和可用的数据块数目。用户也许会感到奇怪的是,第3,4列块数之和不等于第2列中的块数。这是因为缺省的每个分区都留了少量空间供系统管理员使用。即使遇到普通用户空间已满的情况,管理员仍能登录和留有解决问题所需的工作空间。清单中Use% 列表示普通用户空间使用的百分比,即使这一数字达到100%,分区仍然留有系统管理员使用的空间。最后,Mounted on列表示文件系统的安装点。
例2:列出各文件系统的i节点使用情况。
$ df -ia
Filesystem Inodes IUsed IFree Iused% Mounted on
/dev/ hda2 352256 75043 277213 21% /
none 0 0 0 0% /proc localhost:(pid221) 0 0 0 0% /net
例3:列出文件系统的类型。
$ df -T
Filesystem Type 1K-blocks Used Available use% Mounted on
/dev/hda2 ext2 1361587 1246405 44824 97% /
本例中的文件系统是ext2类型的。
du命令
du的英文原义为“disk usage”,含义为显示磁盘空间的使用情况。
功能:统计目录(或文件)所占磁盘空间的大小。
语法:du [选项] [Names…]
说明:该命令逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块(1024字节)的情况。若没有给出Names,则对当前目录进行统计。
该命令的各个选项含义如下:
-s 对每个Names参数只给出占用的数据块总数。
-a 递归地显示指定目录中各文件及子孙目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。
-b 以字节为单位列出磁盘空间使用情况(系统缺省以k字节为单位)。
-k 以1024字节为单位列出磁盘空间使用情况。
-c 最后再加上一个总计(系统缺省设置)。
-l 计算所有的文件大小,对硬链接文件,则计算多次。
-x 跳过在不同文件系统上的目录不予统计。
下面举例说明du命令的使用:
例1:查看/mnt目录占用磁盘空间的情况。
$ cd /mnt $ ls -lFR total 10 -rwxrwxrwx 2 root root ll0 Ju1 3l 00:33 aa*
drwxr-xr-x 2 root root l024 Ju1 20 14:16 dev/
-rw-r--r-- 1 root root 6229 Aug 2 0l:39 s1ack
drwxrwxrwx 2 root root 1024 Aug 2 02:09 var/
1rwxrwxrwx 1 root root l0 Aug 2 0l:51 wei-/home/wei/
dev:
tota1 0
lrwxrwxrwx 1 root root 8 Ju1 20 l4:l6 cdrom-/dev/hdb
var:
tata1 37
-r-xr-xr-x l root root 36064 Aug 2 02:09 rawrite. exe*
例2:列出各目录所占的磁盘空间,但不详细列出每个文件所占的空间。
$ du
l . /dev
38 . /var
48 .
输出清单中的第一列是以块为单位计的磁盘空间容量,第二列列出目录中使用这些空间的目录名称。 注意不带选项的du命令将从当前目录开始沿着目录结构向下工作直到列出所有目录的容量为止。这可能是一个很长的清单,有时只需要一个总数。这时可在du命令中加-s选项来取得总数:
$ du –s /mnt
/mnt
例3:列出所有文件和目录所占的空间(使用a选项),而且以字节为单位(使用b选项)来计算大小。
$ du -ab
8 ./dev/cdrom
l032 ./dev
36064 ./var/rawrite. exe
37088 ./var
6229 ./s1ack
1l0 ./aa
l0 ./wei
45493 .
磁 盘 操 作
dd命令
功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。可以用该命令实现DOS下的diskcopy命令的作用。先用dd命令把软盘上的数据写成硬盘的一个寄存文件,再把这个寄存文件写入第二张软盘上,完成diskcopy的功能。需要注意的是,应该将硬盘上的寄存文件用rm命令删除掉。系统默认使用标准输入文件和标准输出文件。
语法:dd [选项]
if =输入文件(或设备名称)。
of =输出文件(或设备名称)。
ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。
skip = blocks 跳过读入缓冲区开头的ibs*blocks块。
obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。
bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。
cbs = byte 一次转换bytes字节。
count=blocks 只拷贝输入的blocks块。
conv = ASCII 把EBCDIC码转换为ASCIl码。
conv = ebcdic 把ASCIl码转换为EBCDIC码。
conv = ibm 把ASCIl码转换为alternate EBCDIC码。
conv = block 把变动位转换成固定字符。
conv = ublock 把固定位转换成变动位。
conv = ucase 把字母由小写转换为大写。
conv = lcase 把字母由大写转换为小写。
conv = notrunc 不截短输出文件。
conv = swab 交换每一对输入字节。
conv = noerror 出错时不停止处理。
conv = sync 把每个输入记录的大小都调到ibs的大小(用NUL填充)。
例1:要把一张软盘的内容拷贝到另一张软盘上,利用/tmp作为临时存储区。把源盘插入驱动器中,输入下述命令:
$ dd if =/dev/fd0 of = /tmp/tmpfile
拷贝完成后,将源盘从驱动器中取出,把目标盘插入,输入命令:
$ dd if = /tmp/tmpfile of =/dev/fd0
软盘拷贝完成后,应该将临时文件删除:
$ rm /tmp/tmpfile
例2:把net.i这个文件写入软盘中,并设定读/写缓冲区的数目。 (注意:软盘中的内容会被完全覆盖掉)
$ dd if = net.i of = /dev/fd0 bs = 16384
例3:将文件sfile拷贝到文件 dfile中。
$ dd if=sfile of=dfile
fdformat 命令
软盘是用户常用的存储介质之一。软盘在使用之前必须先作格式化操作,然后可以用tar、dd、cpio等命令存储数据,也可以在软盘上建立可安装的文件系统。
功能:低级格式化软盘
语法:format [-n] device
说明:该命令的作用是对软盘进行格式化。
-n 软盘格式化后不作检验。
device 指定要进行格式化的设备,通常是下述设备之一:
/dev/fd0d360
/dev/fd0h1200
/dev/fd0D360
/dev/fd0H360
/dev/fd0D720
/dev/fd0H720
/dev/fd0h360
/dev/fd0h720
/dev/fd0H1440
在Linux下一切资源皆文件,普通文件是文件,磁盘打印机是文件,socket 当然也是文件。
关于Linux下系统,进程能最大能打开的文件描述符数看过好多文章,但大都没有完整,详细说明每个值表示什么意思,在实践中该怎么设置?
如何通过最简单的设置来实现最有效的性能调优,如何在有限资源的条件下保证程序的运作?
max-file 表示系统级别的能够打开的文件句柄的数量,是对整个系统的限制,并不是针对用户的。
ulimit -n 控制进程级别能够打开的文件句柄的数量,提供对shell及其启动的进程的可用文件句柄的控制,这是进程级别的。
对于服务器来说,file-max和ulimit都需要设置,否则会出现文件描述符耗尽的问题。
一般如果遇到文件句柄达到上限时,会碰到"Too many open files"或者Socket/File: Can’t open so many files等错误。
相关的3个文件:
/proc/sys/fs/file-max
/proc/sys/fs/file-nr
/etc/security/limits.conf
/proc/sys/fs/file-max
Linux系统级别限制所有用户进程能打开的文件描述符总数。
max-file 表示系统级别的能够打开的文件句柄的数量,是对整个系统的限制,并不是针对用户的。
/etc/security/limits.conf
用户级别的限制是通过可以通过命令ulimit命令和文件/etc/security/limits.conf
/proc/sys/fs/file-nr 该参数是只读的,不能修改。
file-nr的值由3部分组成:
1,已经分配的文件描述符数;
2,已经分配但未使用的文件描述符数;
3,内核最大能分配的文件描述符数
/proc/${pid}/fd
众所周知,在相应进程的/proc/$pid/fd 目录下存放了此进程所有打开的fd。
当然有些可能不是本进程自己打开的,如通过fork()从父进程继承而来的。
那么这个socket:后面的一串数字是什么呢?其实是该socket的inode号。
那么,知道了某个进程打开的socket的inode号后,我们可以做什么呢?
这就涉及到/proc/net/tcp(udp对应/proc/net/udp)文件了,其中也列出了相应socket的inode号通过比对此字段,我们能在/proc/net/tcp下获得此套接口的其他信息,如对应的本地地址:端口号,远端地址:端口号对,窗口大小,状态等信息。
具体字段含义详见net/ipv4/tcp_ipv4.c 中的 tcp4_seq_show 函数。
如果socket创建了,没有被使用,那么就只会在/proc/pid/fd下面有,而不会在/proc/net/下面有相关数据。
目录中的每一项都是一个符号链接,指向打开的文件,数字则代表文件描述符。
其中0 = /dev/null ,1 = stdout, 2 = stderr,用cat或tail查看即可。
Number of file descriptors: different between /proc/sys/fs/file-nr and /proc/$pid/fd?
Linux中最大文件描述符数
How do linux file descriptor limits work?
limits.conf(5) - Linux man page
Why can't I tail -f /proc/$pid/fd/1 ?
Linux查看进程运行输出(/proc/<pid>/fd)