【第四课】Linux的基础命令使用

一、passwd重置密码

root用户,直接执行 passwd 回车 输入两次新密码即可
普通用户,也可以改。 passwd username
user1登录后,改自己密码,只需要执行 passwd 即可

语法:
    passwd [username]
 参数:
    --stdin  明文设置密码,常用于shell脚本

[root@localhost ~]# passwd root    #修改root用户密码
Changing password for user root.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

[root@localhost ~]# useradd user1    #增加普通用户
[root@localhost ~]# passwd user1    #修改普通用户密码
Changing password for user user1.
New password: 
BAD PASSWORD: The password is a palindrome
Retype new password: 
passwd: all authentication tokens updated successfully.

[root@localhost ~]# passwd --stdin user1

二、单用户模式

当我们忘记了密码,也没有密钥,该怎么办呢???Linux系统提供了一种单用户模式。单用户模式是Centos 7系统的一个运行级别。那么什么是运行级别呢?
运行级别就是操作系统当前正在运行的功能级别,级别是从0到6。Centos7系统之前的版本是通过/etc/inittab文件来定义系统运行级别:

[root@localhost ~]#  cat /etc/centos-release 
CentOS release 6.4 (Final)
[root@localhost ~]#  cat /etc/inittab 
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)    # 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
#   1 - Single user mode                               #  运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)    # 运行级别2:多用户状态(没有NFS)
#   3 - Full multiuser mode                           #   运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
#   4 - unused                                               #   运行级别4:系统未使用,保留
#   5 - X11                                                    #   运行级别5:X11控制台,登陆后进入图形GUI模式
#   6 - reboot (Do NOT set initdefault to this)    #   运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
# 
id:3:initdefault:    # 表示运行级别3,是默认的

CentOS 7 版本不再使用该文件定义系统运行级别,相关运行级别设置无效:

[root@localhost ~]# cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core) 
[root@localhost ~]# cat /etc/inittab 
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:    #查看当前运行级别使用如下命令
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target    #设置默认运行级别,使用如下命令
#

新版本的运行级别都定义在/lib/systemd/system/runlevel*

[root@localhost ~]# ll /lib/systemd/system/runlevel*
lrwxrwxrwx. 1 root root 15 Dec  3  2017 /lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 Dec  3  2017 /lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 Dec  3  2017 /lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Dec  3  2017 /lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Dec  3  2017 /lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 Dec  3  2017 /lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 Dec  3  2017 /lib/systemd/system/runlevel6.target -> reboot.target

Centos 7和之前版本的运行级别对应表,如下:

init级别systemctl target
0shutdown.target
1emergency.target
2rescure.target
3multi-user.target
4
5graphical.target
6

设置运行级别:

命令格式:
    systemctl [command] [unit.target]
参数详解:
- get-default:获取当前的target
- set-default:设置指定的target为默认的运行级别
- isolate:切换到指定的运行级别

[root@localhost ~]# systemctl get-default   #获取当前运行级别
[root@localhost ~]# systemctl set-default multi-user.target #设置默认运行级别为multi-user
[root@localhost ~]# systemctl isolate multi-user.target #在不重启情况下,切换到multi-user
[root@localhost ~]# systemctl isolate graphical.target  #在不重启的情况下,切换到图形界面

如何进入单用户模式?

  • 重启机器,按一下方向键,不让系统马上启动,选择中第一个启动项,按e进入grub界面
    1349539-20190122103838509-148374588.png
  • 找到linux16这一行,找到ro更改为rw init=/sysroot/bin/sh,这里最好修改LANG=zh_CN.UTF-8LANG=en_US.UTF-8,避免修改密码时有乱码,再按ctrl +x启动。

1349539-20190122103825023-856945235.png

  • 再执行chroot /sysroot/,进入到真正的Linux
  • 系统里执行 passwd更改密码
  • 执行 touch /.autorelabel (touch命令是用来创建一个新文件,或者说更改文件时间的命令)
  • 执行exit 推出 chroot的系统环境,到内存的环境
  • 再执行reboot,重启

1349539-20190122103804845-679519904.png

三、救援模式

救援模式和单用户模式有点类似,不同的是救援模式需要使用系统盘来进行启动,是一个内存操作系统。

如何进入救援模式?

  • 1)关机
  • 2)点右键 电源 启动时 进入bios

1349539-20190122103740035-501252983.png

  • 3)到bios里面,选择boot,把光驱放到第一位 按F10 点yes

1349539-20190122103727405-1680647997.png

  • 4)选择troubleshuooting 回车 选择 rescue a centos system

1349539-20190122103715571-255127461.png

1349539-20190122103705024-1250616902.png

  • 5)选择continue

1349539-20190122103653562-647665668.png

  • 6)回车后,敲命令 chroot /mnt/sysimage

1349539-20190122103640276-813184246.png

  • 7) 执行passwd命令
  • 8) 执行exit 然后执行 reboot 同时把光驱断开

1349539-20190122103628470-521416529.png

四、设置SElinux

[root@localhost ~]# vi /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled    #把enforing改为disabled,需要重启系统才会生效
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

#临时修改selinux的策略
[root@localhost ~]# setenforce 0    #临时关闭selinux,重启后还会引用配置文件中的配置
[root@localhost ~]# getenforce     #获取slinux的状态信息
Disabled

五、Linux的常用基础命令详解

5.1、mkdir命令

mkdir : 创建目录, make directorys, -p 递归创建目录

[root@localhost test]# mkdir -pv /a/b/c
mkdir: created directory ‘/a’
mkdir: created directory ‘/a/b’
mkdir: created directory ‘/a/b/c’

5.2、ls命令

-l(long)d(directory)显示目录或文件,全称 list

语法:
          ls [OPTION]... [FILE]...
参数:
    -a  查看隐藏的文件或者目录
    -l  查看文件的详细信息(时间、大小、权限、属主、属组、文件的属性)
    - 普通文件
    d 目录
    l 软链接文件(类似于windows的快捷方式)
    b 块设备文件(磁盘)
    c 字符设备文件 (键盘、鼠标)
    s 套接字文件 (socket文件,这个文件是Unix/Linux系统里面用来通信的,进程间通信的文件)
    p 管道文件 ( | 命名管道 )
    -d  查看目录本身
    -t  按时间排序,最新的在上面
    -i  inode(在格式化磁盘的时候生成的,mkfs.ext4)

[root@localhost test]# ls -a
.  ..  1.txt  3.txt  4.txt  test1
[root@localhost test]# ls -l
total 4
-rw-r--r-- 1 root root  7 Jan 30  2018 1.txt
-rw-r--r-- 1 root root  0 Jan 27  2018 3.txt
-rw-r--r-- 1 root root  0 Jan 27  2018 4.txt
drwxr-xr-x 2 root root 18 Jan 30  2018 test1
[root@localhost test]# ls -d
.
[root@localhost test]# ls -lt
total 4
drwxr-xr-x 2 root root 18 Jan 30  2018 test1
-rw-r--r-- 1 root root  7 Jan 30  2018 1.txt
-rw-r--r-- 1 root root  0 Jan 27  2018 3.txt
-rw-r--r-- 1 root root  0 Jan 27  2018 4.txt

[root@localhost test]# ls -li
total 4
 37267089 -rw-r--r-- 1 root root  7 Jan 30  2018 1.txt
 41800725 -rw-r--r-- 1 root root  0 Jan 27  2018 3.txt
 41800729 -rw-r--r-- 1 root root  0 Jan 27  2018 4.txt
101976481 drwxr-xr-x 2 root root 18 Jan 30  2018 test1    

5.3、cd命令

cd : 切换目录层次 change directory
~表示家目录,
-表示上一次的目录

cd ~
cd /tep/fq
cd /root
cd - # 回到/tep/fq

5.4、chmod命令

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定
在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:

[root@localhost test]# ls -l
total 4
-rw-r--r-- 1 root root  7 Jan 30  2018 1.txt
-rw-r--r-- 1 root root  0 Jan 27  2018 3.txt
-rw-r--r-- 1 root root  0 Jan 27  2018 4.txt
drwxr-xr-x 2 root root 18 Jan 30  2018 test1

实例中,test1文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。

  • 当为[ d ]则是目录
  • 当为[ - ]则是文件;
  • 若是[ l ]则表示为链接文档(link file);
  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
    接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。
    其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
    每个文件的属性由左边第一部分的10个字符来确定(如下图)。

1349539-20190122110506682-1709607627.png

从左至右用0-9这些数字来表示。

  • 第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。
  • 第4-6位确定属组(所有者的同组用户)拥有该文件的权限
  • 第7-9位确定其他用户拥有该文件的权限。
    其中,第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;
    第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限;第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。
    Linux文件属性有两种设置方法,一种是数字,一种是符号。
    Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
    文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
  • r:4
  • w:2
  • x:1
    每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:
  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= --- = 0+0+0 = 0
    设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:
语法:
    chmod [-R] xyz 文件或目录

选项与参数:
    xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
    -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

将.bashrc这个文件所有的权限都设定启用,那么命令如下:

[root@www ~]# ls -al .bashrc
-rw-r--r--  1 root root 395 Jul  4 11:45 .bashrc
[root@www ~]# chmod 777 .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc

那如果要将权限变成 -rwxr-xr-- 呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754。

符号类型改变文件权限
还有一个改变权限的方法,从之前的介绍中我们可以发现,基本上就九个权限分别是:

  • (1)user
  • (2)group
  • (3)others
    那么我们就可以使用 u, g, o 来代表三种身份的权限!
    此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看:

1349539-20190122111247591-1548217713.png

如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:

[root@localhost test]#   touch test1    #创建 test1 文件
[root@localhost test]#  ls -al test1    #查看 test1 默认权限
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1
[root@localhost test]#  chmod u=rwx,g=rx,o=r  test1    #修改 test1 权限
[root@localhost test]#  ls -al test1
-rwxr-xr-- 1 root root 0 Nov 15 10:32 test1

而如果是要将权限去掉而不改变其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:

[root@localhost test]#  chmod  a-x test1
[root@localhost test]#  ls -al test1
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1

5.5、chown命令

chown:用于更改文件或者目录的属主或者属组

chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
参数说明:
    -R:级联更改目录下的所有目录和文件
例如:
    chown user1:users 1.txt
    chown user1.users 1.txt
    
进入 test 目录将1.txt的拥有者改为user1这个账号:

[root@localhost test]# ll
total 4
-rw-r--r-- 1 root root  7 Jan 30  2018 1.txt
-rw-r--r-- 1 root root  0 Jan 27  2018 3.txt
-rw-r--r-- 1 root root  0 Jan 27  2018 4.txt
drwxr-xr-x 2 root root 18 Jan 30  2018 test1
[root@localhost test]# chown -R user1.user1 1.txt 
[root@localhost test]# ll
total 4
-rw-r--r-- 1 user1 user1  7 Jan 30  2018 1.txt
-rw-r--r-- 1 root  root   0 Jan 27  2018 3.txt
-rw-r--r-- 1 root  root   0 Jan 27  2018 4.txt
drwxr-xr-x 2 root  root  18 Jan 30  2018 test1

5.6、echo命令

echo : 打印输出内容(printf 复杂的输出)

参数: -n : 不换行输出

​ -e : 激活转义字符

[root@localhost test]# echo "hello world"
hello world
[root@localhost test]# echo -n "hello world" 

hello world
[root@localhost test]# echo -e "hello\nworld"
hello
world

5.7、cat命令

查看文件内容

[root@localhost test]# cat /etc/hosts   #查看文件内容
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.11 linux-node1 linux-node1.example.com
192.168.56.12 linux-node2 linux-node2.example.com

[root@localhost test]# cat -n /etc/hosts    #显示行号
     1  127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
     2  ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
     3  192.168.56.11 linux-node1 linux-node1.example.com
     4  192.168.56.12 linux-node2 linux-node2.example.com
     5  
[root@localhost test]# cat >>a.txt<<EOF #将EOF之间的所有数据都追加到a.txt文件尾部
> 666
> 777
> 888
> EOF
[root@localhost test]# cat a.txt 
666
777
888

5.8、cp命令

cp:cp - copy files and directories 拷贝文件

[root@localhost test]# cp a.txt /tmp/
[root@localhost test]# cp -r test1 /tmp

5.9、useradd:建立用户账号

格式:
useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户帐号] 或 useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群
组>][-s ]

参数:
    -c<备注> 加上备注文字。备注文字会保存在 passwd 的备注栏位中。
    -d<登入目录> 指定用户登入时的启始目录。
    -D 变更预设值.
    -e<有效期限> 指定帐号的有效期限。 格式 MM/DD/YY
    -f<缓冲天数> 指定在密码过期后多少天即关闭该帐号。 0:立即停权 -1:关闭此功能(默认值-1)
    -g<群组> 指定用户所属的群组。
    -G<群组> 指定用户所属的附加群组。
    -m 自动建立用户的登入目录。
    -M 不要自动建立用户的登入目录。
    -n 取消建立以用户名称为名的群组.
    -r 建立系统帐号。
    -s 指定用户登入后所使用的 shell。 不填写时,系统根据/etc/default/useradd 预设值指定
    -u 指定用户 ID。
    -p 创建用户时,直接指定密码,但在 /etc/shadow 文件中以明文显示,不安全
    
[root@localhost test]# useradd -g test -G dba -p password -d /home/oracle -s /bin/bash oracle

补充说明: useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码.而可用 userdel 删除帐号。使用 useradd 指令所建立的帐号,实际上是保存在/etc/passwd 文本文件中。passwd 设定的密码在/etc/shadow 文件中。

5.10、userdel : 删除用户

参数:
    -f, --force force removal of files, even if not owned by user
    -h, --help display this help message and exit
    -r, --remove 在删除用户的同时一起把这个用户的宿主目录和邮件目录删除。
示例:
[root@localhost test]# userdel -r newuser

5.11、tail:监控文件的变化

参数:
    -n 行数,显示文件后几行,默认 10 行;
    -f 跟踪文件结尾变化,如果文件被删除后重建,不会显示新的变化
    -F 跟踪文件结尾变化,会尝试重新连接文件,如果文件被删除后重建,会显示新的变化
[root@localhost test]# tail -n 500 a.txt
[root@localhost test]# tail -500 a.txt

类似命令: tailf。
tailf 相当于 tail -f,类似于 tail -f,严格说来应该与 tail –follow=name 更相似些。
与 tail -f 不同的是,如果文件不增长,它不会去访问磁盘文件,所以省电,并减少了磁盘访问

5.12、id: 显示用户 id 和组 id 信息

语法:
id [-gGnru][--help][--version][用户名称]

参数:
    -a 打印用户名、 UID 和该用户所属的所有组
    -g 或--group 显示用户所属群组的 ID。
    -G 或--groups 显示用户所属附加群组的 ID。
    -n 或--name 显示用户,所属群组或附加群组的名称。
    -r 或--real 显示实际 ID。
    -u 或--user 显示用户 ID。
    --help 显示帮助。
    --version 显示版本信息。
    
[root@localhost test]# id
uid=0(root) gid=0(root) groups=0(root)
[root@localhost test]# id -gn
root
[root@localhost test]# id -un
root

5.13、history:查看命令历史

[root@localhost test]# history -c   #清空历史记录
[root@localhost test]# history
   25  history
[root@localhost test]# history -d 28    #删除指定行号的历史记录

5.14、route:路由配置

语法:
route (选项)(参数)

选项:
    -A:设置地址类型
    -C:打印将 Linux 核心的路由缓存
    -v:详细信息模式
    -n:不执行 DNS 反向查找,直接显示数字形式的 IP 地址
    -e: netstat 格式显示路由表
    -net:到一个网络的路由表
    -host:到一个主机的路由表。
    
参数:
    Add:增加指定的路由记录
    Del:删除指定的路由记录
    Target:目的网络或目的主机
    gw:设置默认网关
    mss:设置 TCP 的最大区块长度(MSS),单位 MB
    window:指定通过路由表的 TCP 连接的 TCP 窗口大小
    dev:路由记录所表示的网络接口。

[root@localhost test]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.56.2    0.0.0.0         UG    100    0        0 eth0
192.168.56.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0

其中 Flags 为路由标志,标记当前网络节点的状态, Flags 标志说明:
U Up 表示此路由当前为启动状态。
H Host,表示此网关为一主机。
G Gateway,表示此网关为一路由器。
R Reinstate Route,使用动态路由重新初始化的路由。
D Dynamically,此路由是动态性地写入。
M Modified,此路由是由路由守护程序或导向器动态修改。
! 表示此路由当前为关闭状态

增加一条到达 244.0.0.0 的路由。
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

增加一条屏蔽的路由,目的地址为 224.x.x.x 将被拒绝。
route add -net 224.0.0.0 netmask 240.0.0.0 reject

删除路由记录:
route del -net 224.0.0.0 netmask 240.0.0.0
route del -net 224.0.0.0 netmask 240.0.0.0 reject

删除默认网关
route del default gw 192.168.1.1

添加默认网关
route add default gw 192.168.1.1

六、软链接和硬链接

硬链接:当系统需要读取一个文件时,就会先去读取inode table,一个文件对应一个inode,然后再根据inode中的信息到块区域去将数据读取出来。而硬链接是直接使用了和源文件相同的inode。进行硬链接的时候实际上该文件的内容没有任何变化,只是指定了相同的inode。硬链接有两个限制:①不能跨文件系统,因为不同的文件系统有不同的inode table;②不能链接目录。

软链接:跟硬链接不同,这个是建立一个独立的文件,而这个文件的作用是当读取这个链接文件时,它会把读取的行为转发到该文件所link的文件上。相当于windows系统中的快捷方式。当源文件被删除时,link文件将无法打开文件。

 语法:ln 【-s】 【源文件】 【目的文件】
     ln的常用选项就一个-s,如果不加就是建立硬链接,加上就是建立软连接。

[root@longlinux ~]# ln -s /etc/passwd /tmp/passwd1   //建立/etc/passwd的软链接
[root@longlinux ~]# ls -l /tmp/passwd1
lrwxrwxrwx 1 root root 11 8月  24 23:10 /tmp/passwd1 -> /etc/passwd
[root@longlinux ~]# ls -i /etc/passwd
788439 /etc/passwd
[root@longlinux ~]# ln /etc/passwd /tmp/passwd0      //建立/etc/passwd的硬链接
[root@longlinux ~]# ls -i /etc/passwd && ls -i /tmp/passwd0       //都指向同一个inode:788439
788439 /etc/passwd
788439 /tmp/passwd0

最后,来一张图解说明软链接和硬链接:

1349539-20190123104659723-129273530.png

七、RPM工具用法

RPM [1]  是Red-Hat Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了。

(1)rpm选项
-i 表示安装
-U 表示升级一个包
-v 表示可视化
-h 表示显示安装进度
-e 卸载一个包
-q 查询一个包是否已经安装
-qi 查询指定包信息
-ql 列出一个包安装的文件
-qf 查询文件绝对路径
rpm -qf `which cd` 查看这条命令的路径包在哪
--force 表示强制安装
--nodeps 表示当安装的rpm包依赖其他包时,忽略依赖进行安装

rpm的功能众多,总结出来大概常用的功能有3类:

  • 查询、验证RPM软件包的相关信息
  • 安装、升级、卸载RPM软件包
  • 维护RPM数据库信息等综合管理操作

查询已安装的 RPM 软件信息

语法:rpm  -q[子选项]  [软件名]
选项:
    -qa:显示当前系统中以RPM方式安装的所有软件列表
    -qi:查看指定软件包的名称、版本、许可协议、用途描述等详细信息
    -ql:显示指定的软件包在当前系统中安装的所有目录、文件列表
    -qf:查看当前指定的文件或目录是由哪个软件包所安装的
    
[root@localhost test]# rpm -qa |wc -l   #统计当前系统安装的RPM软件个数
819
[root@localhost test]# rpm -q samba #查询某个软件是否安装
package samba is not installed
[root@localhost test]# rpm -qf `which cd`   #查看cd命令是由哪个包安装的
bash-4.2.46-29.el7_4.x86_64

查询未安装的 RPM 软件包文件中信息

使用“-qp”选项时,必须以RPM软件包文件的路径作为参数(可以有多个),而不是软件包名称。

-qpi: 查看指定软件包的名称、版本、许可协议、用途描述等详细信息

-qpl: 显示指定的软件包准备要安装的所有目录、文件列表

[root@localhost ~]# rpm -qpi elasticsearch-6.0.0.rpm    #查看软件包信息
warning: elasticsearch-6.0.0.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Name        : elasticsearch
Epoch       : 0
Version     : 6.0.0
Release     : 1
Architecture: noarch
Install Date: (not installed)
Group       : Application/Internet
Size        : 31180241
License     : 2009
Signature   : RSA/SHA512, Sat 11 Nov 2017 04:14:03 AM CST, Key ID d27d666cd88e42b4
Source RPM  : elasticsearch-6.0.0-1-src.rpm
Build Date  : Sat 11 Nov 2017 02:42:43 AM CST
Build Host  : packer-virtualbox-iso-1509888528
Relocations : /usr 
Packager    : Elasticsearch
Vendor      : Elasticsearch
URL         : https://www.elastic.co/
Summary     : Elasticsearch is a distributed RESTful search engine built for the cloud. Reference documentation can be found at https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html and the 'Elasticsearch: The Definitive Guide' book can be found at https://www.elastic.co/guide/en/elasticsearch/guide/current/index.html
Description :
Elasticsearch subproject :distribution:rpm

[root@localhost ~]# rpm -qpl elasticsearch-6.0.0.rpm    #查看该软件包含哪些文件
warning: elasticsearch-6.0.0.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
/etc/elasticsearch/elasticsearch.yml
/etc/elasticsearch/jvm.options
/etc/elasticsearch/log4j2.properties
/etc/init.d/elasticsearch
/etc/sysconfig/elasticsearch
......

八、YUM工具

yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。
基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

yum 语法
    yum [options] [command] [package ...]   
- options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
- command:要进行的操作。
- package操作的对象。

yum常用命令:
    1.列出所有可更新的软件清单命令:yum check-update
    2.更新所有软件命令:yum update
    3.仅安装指定的软件命令:yum install <package_name>
    4.仅更新指定的软件命令:yum update <package_name>
    5.列出所有可安裝的软件清单命令:yum list
    6.删除软件包命令:yum remove <package_name>
    7.查找软件包 命令:yum search <keyword>
    8.清除缓存命令:
    yum clean packages: 清除缓存目录下的软件包
    yum clean headers: 清除缓存目录下的 headers
    yum clean oldheaders: 清除缓存目录下旧的 headers
    yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers

转载于:https://www.cnblogs.com/linuxk/p/10302009.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值