软连接与硬连接

  • Linux中的链接文件类似于windows中的快捷方式
  • 软连接特点:软连接可以跨分区,可以对目录进行链接,源文件删除后,链接文件不可用
  • 软连接命令格式:ln -s 源文件路径  目标路径
  • 注意:创建链接时一定要写目录或文件的绝对路径,哪怕是在当前路径下,也要写绝对路径·

[root@localhost ~]# touch hello.soft
[root@localhost ~]# ls

#创建软连接(必须要绝对路径创建)
[root@localhost ~]# ln -s /root/hello.soft /opt
[root@localhost ~]# ls /opt

#查看连接文件详细属性
[root@localhost ~]# ls -l /opt/hello.soft
lrwxrwxrwx. 1 root root 16 3月 21 14:28 /opt/hello.soft -> /root/hello.soft
#提示:链接文件的权限最终取决于源文件的权限

#普通用户验证
[lisi@localhost ~]$ ls /opt
hello.soft
[lisi@localhost ~]$ ls -l /opt/hello.soft
lrwxrwxrwx. 1 root root 16 3月 21 14:28 /opt/hello.soft -> /root/hello.soft
[lisi@localhost ~]$ cat /opt/hello.soft
cat: /opt/hello.soft: 权限不够
#提示:由于源文件存放于/root目录下,而普通用户对/root目录没有任何权限,所以普通用户无法查看

#删除源文件
[root@localhost ~]# rm -f /root/hello.soft
[root@localhost ~]# ls

#山粗源文件后,软链接文件不可用
[root@localhost ~]# ls -l /opt/hello.soft
lrwxrwxrwx. 1 root root 16 3月 21 14:28 /opt/hello.soft -> /root/hello.soft

#创建文件并创建软连接
[root@localhost ~]# touch hello.soft
[root@localhost ~]# ln -s /root/hello.soft /opt

[root@localhost ~]# ls -l /opt/hello.soft
lrwxrwxrwx. 1 root root 16 3月 21 14:39 /opt/hello.soft -> /root/hello.soft

#删除链接文件后,源文件仍然可用
[root@localhost ~]# rm -f /opt/hello.soft
[root@localhost ~]# ls
[root@localhost ~]# cat hello.soft

#对目录创建软连接
[root@localhost ~]# ln -s /root/test1 /opt/

[root@localhost ~]# ls -ld /opt/test1
lrwxrwxrwx. 1 root root 11 3月 21 14:44 /opt/test1 -> /root/test1

3创建链接时一定要写目录或文件的绝对路径,哪怕是在当前路径下,也要写绝对路径
[root@localhost ~]# ln -s hello.soft /opt
[root@localhost ~]# ls /opt
hello.soft test1
[root@localhost ~]# ls -l /opt/hello.soft
lrwxrwxrwx. 1 root root 10 3月 21 14:47 /opt/hello.soft -> hello.soft

  • 硬链接特点:硬连接不可以跨分区,不可以对目录进行链接,源文件删除后,链接文件仍然可用
  • 硬连接命令格式:ln  源文件路径  目标路径

#创建文件,并创建硬连接
[root@localhost ~]# touch hello.hard
[root@localhost ~]# ln /root/hello.hard /opt/
[root@localhost ~]# ls /opt
hello.hard hello.soft test1

#向硬连接的源文件写入内容
root@localhost ~]# echo 123 > /root/hello.hard

#查看源文件内容
[root@localhost ~]# cat /root/hello.hard
123

#查看链接文件内容,以同步更新
[root@localhost ~]# cat /opt/hello.hard
123

#向链接文件写入内容,查看源文件以同步更新
[root@localhost ~]# echo xx >> /opt/hello.hard

#擦看源文件,以同步更新
[root@localhost ~]# cat /root/hello.hard
123
xx

#硬连接文件的特点可以保持文件属性不发生改变
[root@localhost ~]# ls -l /root/hello.hard
-rw-r--r--. 2 root root 7 3月 21 14:55 /root/hello.hard
[root@localhost ~]# ls -l /opt/hello.hard
-rw-r--r--. 2 root root 7 3月 21 14:55 /opt/hello.hard

#并且硬连接文件的i节点号相同
[root@localhost ~]# ls -i /root/hello.hard
33711090 /root/hello.hard
[root@localhost ~]# ls -i /opt/hello.hard
33711090 /opt/hello.hard

#硬连接不允许对目录进行连接
root@localhost ~]# ln /root/test1 /opt
ln: "/root/test1": 不允许将硬链接指向目录

#硬连接源文件删除后,链接文件仍然可用
[root@localhost ~]# rm -f /root/hello.hard
[root@localhost ~]# cat /opt/hello.hard
123
xx

#向硬连接文件写入内容
[root@localhost ~]# echo abc >> /opt/hello.hard
[root@localhost ~]# cat /opt/hello.hard
123
xx
abc

#硬连接不允许跨分区
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 4.3G 0 rom
[root@localhost ~]# ln /root/hello.soft /boot
ln: 无法创建硬链接"/boot/hello.soft" => "/root/hello.soft": 无效的跨设备连接

内部命令与外部命令

  • 什么是命令:用来实现某一种功能的指令或程序
  • 命令的执行依赖于解释器(例如:/bin/bash),/etc/shells文件存放系统可用的shell
  • 用户——解释器(shell外壳)——内核
  • [root@localhost~]# shell 终端 交互接口  用户接口

#搜索命令所在的绝对路径
[root@localhost ~]# which ls
alias ls='ls --color=auto'
        /usr/bin/ls

root@localhost ~]# ls /usr/bin/ls
/usr/bin/ls

#直接运行程序文件
[root@localhost ~]# /usr/bin/ls
[root@localhost ~]# /usr/bin/ls /opt
hello.hard hello.soft        t1 test1 test.txt

[root@localhost ~]# which cat
[root@localhost ~]# ls /usr/bin/cat
/usr/bin/cat

[root@localhost ~]# which pwd
/usr/bin/pwd

Linux命令的分类

  • 内部命令:shell程序自带的基本管理命令
  • 外部命令:有独立的外部可执行程序文件命令
  • type 用于区别内部命令与外部命令
  • which 用于查找可以执行程序文件位置

[root@localhost opt]# type ls

[root@localhost opt]# type cat

[root@localhost opt]# type hash

[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@localhost ~]# hash
命中        命令
1        /usr/bin/cat
1        /usr/bin/ls

[root@localhost opt]# hash -r
[root@localhost opt]#
[root@localhost opt]# hash
hash: 哈希表为空

[root@localhost opt]# ls
hello.hard hello.soft t1 test1 test.txt
[root@localhost opt]# hash
命中        命令
1        /usr/sbin/ls

  • 总结:
  • shell程序是用户和系统之间的接口,用于解释用户的命令
  • 查找命令对应的程序文件所在位置:which 命令
  • shell程序大多数存放在/etc/shells文件中
  • 系统默认使用的shell为/bin/bash
  • 查看当前使用的shell:echo $SHELL
  • 区别内部命令与外部命令的方式:typt 命令
  • shell程序查找可执行程序文件路径定义在$PATH环境变量中
  • shell查找的外部命令路径结果会记录到缓存的hash表中

help 命令帮助手册

  • help命令用于查看shell内部命令的帮助信息,包括使用方法、选项等…
  • 命令格式:help [选项] 命令

#获取内部命令帮助信息
[root@localhost etc]# help cd

#help无法获取外部命令的帮助信息
root@localhost etc]# help ls
bash: help: 没有与 `ls' 匹配的帮助主题。尝试 `help help' 或者 `man -k ls' 或者 `info ls'。

[root@localhost etc]# type help
help 是 shell 内嵌

#获取help命令本身的帮助信息
[root@localhost etc]# help help

[root@localhost etc]# type cat
cat 是 /usr/bin/cat

[root@localhost etc]# help cat
bash: help: 没有与 `cat' 匹配的帮助主题。尝试 `help help' 或者 `man -k cat' 或者 `info cat'。

#查看命令帮助手册(命令自带)
[root@localhost etc]# cat --help
[root@localhost etc]# ls --help

man 获取命令帮助手册

  • man 命令用于查看系统命令的帮助信息,包括使用方法、选项、使用例子等…,对比--help ,mna 输出的信息更加详细
  • 命令格式:man [-选项]   命令
  • 常用快捷操作
  • 向下键向下移一行
  • 向上键向上移一行
  • [Page Down] 向下翻一页
  • [Page Up] 向上翻一页
  • /关键字   #搜索关键字,配合n(向下查询)、N(向上查询)
  • q 退出

[root@localhost etc]# man ls
[root@localhost etc]# man cat
[root@localhost etc]# man touch
[root@localhost etc]# man mkdir

[root@localhost etc]# info ls

Google/百度(Google,算法)

Linux系统的运行级别

Linux系统运行级别:linux系统有7个运行级别,不同的运行级别运行的程序和功能都不一样,而Linux系统默认是运行在一个标准的级别上,系统运行级别文件/etc/inittab文件

运行级别 0:所有进程被终止,机器将有序的停止,关机时系统处于这个运行级别(关机)

运行级别 1:单用户模式,(root用户进行系统维护),系统里运行的所有服务也都不会启动

运行级别 2:多用户模式(网络文件系统NFS服务没有被启动)

运行级别 3:完全多用户模式,(有NFS网络文件系统)标准的运行级别

运行级别 4:系统未使用

运行级别 5:登录后,进入带GUI的图形化界面,标准的运行级别

运行级别 6:系统正常关闭并重启

runlevel: 查看当前系统运行级别

查看系统运行等级:[root@localhost ~]# systemctl get-default  

graphical.target

[root@localhost ~]# systemctl set-default XXXX.target  更改系统运行级别

#查看当前系统运行级别
[root@localhost etc]# runlevel
N 5
#解释;当前系统处于的运行级别
#解释:N代表没有从任何级别跳转过来

#切换系统运行级别
[root@localhost ~]# init N

#查看运行级别文件内容
[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 #运行级别3
# graphical.target: analogous to runlevel 5 #运行级别5
#
# To view current default target, run:
# systemctl get-default                                  #查看当前系统默认的运行级别
#
# To set a default target, run:
# systemctl set-default TARGET.target #修改当前系统默认运行级别

#查看默认运行级别
[root@localhost ~]# systemctl get-default
graphical.target #默认运行级别为5

#修改默认运行级别为3
[root@localhost ~]# systemctl set-default multi-user.target
[root@localhost ~]# systemctl get-default
multi-user.target

#修改默认运行级别为5
[root@localhost ~]# systemctl set-default graphical.target
[root@localhost ~]# systemctl get-default
graphical.target

关机与重启

  • linux下常用的关机命令有:shutdown、halt、poweroff、init
  • init 0 关机
  • halt #立刻关机
  • poweroff #立刻关机   (记这个)
  • shutdown –h now   #立刻关机
  • shutdown -h 10  #10分钟后自动关机

[root@localhost ~]# poweroff

  • 重启命令:reboot  shutdown
  • reboot #立刻重启 (记这个)
  • shutdown -r now   #立刻重启
  • shutdown -r 10 #过十分钟后重启

[root@localhost ~]# reboot

最新文章

  1. 嵌入式Linux驱动学习之路(十二)按键驱动-poll机制
  2. jquery操作复选框(checkbox)的12个小技巧总结
  3. nova 虚拟机迁移
  4. 集群中配置多台计算机之间ssh无密码登录的一种简便方法
  5. c# 验证码类
  6. js跳转页面方法大全
  7. Poj 1061 青蛙的约会(扩展GCD)
  8. greenDao 学习之坑 "java-gen" 目录下的类不能引用
  9. HDFS常用命令
  10. 百度地图api经纬度气死我了!
  11. redis 用setbit(bitmap)统计活跃用户
  12. Android Studio 将工程作为第三方类库的步骤
  13. sqlite数据库方言配置
  14. 怎么样linux下的目录名的目录,系统用来操作空间
  15. 基于MEF的插件框架之总体设计
  16. Thrift总结(三)Thrift框架
  17. input文件上传(上传单个文件/多选文件/文件夹、拖拽上传、分片上传)
  18. [No000018D]Vim快速注释/取消注释多行的几种方法-Vim使用技巧(2)
  19. 64位win7连接ACCESS报错“Microsoft.Jet.OLEDB.4.0”问题
  20. AppStore 添加回复

热门文章

  1. Vue前端基础学习
  2. 第15章: Prometheus监控Kubernetes资源与应用
  3. Zabbix5.0Yum安装
  4. ubuntu 替换某一内核模块
  5. 使用IDEA配置Maven
  6. 『学了就忘』Linux基础 — 1、UNIX系统介绍
  7. php 扩展 rabbitmq popt
  8. 使用Gradle构建多模块SpringBoot项目
  9. jvm代码热替换过程中异常
  10. Leetcode No.27 Remove Element(c++实现)