Linux期末复习

第一次实验内容: 初识Linux系统环境与命令

1

1.1 时间相关

 #man  date

 #info  date                  //请比较 man 和 info 两个命令的区别

 # date      //显示当前时间

 # date   032210152013    //设置系统时间为 2013年03月22日10:15   格式如[MMDDhhmm[YYYY]]  即 月月日日时时分分年年年年

#man   cal

 #info   cal

 # cal             //当月日历

 # cal  09 2019    //指定月的日历

 # cal  2013       //2013年的日历    

1.2  bc 程序的三种退出方式   //通过该项掌握交互型命令的退出方式

   # bc              //计算器

1.2.1 退出    

      输入 quit  自然退出,  其他命令可能的自然退出 为  q (如top 命令)  exit  等

1.2.2 # bc

      在终端界面下,点击文件-》打开标签   新建一个标签, 在这个标签下输入

         #ps aux | grep bc   //查看第二列获得bc 的PID, 比如为 2608

         #kill -9  2608        

      回到第一个标签下,可以看到 bc 这个进程已被杀死

1.2.3 # bc

      输入 Ctrl+Z   或者  Ctrl+C  强制退出  

1.2.4 

分别采用   Ctrl+Z  与  Ctrl+C  终止 bc 进程, 然后 ps aux | grep bc  比较一下两者的区别

1.3 echo命令   类似 printf

#man echo          //通过帮助文件确定 不换行的 参数  

# echo  $SHELL    

# echo  $LANG

# echo  $PATH

#echo “2.0 *  4” | bc         // 管道的再学习

1.4 帮助命令

# clear     清屏

# man  wc

# wc  -h

# wc --help

# man  cat

# info  cat

2 命令行方式获取系统相关的信息, 点击终端

2.1 cpu         

# cat  /proc/cpuinfo

2.2 mem         

# free     

# cat  /proc/meminfo

2.3 disk         #

fdisk  -l  

2.4 filesystem  

# df -h

2.5 网络        

# ifconfig   

# ethtool   eth0

#ping  www.baidu.com 

2.6 显卡        

# lspci | grep VGA

2.7 Shell版本   

# echo  $SHELL

2.8 内核版本    

# uname -a

# uname -r

2.9 进程        

# ps  -aux 

2.10 负载      

# top d  1

3 fc30 的关机

  #poweroff    关机

  #reboot      重启

  或者通过 图形界面  选择相关的操作

Linux文件与目录的简单命令

1  进入系统,打开终端,

   $useradd  ludong

2 命令行修改目录与文件的权限  (chmod)

2 命令行修改目录与文件的属主  (chown *.* 文件)

3 查看系统的根目录的结构     

$ su  test      //切换到 test用户

4  mkdir -p  参数的使用

 $ cd

 $ mkdir quhp    // 创建已经存在目录 报错              -p, --parents     需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理

 $ mkdir -p  quhp  // 无错返回, 且修改时间未变

$ mkdir -p  quhp/quph2/quhp3   //三级子目录成功创建

5 ls查看隐藏文件

 $ ls -a

 $ ls -al   // 注意这三个显示的区别

 $ ls -l   test     // 显示修改时间

 $ ls -lc  test     // 显示写入时间

  我们注意到因为在test 创建后我们对其内容一直没有写入,所以 修改时间时间就是当初的创建时间,但是在此过程中修改了文件属主与权限,所以 写入时间会变化。

6 cp -a 加属性  -r  递归复制

  $ cp  -r  quhp  our    //把整个quhp目录内容复制到our

  $ ll  quhp

$ cp -a  quhp  our2   //在递归复制的同时进行属性复制

7 mv 的文件改名+移动

  $ touch  1.txt  2.txt  3.txt  4.txt  //同时创建4个空文件

  $ mv  1.txt 2.txt  4.txt  quhp2     //三个文件移动到quhp2子目录

  $ mv 3.txt  quhp2/quhp3/5.txt       //移动+改名

  $ mv *.txt   quhp3                  //通配符移动 

8 rm 的默认与递归删除

  $ cd /root/quhp/quhp2/quhp3

  $ rm 1.txt    // 需要确认后删除

  $ rm -f  2.txt    // 直接删除

  $ rm -rf  quhp3    //直接删除目录+文件

9 文件查看

  $ cd /root/quhp/

  $ cat /proc/cpuinfo  // 顺序一下显示

  $ tac /proc/cpuinfo  // 倒序一下显示

  $ cat -b  /proc/cpuinfo   // 空格不显示行号

  $ cat -n  /proc/cpuinfo   // 空格也显示行号

  $ cat /proc/cpuinfo  /proc/meminfo  /proc/meminfo /proc/cpuinfo   > test      // 把两个文件内容拼接重定向到 test文件中

  $ cat  test          // 查看test 内容

  $ cat test test >> test      // 报错   没法重定向到同名文件中

  $ more  test     //一屏显示     

          Space: 向下翻一页

          Enter:  向下滚动一行

          /字符串: 向下查询关键字     如/Huge  可以看到有Huge 的那行显示在屏幕的第一行

          q:           退出

  $ less test   // 在more 基础上可以向上

          PageDown  向下翻一页  

          PageUp  向上翻一页   

          ?字符串   向上查询关键字

10 文件头部跟尾部的获取

 $ cd /root/quhp

 $ wc -l test   //获取文件行数  如 136

 $ head -n 10  test   

 $ head -n -100  test    //显示头 36 行

 $ head -n -100  test | wc -l    //确认就是36

 $ tail -n 23  test

 $ tail -n +100 test    //显示 后37行,因为包含第100行   

 $ tail -n +100 test | wc  -l 

 $ head -n 20 test | tail -n 10     //显示 10-20 行    

Linux文件与目录的复杂命令

1  touch命令   :创建不存在文件  or 修改文件时间(文件已经存在)

    #touch  1.txt   

    #ll       // 查看文件的最近修改时间

    #sleep  30   //休眠30秒

    #touch  1.txt 

    #ll       // 可以看到文件的修改时间变化了

2  创建or生成文件的N种方式

 2.1  #touch  2.txt     //创建空文件

 2.2  #cp /proc/cpuinfo   3.txt         //复制改名

 2.3  #cat  /proc/cpuinfo  /proc/meminfo  > 4.txt   // 拼接

 2.4  # echo "hello world in $SHELL"  > 5.txt    // echo重定向

      # echo 'hello world in $SHELL'  > 5.txt       // echo重定向,  请注意“”  ‘ ‘ 的区别 

      # echo “hello world 2”  >> 5.txt            // 请注意 >  与  >> 的区别

2.5  # vim   hello.c   // 写一个hello world的C程序 保存退出 可改为gedit   or  gvim 

      # gcc  -g -o  hello hello.c  

      #./hello    //本地运行,确认运行结果

3  相对目录与绝对目录

  # cd

  # mkdir  -p  quhp     

  # cd   /root/quhp

  # cp  /proc/cpuinfo  .

  # cp  /proc/cpuinfo   cpuinfo2

  # cp  /proc/cpuinfo   /root/quhp/cpuinfo3

  # cp  /proc/cpuinfo   ../quhp/cpuinfo4 

  # mkdir  quhp2

  # cp /proc/cpuinfo  quhp2/    

  # cd quhp2      

  # pwd                      //确认你在哪个目录           

  # cd -                     //再次确认你在哪个目录

  # cd  /root/quhp/quhp2

  # pwd

  # cd  ..

  # pwd

  # cd ..

  # pwd

4  umask  003 进行权限的修改,003表示在当前基础上减去该值

   默认 文件  -rw-rw-rw-

    默认 目录 drwxrwxrwx 

   #mkdir -p  /root/test

   #cd /root/test

   #umask –S    //显示默认权限 u=rwx,g=rx, o=rx

   #umask        //数字显示 022

  

   #touch 1.txt

   #ll  1.txt    //可以看到它的权限是 -rw-r--r--, 因为g与o的两个w已经被去掉了

   #cd ..      

   #ll          // 可以看到 test 的权限为 drwxr-xr-x  

   #umask  002

   #mkdir -p  test2 

   #ll          //test2 的权限为 drwxrwxr-x   比test 多了个w

   #cd test2

   #touch 2.txt

   #ll         // 2.txt 的权限为 -rw-rw-r--   也比 2.txt 多了个w

  请再恢复成 022

5  

    #echo  $PATH               //注意有/root/bin ,实际上这个目录当前还不存在

    #cd                        //回到/root目录   

    #mkdir  bin

    #whereis  ls  

    #cp  /bin/ls    bin/lsquhp

    #lsquhp                   // 效果同 ls    

    #mv  bin/lsquhp  /home/

    #lsquhp                    //找不到命令

    #rm -f   /home/lsquhp

6  文件名查找

    #locate   top   // 显示所有文件的绝对路径中有top 字符串的文件

    #locate   top  | less

   

    #touch  soft34.txt  

    #locate  soft34          // 应该找不到,因为数据库中没有更新

   

    #updatedb                //更新数据库

    #locate  soft34          // 确认可以找到

   find

   -mtime n :n天之前的一天之内被更改的文件

   -mtime +n: n天之前(不含n天本身)被更改的文件

  -mtime –n: n天之内(含n天本身)被更改的文件

   -newer file: 列出比file 还要新的文件

  #find  /root  -mtime 0    // root 目录下当天修改过的文件   

  #find /etc  -newer  /etc/passwd     // etc 目录下比 passwd 还要新的文件

7 排序   #sort //排序  #uniq //去冗

  一条语句实现以上的功能

  #cat /proc/meminfo  /proc/cpuinfo  /proc/cpuinfo  /proc/meminfo | sort | uniq > test2.txt

  #less test2.txt 

8 比较

  #cd   /root

  #mkdir  old

  #mkdir  new

  #cp -a  quhp/*   old/

  #cp -a  quhp/*   new/

  #diff  old new      // 比较两目录

  #gvim   new/cpuinfo      //分别删除某行、增加某新行、修改某行 

  #diff   old/cpuinfo new/cpuinfo   //分别确认 上述三个修改操作的 比较结果

  #mv    new/cpuinfo  new/cpuinfo.bak

  #diff  old  new  

9 通过ps 与grep 查看现在的活跃进程

   #ps aux

   #ps aux  | less

   #ps aux  | grep usr   // 过滤并显示带有 usr 字符串的行

   #ps aux  | grep usr | grep 21    // 再次过滤

   #cd

   #grep   include  *     

   #grep -r  include  *     // 在root目录下查找内容含有include 字符串的所有文件,注意 -r 的使用

linux磁盘与文件系统

1  通过vmware 对linux 增加一个SCSI磁盘 sdb  10G

2  启动linux, root用户 进入系统

   查看系统支持的文件系统类型

  # cd /lib/modules/***/kernel/fs        (请使用 /lib/modules/ 目录下的当前系统版本      注意 ... 使用tab键补齐)

  # ls

  再查看proc 文件系统 

   # cd   /proc

   # ls     其中数字目录是进程号PID, 里面是每个进程的具体信息, 下面我们具体看一下

   打开一个新标签, 输入命令 # top d 1 

   在另一个标签下  

    # ps  aux | grep top   获得该进程的PID 如 2875

    # cd /proc/2875      // 进入该PID目录

    # ls

    # cat cmdline       // 可以看到该PID的命令是什么

    同理可以看到该进程的其他的信息,比如 内存,cpu io  等,大家可以查看一下这些相关的文件

  

3  查看已经挂载起来的文件系统的使用情况 /dev/sda1  /dev/sda2 的详细情况

   #  df  -hT

   #  mount     比较这两个命令的区别

4  显示 sda sdb 两块磁盘的详细信息

   #  fdisk -l

5  在sdb上创建一个3G的分区 sdb1 

   #  fdisk  /dev/sdb    

   m for help  p for print  n for add   w for save  

   输入n 回车; 输入p 回车 选择primary ; 输入1 回车 确认 分区号 ; 输入 起始位置,直接回车; 输入分区大小 +3068M 回车;

   输入p 回车确认创建成功; 输入w 回车 将磁盘信息写回

6  给sdb1 加上标签,并确认  (不用做)

   #e2label  /dev/sdb1  “ludong”

   #dumpe2fs  /dev/sdb1 | less  

7  采用dd 命令测试并记录 sdb1 分区的读写性能   分别读写2G    (为了节省时间,可以只读写  300M)

   #  time dd if=/dev/sdb1 of=/dev/null  bs=1M  count=2048

       记录分区读测试所得时间为 time_read_dd = ?   

          if = input file 

          of = output file

          bs = block size

          count   数量

   #  time dd if=/dev/zero  of=/dev/sdb1 bs=1M  count=2048

       记录分区写测试所得时间为 time_write_dd = ?

8  把分区sdb1 格式化成ext3 文件系统

   #  mkfs  -t  ext3  /dev/sdb1

  

9  把分区挂载到指定目录下

   #  mkdir –p  /mnt/name 

   #  mount  /dev/sdb1  /mnt/name  

10  查看新挂载的分区 ,注意其大小变化, 因为其格式化文件系统占用了一些磁盘空间

   # df –h

   # df  -aT        比较这两个参数的区别

   # mount

11 采用dd命令在指定目录下创建一个大小为2G的文件,并记录时间

   #  time  dd if=/dev/zero of=/mnt/name/test.img  bs=1M  count=2048

        记录文件写测试所得时间 time_write_file = ?

12 采用相关命令查看文件test.img 的大小

  #  cd /mnt/name 

  #  ll –h  

  #  du –h

13  采用cp命令测试对该文件的读性能,并记录时间

   # time cp /mnt/name/test.img  /home/

       记录文件读测试所得时间 time_read_file = ?      

14  测试环境清理

  #  rm  -rf  /home/test.img

  #  umount  /mnt/name

  #  df -h     确认umount成功

  #  fdisk   /dev/sdb

   输入d回车, 删除sdb1  输入w回车,写入磁盘

  #  fdisk -l     确认分区删除成功

  #  poweroff     关机

实验结果:

   记录并输入 dd + cp 的两个项目的读写数据, 共四个值

实验内容2  mount挂载点的内容变更

0.   虚拟机配置,添加两个SCSI磁盘 sdb  sdc  大小分别为 10G  20G

     开机进入系统

     # fdisk -l   确认有三个磁盘的存在,其中 sdb sdc 上没有分区, 若有请删除

1.   在sdb上创建两个分区  

     #fdisk  /dev/sdb

        n  p  1   +3096M 

        n  p  2   +1024M

        w

2.   在sdc上创建两个分区  

     #fdisk  /dev/sdc

        n  p  1   +2048M 

        n  p  2   +5G

        w

3.  

# fdisk -l    再次查看所有磁盘与所有分区,确认之前新建的4个分区是否都创建成功

    

4.   对其中两个分区格式化

     #mkfs -t  ext3   /dev/sdb2

     #mkfs -t  ext4   /dev/sdc1

5.   在 / 目录 也就是 sda 上进行 下面操作

     # df -aTh     确认 / 目录在 挂载在 sda 磁盘上

     # mkdir  -p   /mnt/name

     # mkdir -p   /mnt/name/test_sda 

     # cp  /pro/cpuinfo    /mnt/name/cpu_sda

     # dd if=/dev/zero  of=/mnt/name/test_sda/256M   bs=1M  count=256

     # ll  /mnt/name         查看这个目录的文件与子目录

     # df -h  /mnt/name      显示的是  sda磁盘的可用容量

     # du  -ah  /mnt/name    显示的是  这个目录及子目录的大小  256M左右

6.  在  sdb2 分区 上进行 下面操作

     # df -aTh     确认 / 目录在 挂载在 sda 磁盘上

     #  mount  /dev/sdb2  /mnt/name

     # df  -aTh        挂载点跳转了

     #  ll  /mnt/name   可以看到之前的子目录 与文件 都看不到了

     # mkdir -p   /mnt/name/test_sdb 

     # cp  /pro/cpuinfo    /mnt/name/cpu_sdb

     # dd if=/dev/zero  of=/mnt/name/test_sdb/512M   bs=1M  count=512

     # ll  /mnt/name         查看这个目录的文件与子目录

     # df -h  /mnt/name      显示的是  sdb 磁盘的可用容量

     # du  -ah  /mnt/name    显示的是  这个目录及子目录的大小   512M 左右

 

7.  在  sdc1 分区 上进行 下面操作

     # df -aTh     确认 /mnt/name 目录在 挂载在 sdb2 磁盘上

     #  mount  /dev/sdc1  /mnt/name

    

     # df  -aTh        挂载点跳转了

     #  ll  /mnt/name   可以看到之前的子目录 与文件 都看不到了

     # mkdir -p   /mnt/name/test_sdc 

     # cp  /pro/cpuinfo    /mnt/name/cpu_sdc

     # dd if=/dev/zero  of=/mnt/name/test_sdc/700M   bs=1M  count=700

     # ll  /mnt/name         查看这个目录的文件与子目录

     # df -h  /mnt/name      显示的是  sdc 磁盘的可用容量

     # du  -ah  /mnt/name    显示的是  这个目录及子目录的大小   700M 左右

8.   依次卸载

     #umount  /mnt/name     

    

     # df  -aTh        挂载点跳转到 sdb了

     # ll  /mnt/name         显示sdb 了

     #umount /mnt/name

     # ll  /mnt/name         显示sda 了

     # df  -aTh        /mnt/name 挂载点没有了,意味着回到 sda 上了

9.  在有挂载点的情况下重启,看看什么情况

    #  mount  /dev/sdc1  /mnt/name

    # df -h

    # reboot 

    重启之后进入系统

    # df -h       看看挂载点还在不在?????

实验内容3   特殊设备loop与swap

实验步骤:

0 虚拟机配置,添加一个SCSI磁盘 sdb  大小10G

1 创建大文件

    #dd if=/dev/zero  of=/home/loopdev bs=1M  count=512

   if = input file 

   of = output file

   bs = block size

   count   数量

    #ll –h  /home/loopdev

2 格式化

   #mkfs –t ext4  /home/loopdev

  挂载

   # mount –o loop /home/loopdev  /mnt

   #df -h

3 在loop设备上再创建loop设备

  #dd if=/dev/zero  of=/mnt/loopdev2 bs=1M  count=256  

  #mkfs –t ext4  /mnt/loopdev2

  #mkdir  -p  /mnt2

  # mount –o loop /mnt/loopdev2  /mnt2

  #df -h 

4 在mnt2 的目录下新建一个大文件,查看并确认两个loop设备的空间变化

  #dd if=/dev/zero  of=/mnt2/bigfile bs=1M  count=100

  #df -h 

5 创建swap设备

  #fdisk  /dev/sdb 

     n  p   1   +3068M     //创建sdb1

     t    修改系统ID 

     1

     82   改成swap的ID     //从linux分区切换成swap设备

     w

  #partprobe              //让内核更新分区表

  #mkswap   /dev/sdb1     构建swap格式

6  挂载上

   # free

   #swapon   /dev/sdb1

   #free

#swapon –s  列出目前使用的swap设备有哪些?

8 同样可以使用文件构建swap

  # dd if=/dev/zero bs=/tmp/swap  bs=1M count=128M

  #mkswap  /tmp/swap

  #swapon /tmp/swap

9 卸载swap设备

  # swapoff /tmp/swap

  # swapoff /dev/sdb1    //关掉swap

  # free

实验内容4 了解与掌握磁盘分区的自动挂载  (最后做,以免出现问题,开机不成功)

实验步骤:

0.   虚拟机配置,添加一个SCSI磁盘 sdb  大小10G

1.   在sdb上创建两个分区  

     #fdisk  /dev/sdb

        n  p  1   +2048M 

        n  p  2   +3068M

        w

2.   对两个分区格式化

     #mkfs -t  ext3   /dev/sdb1

     #mkfs -t  ext4   /dev/sdb2

3.   创建两个挂载目录

     #mkdir -p   /test1

     #mkdir -p   /test2

4.   对/etc/fstab 进行备份

     #cp  /etc/fstab   /etc/fstab.bak 

5.   编辑/etc/fstab,  在后面加入两行,使得这两个分区能够在随着开机而自动挂载

     #gvim  /etc/fstab

        /dev/sdb1               /test1                  ext3    defaults        1 2

       /dev/sdb2               /test2                  ext4    defaults        1 2

     保存退出

     这里注意:

       注意: 前三列分别是 设备名、挂载点、文件系统格式, 每行除了最后一列以空格间隔以外,其余都是以Tab分开

7     重启机器

      #reboot

8     开机后

      #df  -h    //可以看到开机后,sdb的两个分区都实现了自动挂载

 Bash 与Bash的环境变量

一、编辑器vim

1 进入工作目录

#cd

#mkdir -p  testvi; cd testvi

2 编辑一个C程

#vim hello.c

   #include <stdio.h>

   #include <stdlib.h>

   int main(int argc, char* argv[])

   {

       printf("This is only hello world in linux!\n");

        return 0;

   }

   保存退出 :wq

#gcc -g -o hello  hello.c

#./hello      //执行该命令

3 熟悉末行模式

#cat  /proc/cpuinfo  /proc/meminfo /etc/passwd > test.txt

#vim +3  test.txt

:set nu           //显示行号

:/cpu             //搜素关键字 cpu     

:$                //光标移动到最后一行

:0                //光标移动到第一行

:set nonu         //取消行号

:w  test2.txt     // 另存为

4 vim 的环境变量设置

vim  hello.c

:set all            // 显示目前所有环境参数

:set                //显示与系统默认不同的设置参数

:set  autoindent   //自动缩排

:syntax on         //显示语法检查

:set bg=dark       // 注释颜色不同

:wq

5 在命令行模式整行编辑

#vim test.txt

光标移动到第五行

dd     // 删除当前行 

d3d    // 删除当前3行

y3y    // 复制当前3行

光标移动到某行

p      // 把刚才的复制内容粘贴

.      // 重复刚才的命令

u      // undo 取消刚才操作

6

滚屏

(1)[Ctrl+U]组合键

(2)[Ctrl+D]组合键

分页

 (1)[Ctrl+F]组合键

 (2)[Ctrl+B]组合键

状态命令

  [Ctrl+G]

7  退出vim

接着刚才的操作, test.txt 仍然处于打开状态

ZZ   保存退出

#vim test.txt

:w  test2.ccc   // 另存为 test2.ccc

:wq              // 保存退出

:q!              // 不保存强制退出

二、Bash 与Bash的环境变量

1  shell 的相关配置文件

   #cat   /etc/shells         //查看系统支持的shell种类   我们只有三行

   #more /etc/passwd          //查看每个用户登录时所使用的shell

   #ll  /bin/*sh        //显示相关shell,可以看到 sh 已经是bash 的一个链接文件, 因为bash 是sh的兼容扩展

#cd

   #mkdir -p  testbash ; cd  testbash

   #pwd

   #cat /proc/cpuinfo > test.txt  ;  cat /proc/meminfo >> test.txt

   #more  test.txt

   #mkdir -p shell ; cp test.txt shell/test.bak ; \   (这里输入个回车)

    ls -al  shell

  

3  查看bash的内置命令

   #type -t  ll

   #type -t  cd

   #type -t  mkdir     //注意 file alias builtin  的区别

   

4  学习通配符

   #touch  1.txt  a1.txt  aa.txt abb.txt  bbb.date  abz.dd    abc   abc.123 

   // 理解并验证以下各操作所想达到的目的

   #ls -l  [0-9]*

   #ls -l  [a-z]*.txt

   #ls -al *.??

   #ls *[a][b]*

   #ls ab[!z]*

   #ll  abc*

   #rm -f a*.txt

   #rm -f  *.*

   #rm  -f *  

     

5  别名

   #alias                   //显示所有当前的别名, 会发现 rm 其实也是别名  是rm -i

   //别名既可以生造一个单词,也可以覆盖一个已有命令

   #alias lm='ls -al'

   #ls -al

   #lm                    //这两个命令应该显示结果一样

   #touch aaa ; rm  aaa   //会显示提示,询问是否删除?

   #alias rm='rm -f'      // 将rm 从 rm -i 改为 rm -f

   #touch aaa

   #lm  

   #rm aaa    //不再提示,直接删除

   #lm

  

   #unalias  lm

   #alias

   #lm            //已经被unalias 取消, 报错

 

8  历史记录

   #history

   #history  30

   #上下键

   #!!:  执行最近一次使用的命令;

   #!n:  其中 n 为一个具体的数字,表示执行在命令历史记录中的第 n 个命令;

   #!s:  其中 s 为一个字符串,表示执行命令历史记录中以该字符串开头的最近的一个命令。

9 问题: 需要获取当前机器的eth8(不一定是eth8 根据自己机器情况变动) 的 IP(192.168.23.189) 并进一步获取Ip的网段前缀(192.168.23.)

   #ifconfig

   #ifconfig  eth8

   #ifconfig  eth8 | grep "inet addr"

   #ifconfig  eth8 | grep "inet addr"  | gawk '{print $2}' 

   #ifconfig  eth8 | grep "inet addr"  | gawk '{print $2}'  | cut -c6-20

   #ifconfig  eth8 | grep "inet addr"  | gawk '{print $2}'  | cut -c6-16

10  #env 查看常见环境变量说明

   #set  查看所有变量

11 环境变量的显示: echo

# echo $PATH    或者  

# echo ${PATH}

12 变量的设置:   注意空格报错

# var1=“lang is $LANG”   

# var2=‘lang is $LANG’      //注意区分

# echo $var1

# echo $var2

# set  | grep var               //应该有var1 2,因为包含了所有变量

# env  | grep var               //没有该变量的显示, 因为只包含环境变量 

13 变量的取消

#unset var2

#echo $var2

#echo $var1

#var1="dir is $HOME"

#var2='dir is $HOME'

#export var1 

#env | grep var1

#su  quhp        //之前需要新建一个用户   #useradd  quhp

#echo $var1      //因为export 所以有值

#echo $var2      //为空

#su 

#关闭当前终端, 再打开一个终端

#echo $var1

#echo $var2   //应该均为空

14 环境变量的配置文件

#uname -a

#uname -r

#version='uname -r'    //注意是倒引号

#version="$version"" in ludong "

#echo $version

15

#关闭当前终端,再打开一个终端

#

#echo $version   //应该为空

#cd

#cp .bash_profile  .bash_profile.bak   

#gvim .bash_profile     //gedit  or  vim 都可以

 

   version=`uname -r`   //在最后面加入该行

   :wq

#source .bash_profile   //让其立刻生效,有可能不成功,  就需要注销后重新登录让其生效

再打开一个终端

#echo $version

16

同样的道理,需要把 rm -i   改成 rm -f

#cd

##touch aaa ; rm aaa    //会要求确认

#cp .bashrc  .bashrc.bak

#gvim  .bashrc

   光标移动到rm 那行

   alias rm='rm -f'

   :wq

#source .bashrc

#alias

#touch aaa ; rm aaa              // 不再有提示  

闭当前终端,否则 history 历史命令就找不到了!

  0.创建一个目录并进入,之后就在该目录下进行操作

  # cd ; mkdir -p  mytest; cd mytest

  1.合并cpuinfo 和meminfo为一个文件 学号.txt , 将读写权限设置为 所有人都只有读的权限。

  # cat  /proc/cpuinfo  /proc/meminfo  > 1234.txt

  # chmod 444  1234.txt

  # ll  1234.txt

  2. 建立三级目录test1/test2/test3,将目录test1的内容全部拷贝到 目录 简拼。

  # mkdir  -p   test1/test2/test3

  # mkdir  -p  ludong

  # cp -r  test1/*   quhp/

  # ll  quhp   

 

  3.建立三级目录test1/test2/test3,将目录test1 拷贝到 目录简拼2下,并保证其元数据信息的一致。

  # mkdir  -p   test1/test2/test3

  # mkdir  -p   quhp2

  # cp  -a   test1   quhp2/

  # ll  quhp2

  4. 依次将cpuinfo (2遍) 和meminfo(3遍)合并为一个文件 全拼.txt,然后显示其第15行到30行的内容。

  #  cat /proc/cpuinfo  /proc/cpuinf  /proc/meminfo  /proc/meminfo  /proc/meminfo  >  quhaiping.txt

  # head -n 30  quhaiping.txt  | tail -n 16 

 

  5. 依次将cpuinfo (2遍) 和meminfo(3遍)合并为一个文件 全拼.txt,然后将其第15行到30行的内容命名为  全拼.txt。

  #  cat /proc/cpuinfo  /proc/cpuinf  /proc/meminfo  /proc/meminfo  /proc/meminfo  >  quhaiping.txt

  # head -n 30  quhaiping.txt  | tail -n 16  >  quhaiping.txt     // 错误的做法   该文件为空 

  # cat /proc/cpuinfo  /proc/cpuinf  /proc/meminfo  /proc/meminfo  /proc/meminfo  >  quhp.txt  

  # cat  quhp.txt > quhp.txt                         //报错 cat: quhp.txt:输入文件是输出文件

 

  # cat /proc/cpuinfo  /proc/cpuinf  /proc/meminfo  /proc/meminfo  /proc/meminfo  >  quhp.txt  

  # head -n 20  quhp.txt > quhp.txt                 // 不报错,但是为空,原因同上

  正确做法

  #cat /proc/cpuinfo  /proc/cpuinf  /proc/meminfo  /proc/meminfo  /proc/meminfo  >  quhaiping.txt

  # head -n 30  quhaiping.txt  | tail -n 16  >  quhp.txt

  # mv quhp.txt  quhaiping.txt

  6.分屏显示命令ls 的帮助文件。

  # man  ls |  less

  7.建立三级目录test1/test2/test3,并将test1目录内容打包成文件 全拼.tgz。

  # mkdir  -p   test1/test2/test3

  # tar  -zcvf  quhaiping.tgz  test1                //知道这个命令即可

  8.新建用户名字为 “简拼”,建立三级目录 linux1/linux2/linux3, 将整个目录属主改为 “简拼”。

  # useradd  quhp                 //创建用户

  # mkdir  -p   test1/test2/test3

  # chown -R quhp.quhp  test1

 

  9.依次将cpuinfo (2遍) 和meminfo(2遍)合并为一个文件 简拼.txt, 然后对该文件进行排序去冗,并分屏显示。 

   # cat /proc/cpuinfo  /proc/cpuinf  /proc/meminfo  /proc/meminfo    >  quhp.txt

   # sort quhp.txt | uniq  | less     

  10.复制cpuinfo 到当前目录下,然后对其进行排序去冗。(文件名保持不变)

  # cp  /proc/cpuinfo  .

  # sort  cpuinfo  | uniq  > temp.txt

  # mv   temp.txt  cpuinfo

  11.合并 简拼.txt与cpuinfo  两个文件内容,并重新命名为简拼.txt。

  #  cat cpuinfo  >> quhp.txt 

  12 将当前同时含有“bin”和“var”两个字符串的进程重定向到文件 varbin.txt 。

  # ps aux  | grep bin | grep var  > varbin.txt

  

  13 一条命令对硬件网卡(如ens33)的信息进行过滤截取,最后得到其MTU值(如1500)

  # ifconfig  ens33

  # ifconfig  ens33  | grep  MTU          //mtu根据具体情况 大小写

  #ifconfig  ens33   | grep MTU  | gawk '{print $4}'

  14 设置一个变量mtu  ,其值为 过滤得到的 MTU 值  (1500)

  # mtu = `    ifconfig  ens33   | grep MTU  | gawk '{print $4}'   `        //注意最外层是倒引号

  # ehco $mtu

  15  设置一个全局变量mtu  ,其值为 过滤得到的 MTU 值  (1500)

   # mtu = `    ifconfig  ens33   | grep MTU  | gawk '{print $4}'   `        //注意最外层是倒引号

   # ehco $mtu

   需要编辑配置文件 gvim .bash_profile   把上面的赋值命令添加进去

Linux 用户与组群的管理

1 命令行用户的创建、密码 与删除

 #useradd  linux

 #passwd   linux

    交互式连续两次输入密码 123456

 #less  /etc/passwd

 #less  /etc/shadow   应该在最后一行能看到已经成功创建

 #userdel  -r linux   删除,请注意参数的作用

 #less  /etc/passwd   确认删除

2 熟悉 passwd 命令的 stdin 参数

 #useradd  ludong

 #useradd  ludong2

 #passwd   ludong     输入123456

 #passwd   ludong2    输入123456

 #echo 654321 | passwd --stdin  ludong2    修改ludong2 的密码

 #su            再回到root

3 熟悉 cut与xargs

  #finger  root

  #finger  ludong  ludong2

  #cut -d':'  -f1  /etc/passwd    回车符分隔显示所有用户

  #cut -d':'  -f1  /etc/passwd | xargs -n 1  finger      显示所有用户信息

4 熟悉 pwunconv and pwconv 

  #less  /etc/passwd

  #less  /etc/shadow   这两个文件都存在,且 passwd 的第二列密码显示为 x

  #pwunconv           两个文件合二为一

  #cat /etc/shadow   文件已经不存在

  #cat /etc/passwd   第二列直接就是密码的密文

  #pwconv            再把这两个文件分开

  #cat /etc/passwd 

  #cat /etc/shadow   这两个文件又恢复原状

5 采用 newusers 批量创建用户         

// 这是批量用户添加的第一种方式,以命令行的方式完成后,将下列命令集成到一个脚本中,运行一个sh文件即可实现该功能(思考题1)。

//  变种, 只有一个配置文件passwd.txt 实现添加与删除

 5.1  #groupadd  -g 800  linux2012

 5.2  #gvim  student.txt

t001001:x:801:800::/home/t001001:/bin/bash

t001002:x:802:800::/home/t001002:/bin/bash

t001003:x:803:800::/home/t001003:/bin/bash

t001004:x:804:800::/home/t001004:/bin/bash

 5.3  #gvim passwd.txt

t001001:t001001

t001002:123456

t001003:123456

t001004:123456 

  5.4 #newusers  < student.txt

  5.5 #pwunconv  

      #chpasswd  < passwd.txt

      #pwconv

  5.6 #cat /etc/passwd 

      #cat /etc/shadow    确认四个用户已成功创建

6  利用 xargs  与userdel 组织 删除 刚才创建的用户

   #cut -d':' -f1 student.txt 

   #cut -d':' -f1 student.txt  | xargs -n 1  userdel -r

   #cat /etc/passwd    确认四个用户已成功删除

7 利用 useradd  与 passwd --stdin  批量创建用户脚本

// 这是批量用户添加的第二种方式,考虑如何将添加与删除集成到一个脚本中,以一个flag变量控制是添加还是删除(思考题2)。

 7.1  #gvim  account1.sh

#!/bin/bash

if [ ! -f "$1" ]; then

       echo "$1 no exist!"      

       exit 1

fi

usernames=`cat $1`

for username in $usernames

do

       useradd $username

       echo $username | passwd --stdin  $username

done

exit 0      

 7.2 #gvim std.txt

std001

std002

std003

std004

  7.3 #chmod +x *.sh

      #./account1.sh   std.txt    成功创建std001-004, 可去 /etc/passwd 确认

      #./account1.sh   std.txt2   报告 该文件不存在

      #./account1.sh

  7.4  #gvim  delaccount1.sh

#!/bin/bash

if [ ! -f "$1" ]; then

       echo "$1 no exist!"

       exit 1

fi

usernames=`cat $1`

for username in $usernames

do

       echo "$username will be deleted!"

       userdel -r  $username

done

exit 0 

 

   7.5  #chmod +x *.sh

       #./delaccount1.sh  std.txt   将这四个用户删除

8 再次利用 xargs  与userdel 组织 删除 刚才创建的用户

  #./account1.sh   std.txt    再次成功创建std001-004

  #cat std.txt | xargs -n 1  userdel -r   成功删除

9  获取数字长度的小脚本

 #gvim test1.sh

#!/bin/bash

num=$1

count=${#num}

echo "$num have $count "

exit 0

  #chmod +x *.sh

  #./test1.sh  23

  #./test1.sh  999

  #./test1.sh  12345678

10 获取某字符串指定子串的小脚本

  #gvim test2.sh

#!/bin/bash

nu=0123456789

nu2=$nu

nu=${nu:$1:$2}

echo "$nu2 : from $1 and  $2 count is $nu"

exit 0

 #chmod +x *.sh

 #./test2.sh  1 2

 #./test2.sh  0 4

 #./test2.sh  2 3

11 最后一个集大成的脚本, 只需要输入 四个产生 前缀、位数、首位、数量 就可以批量创建

// 这是批量用户添加的第三种方式 的 第一个变种, 需要生成一个配置文件

与思考题2类似,也是考虑在这种情况下如何将添加与删除集成到一个脚本中,以一个flag变量控制是添加还是删除(思考题3)。

 #gvim  account2.sh

#!/bin/bash

accountfile="user_passwd"

if [ -f "$accountfile" ]; then

       mv $accountfile "$accountfile"`date +%Y%m%d`

fi

touch "$accountfile"

read -p "qianzhui: "  username_start

read -p "weishu: "  nu_nu

read -p "star num: " nu_start

read -p "shuliang: " nu_amount

nu_end=$(($nu_start+$nu_amount-1))

for (( i=$nu_start; $i<=$nu_end; i++ ))

do

      nu_len=${#i}

       nu_diff=$(($nu_nu-$nu_len))

       if [ "$nu_diff" != "0" ]; then

              nu_nn=00000000000

              nu_nn=${nu_nn:1:$nu_diff}

       fi

       account="$username_start""$nu_nn""$i"

       echo "$account":"$account" >> $accountfile

done

cat "$accountfile" | cut -d':' -f1 | xargs -n 1 useradd

pwunconv

chpasswd < "$accountfile"

pwconv

echo "OK"

exit 0

      #chmod +x *.sh

      #./account2.sh  要输入4个值, 示例如下, 可以自行确定,注意不要太多,否则比较耗时

        ludonglinux

        3

        1

        10

     

      #cat /etc/passwd    确认

12  利用 xargs  与userdel 组织 删除 刚才创建的用户

   #cut -d':' -f1 user:passwd  | xargs -n 1  userdel -r

   #cat /etc/passwd   确认四个用户已成功删除

    批量用户添加的第三种方式 的 第二个变种, 不需要生成任何配置文件, 使用flag 控制 add or del 

    在for循环中 如果是add  就  useradd + passwd    如果 del 就 userdel  -r 

软件包的安装与管理

rpm 部分实验步骤:

1  查看并确认rpm 命令的使用

   #man rpm

2  我们对gvim 对应的rpm 包进行相关的查询操作

  #whersis ls          // 报告说明在/bin/ls  , 可以任选之前使用过的命令

  #rpm -qf /bin/ls

  首先找到gvim 对应哪个rpm包

  #whereis gvim

  #rpm -qf /usr/bin/gvim       查找该文件属于哪个rpm    输出是 vim-X11*  

  #rpm  -q  vim-X11

  #rpm  -qi  vim-X11 

  #rpm  -ql  vim-X11

  #rpm  -qR  vim-X11

  #rpm  -qa                   列出所有已经安装的rpm包

  #rpm   -qa  | grep vim

  #rpm   -qa | grep bash

  #rpm   -qa | grep gcc

3  rpm 包的验证

  #rpm  -V  vim-X11

  #mv  /usr/bin/gvim  /usr/bin/gvim.bak

  #rpm  -V   vim-X11

  #rpm  -Vf  /usr/bin/gvim

 

4  rpm  包的删除

  #rpm  -e  vim-X11

  #rpm  -e  sysstat

  

  确认删除成功了没?

  #gvim   应该报告找不到

  #rpm  -qa | grep  vim-X11

5 确认我们系统装了对应的rpm没有?

  #rpm -qa | grep sysstat

  #rpm -qa | grep vim

  #gvim    // 报错说没有该命令

  #sar     // 也没有

13 安装 sysstat  与  vim-X11 

  #rpm -ivh  sysstat-*.rpm 

  #rpm -ivh  vim-X11*.rpm    

  再次确认我们系统安装成功了没?

  #rpm -qa | grep sysstat

  #rpm -qa | grep vim   

  查看对应的命令的具体位置

  #whereis gvim

  #whereis sar

  --force 的使用

 

目录

第一次实验内容: 初识Linux系统环境与命令

1

1.1 时间相关

1.2  bc 程序的三种退出方式   //通过该项掌握交互型命令的退出方式

1.3 echo命令   类似 printf

1.4 帮助命令

2 命令行方式获取系统相关的信息, 点击终端

2.1 cpu         

2.2 mem         

2.3 disk         #

2.4 filesystem  

2.5 网络        

2.6 显卡        

2.7 Shell版本   

2.8 内核版本    

2.9 进程        

2.10 负载      

3 fc30 的关机

Linux文件与目录的简单命令

1  进入系统,打开终端,

2 命令行修改目录与文件的权限  (chmod)

2 命令行修改目录与文件的属主  (chown *.* 文件)

3 查看系统的根目录的结构     

4  mkdir -p  参数的使用

5 ls查看隐藏文件

6 cp -a 加属性  -r  递归复制

7 mv 的文件改名+移动

8 rm 的默认与递归删除

9 文件查看

10 文件头部跟尾部的获取

Linux文件与目录的复杂命令

1  touch命令   :创建不存在文件  or 修改文件时间(文件已经存在)

2  创建or生成文件的N种方式

3  相对目录与绝对目录

4  umask  003 进行权限的修改,003表示在当前基础上减去该值

5  

6  文件名查找

7 排序   #sort //排序  #uniq //去冗

8 比较

9 通过ps 与grep 查看现在的活跃进程

linux磁盘与文件系统

实验内容2  mount挂载点的内容变更

实验内容3   特殊设备loop与swap

实验内容4 了解与掌握磁盘分区的自动挂载  (最后做,以免出现问题,开机不成功)

 Bash 与Bash的环境变量

一、编辑器vim

二、Bash 与Bash的环境变量

Linux 用户与组群的管理

软件包的安装与管理

rpm 部分实验步骤:


  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值