linux常用操作命令

linux的两种硬盘类型,一种IDE,一种SCSI

一块硬盘最多有四个主分区(扩展分区算一个分区),即主分区和扩展分区总数不超过4,

扩展分区上有逻辑分区,总数不超过12

linux的分区命名,xxyN

xx:硬盘类型,hd为IDE,sd为SCSI

yy:表示第几块硬盘(a,b,c...)

N:表示第几个分区,逻辑分区从5开始,主分区和扩展分区1-4

例如sdb5:第二块(b)SCSI硬盘(sd)的第一个逻辑分区

 

关于磁盘的挂载, 下面转载自 https://blog.csdn.net/qq_39521554/article/details/79501714

1.提一句Windows下,mount挂载,就是给磁盘分区提供一个盘符(C,D,E,...)。比如插入U盘后系统自动分配给了它I:盘符其实就是挂载,退优盘的时候进行安全弹出,其实就是卸载unmount。

2.Linux下,不像Windows可以有C,D,E,多个目录,Linux只有一个根目录/。在装系统时,我们分配给linux的所有区都在/下的某个位置,比如/home等等。

3.提问者插入了新硬盘,分了新磁盘区sdb1。它现在还不属于/。

4.我们虽然可以在一些图形桌面系统里找到他的位置,浏览管理里面的文件,但在命令行却不知怎么访问它的目录,比如无法使用cd或者ls。也无法在编程时指定一个目录对它操作。

5.这时提问者使用了 mount /dev/sdb1 ~/Share/ ,把新硬盘的区sdb1挂载到工作目录的~/Share/文件夹下,之后访问这个~/Share/文件夹就相当于访问这个硬盘2的sdb1分区了。对/Share/的任何操作,都相当于对sdb1里文件的操作。

6.所以Linux下,mount挂载的作用,就是将一个设备(通常是存储设备)挂接到一个已存在的目录上。访问这个目录就是访问该存储设备。

7.linux操作系统将所有的设备都看作文件,它将整个计算机的资源都整合成一个大的文件目录。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过访问这个目录来访问存储设备。挂载就是把设备放在一个目录下,让系统知道怎么管理这个设备里的文件,了解这个存储设备的可读写特性之类的过程。

8.我们不是有/dev/sdb1 吗,直接对它操作不就行了?这不是它的目录吗?

9.这不是它的目录。虽然/dev是个目录,但/dev/sdb1不是目录。可以发现ls/dev/sdb1无法执行。/dev/sdb1,是一个类似指针的东西,指向这个分区的原始数据块。mount前,系统并不知道这个数据块哪部分数据代表文件,如何对它们操作。

10.插入CD,系统其实自动执行了 mount /dev/cdrom /media/cdrom。所以可以直接在/media/cdrom中对CD中的内容进行管理。

 

 

 

Linux的七级运行级别(运行状态)

【0】关机

【1】单用户模式,少数进程,用于维护系统

【2】多用户,除未开启NFS服务外,其他与【3】相同

    NFS:network file system(网络文件系统),让不同操作系统之间可以共享文件

【3】完整的多用户模式,正常的文字界面

【4】未定义

【5】完整的图形界面

【6】重新引导计算机

 

1.  默认运行级别,配置文件/etc/inittab

最后一行为id:5:initdefault,其中“5”表示默认运行级别为5,即完整的图形界面级别,可修改此数字更改默认运行级别

 

 

chkconfig,可以设置自启动

chkconfig --list 列出所有的系统服务

chkconfig --add httpd 增加httpd服务

chkconfig --del httpd 删除httpd服务

chkconfig --level httpd 2345 on 把httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态。

 

chkconfig命令提供了一种简单的方式来设置一个服务的运行级别。例如,为了设置MySQL服务器在运行级别3和4上运行,你必须首先将MySQL添加为受chkconfig管理的服务:

chkconfig --add mysql

现在,我们在级别3和5上设定服务为“on”

chkconfig --level 35 mysql on

在其他级别上设为off

chkconfig --level 01246 mysql off

 

 

shutdown

 ①  shutdown –k 45

    提示当前时间,并指出45分钟后关机(-k参数不能由-c参数撤销,因为此参数并只是发出警告信息,并不是真正关机)

    ②  shutdown –h 45

        shutdown –h now

    ③  shutdown –c

    取消关机,此命令无法在当前终端中发出,应再打开一个终端,重新登录root,发出此命令

    ④  shutdown –r now “警告信息”

    发出警告信息,关机并重启

locate

locate(locate) 命令用来查找文件或目录。 locate命令要比find -name快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db 。这个数据库中含有本地所有文件信息。

后面跟的名字可以是名字的一部分,如果没有找到,使用updatedb命令升级数据库

 

查看命令帮助

man ls

ls --help

 

ls

ls –R           #递归显示目录的所有内容(包括子目录中的内容)

ls –a /root        #显示/root目录下所有文件

ls -i file1    #显示file1的inode号

touch创建文件

  touch –t 10010900 file  #把file文件的时间改为10月1日9点

  touch –t 10012600 file  #错误!时间格式不对,没有“26”时

  touch –r file1 file     #把file的时间改为file1的时间(以file1为参考)

 

 ln 创建文件的软链接或硬链接

  1. 1.  ln:创建文件链接

ln file linkFile

ln –s file linkFile

★  硬链接 .vs. 软链接:

在Linux系统中,链接分为两种,一种是硬链接(Hard  link),另一种称为符号链接或软链接(Symbolic Link)。

    ①默认不带参数的情况下,ln创建的是硬链接,带-s参数的ln命令创建的是软链接。

    ②硬链接文件与源文件的inode节点号相同,而软链接文件的inode节点号,与源文件不同,

    ③ln命令不能对目录创建硬链接,但可以创建软链接。对目录的软链接会经常使用到。

    ④删除软链接文件,对源文件和硬链接文件无任何影响。

    ⑤删除文件的硬链接文件,对源文件及软链接文件无任何影响。

    ⑥删除链接文件的源文件,对硬链接文件无影响,会导致其软链接失效(红底白字闪烁状)。

    ⑦同时删除源文件及其硬链接文件,整个文件才会被真正的删除

 

关于inode的讲解,推荐阮一峰的(写的太好了) http://www.ruanyifeng.com/blog/2011/12/inode.html

 

 mkdir:创建目录

  -p:后跟路径名,若路径中某些目录不存在,则系统将自动创建这些目录,即一次可以创建多个目录

  -m:对新建目录设置存取权限,不加此选项时,默认权限为755

mkdir –p a/b/c/d

mkdir –m 777 b      #创建目录b,权限为777

 

cp复制命令

 -r:若源文件是目录,则递归复制该目录下所有子目录和文件

cp –r a/b w            #把a下的b目录复制到w目录

cp /etc/*.conf a        #把/etc目录下所有后缀为conf的文件复制到a目录

 

 more 分页显示文本文件

  -num:一次显示的行数

  -s:多个空白行替换为一个空白行

  +num:从第num行开始显示

 

 

管道命令

Command1|Command2

管道:将Command1命令的输出作为Command2命令的输入

①  ls /etc|grep ab                  #grep表示筛选,筛选出符合后面条件的内容

②  ls /etc和ls /etc|more的输出做对比

 

 命令替换

Command1 `Command2`

or

Command1 $(Command2)

Command2的输出作为Command1的参数。

①  方法一:gedit $(locate inittab)

②  方法二:gedit `locate inittab`

 

查看文件

head -10 file1 | tail -6         #“head -10 file1”表示file1文件的前10行,“tail -6”表示在上一步的基础上读最后6行,最后结果是读取源文件的5~10行

more 分页显示文本文件

  -num:一次显示的行数

  -s:多个空白行替换为一个空白行

  +num:从第num行开始显示

①  more -s file2

②  more -20 +10 file2           #从第10行开始,每次显示20行

  cat 显示文本

  -n:由1开始对所有行编号

  -b:空白行不编号

  -s:两个以上的空白行替换为1行显示

 

 chown #更改文件拥有者

①   chown rjxy file         #把文件file的所有者改为rjxy

②   chown –R rjxy dir      #把目录dir及该目录下的所有文件和子目录的所有者都改为rjxy

 chgrp   用法同chown#更改组群

 

更改文件权限

1)  符号模式

chmod {a、u、g、o}{+-=}{rwx} 文件名1 文件名2 ……

  a、u、g、o表示要赋予权限的用户的类,a代表所有的用户,u代表文件的所有者自身,g代表和所有者同组群的用户,o代表组外的其他用户

  +-=用来增加、删除或设置权限,+表示增加权限,-表示删除权限,=表示设置权限

 

  -R:对目录及该目录下的所有文件和子目录都进行相同的操作;

①   chmod 744 file          #把文件file的读写权限改为744,即rwxr--r—

②   chmod -R 744 dir        #把目录dir及该目录下的所有文件和子目录的读写权限改为744

 

umask  设置文件默认权限

umask二进制1:代表要去掉这个权限,不管你原来有没有权限,你最终一定没有这个权限。

umask二进制的0:代表我不关心对应位的权限,你原来有权限就有权限,没有就没有, 我不影响你

umask  #查看

umask xxx #更改umask

 

setuid和setgid:让普通用户在执行该文件时拥有“文件所有者”的权限

查看/usr/bin/passwd和/etc/passwd的权限

/usr/bin/passwd的读写权限中的“s”,即setuid,表示普通用户执行此命令时暂时拥有“此文件所有者”的权限(对/usr/bin/passwd来说即root权限)。当此命令执行完,权限也随之失去。

 

Linux中的命令默认所有者都是root。

类似的,setgid则表示让执行文件的用户以该文件所属组的权限去执行。

setuid和setgid权限只对可执行文件有意义。

 

  chmod 4644 file         #修改文件file的读写权限为644,并设置setuid

  chmod 2644 file         #修改文件file的读写权限为644,并设置setgid

  chmod g+s file          #设置setgid

  chmod o+t directory     #设置stick bit

 

 which:搜索系统可执行文件(命令)的详细路径

 

 

whereis:搜索可执行文件(命令)、源代码文件、帮助文件及其他文件。

  -b:定位可执行文件

  -m:定位帮助文件

  -s:定位源代码文件

  -u:搜索默认路径下除可执行文件、源代码文件和帮助文件外的其他文件

 

 find:在系统特定目录下,查找名字具有某种特征或其具有某种属性的文件。

语法:find 【path】 -option 【-print】 【-exec –ok command】 {} \;

  path:搜索范围,即指出要查找的目录,缺省为当前目录。例如,用“/”表示根目录;

  -exec command {} \;:将查到的文件执行command命令,“{}”和“\;”之间有空格,“\;”的“;”为半角分号;

【常用选项】

  -name:按文件名查找

  -perm:按执行权限来查找

  -user:按文件所有者查找

  -newer file1 !file2:查找更改时间比file1新,但比file2旧的文件

  -type b/d/c/p/l/f:查找块设备、目录、字符设备、管道、符号链接和普通文件

  -size n[ckMG]:查长度为n块的文件(c表示字节B,k表示kB,M表示MB,G表示GB)

  -mtime -n +n n:按文件更改时间查找文件,-n表示n天以内,+n表示n天以前,n表示确切n天

  -atime -n +n n:按文件访问时间查找文件,-n表示n天以内,+n表示n天以前,n表示确切n天

  -ctime -n +n n:按文件创建时间查找文件,-n表示n天以内,+n表示n天以前,n表示确切n天

 

①   find -name abc              #在当前目录下查找名字为abc的文件

②   find -name abc’*’            #在当前目录下查找名字以abc开头的文件,注意通配符“*”用半角单引号括起来

③   find -name ‘*’abc’*’         #在当前目录下查找名字中包含abc的文件

④   find /etc -perm 644         #在/etc目录中查找权限为644的文件

⑤   find -type f -exec ls -l {} \;    #在当前目录下查找所有的普通文件,并在-exec选项中使用ls -l命令将它们列出

 

 

 1.  分区知识

1)   不同的操作系统原则上采用不同的文件系统;

若操作系统支持相同的文件格式,为了避免同一个分区下有相同的系统目录——不同的操作系统要安装在不同的磁盘分区

2)   一个硬盘最多只能有4个主分区(1个扩展分区相当于1个主分区);

扩展分区最多1个,逻辑分区可以有多个,但逻辑分区最多不超过12个,扩展分区相当于逻辑分区的容器;

 

3)   分区操作不能产生任何文件系统,只是保留了磁盘空间,要使用必须格式化来创建文件系统

windows→format;

Linux→mkfs;

 

 

du命令

显示文件和目录的磁盘使用空间。

语法:du [选项] [文件]

  -a或-all:每个指定文件显示磁盘使用情况,或者为目录中每个文件和子目录显示各自磁盘使用情况

  -b或-byte:显示目录或文件大小时,以byte 为单位

  -c或--total:除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总用量

  -s:只显示总用量

  -k或--kilobytes:以KB(1024bytes)为单位输出

  -m或--megabytes:以MB 为单位输出

 

df命令  用于显示指定磁盘的文件可用空间。如果没有指定文件名,则所有当前被挂载的文件系统的可用空间将被显示。

语法:df [选项] [文件]

u  -a:全部文件系统列表

u  -h:以常用容量单位显示

u  -i:显示inode信息

u  -k:区块为1K字节

u  -l:只显示本地文件系统

u  -m:区块为1M字节

u  -T:显示文件系统类型

 

挂载和卸载文件系统

①   把/dev/sda5挂载到/mnt/kk目录

mkdir /mnt/kk

mount /dev/sda5 /mnt/kk

df                          #查看所有的挂载信息

ls /mnt/kk                  #查看挂载的目录

②   以只读方式挂载/dev/sda5到/mnt/kk

mount -o ro /dev/sda5 /mnt/kk           #提示/dev/sda5已经挂载,需要先卸载

umount /dev/sda5                        #卸载

mount -o ro /dev/sda5 /mnt/kk

mkdir /mnt/kk/a                         #报错,因为/dev/sda5是只读的

③   查看分区挂载情况

mount –s           #查看所有已经挂载的分区情况

cat /etc/mtab

 

 

posted @ 2019-08-17 16:58  踩在浪花上  阅读(472)  评论(0编辑  收藏  举报