zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    操作系统简介
    计算机基础
    Django之form
    CMDB资产采集
    Git
    User model
    多级评论
    个人主页
    media路径设置
    Web框架
  • 原文地址:https://www.cnblogs.com/wpbing/p/11369085.html
Copyright © 2011-2022 走看看