目录
Linux介绍
Linux诞生
Linux创始人:林纳斯 托瓦兹
Linux诞生于1991年,作者上大学期间
因为创始人在上大学期间经常需要浏览新闻和处理邮件,发现现有的操作系统不好用,于是他决心自己写一个保护模式下的操作系统,这就是Linux的原型,当时他21岁,后来经过全世界网友的支持,现在能够兼容多种硬件,成为最为流行的服务器操作系统之一。
Linux发行版本
内核是免费、开源的,这也就代表了任何人都可以获得并修改内核,并且自行集成系统级程序提供了内核 +系统级程序的完整封装,称之为 Linux发行版
Linux 的发行版简单说就是将 Linux 内核与应用软件做一个打包。知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux
Linux特点
开源和自由
Linux 是一个开源操作系统,这意味着它的源代码对任何人都是可用的,并且可以根据需要进行修改和分发。大多数 Linux 发行版都是免费的,并且遵循自由软件的原则。
多用户和多任务
Linux 支持多用户和多任务,多个用户可以同时登录到系统并运行多个程序。每个用户都有自己的用户账户和权限,可以独立地管理和使用系统资源。
强大的命令行界面
Linux 提供了强大的命令行界面,称为终端(Terminal)或控制台(Console)。通过命令行界面,用户可以执行各种系统管理任务、文件操作、软件安装等操作,同时还可以编写和运行脚本来自动化任务。
内核
Linux 内核是 Linux 操作系统的核心部分,负责管理系统资源、提供系统调用接口、调度进程和管理设备等。Linux 内核是开源的,并且由一个全球性的开发者社区不断维护和改进。
文件系统
Linux 使用一种称为层次文件系统(Hierarchical File System)的文件系统结构。文件系统以树状结构组织,根目录为树的顶部,所有其他文件和目录都位于其下。Linux 支持多种文件系统,包括 ext4、XFS、Btrfs 等。
图形用户界面
虽然 Linux 主要是一个以命令行为主的操作系统,但也有许多图形用户界面(GUI)可用,例如 GNOME、KDE、Xfce 等。这些桌面环境提供了类似于 Windows 或 macOS 的图形界面,使得用户可以通过鼠标和键盘进行操作。
应用程序和开发环境
Linux 拥有丰富的应用程序生态系统,涵盖了各种领域,包括办公套件、互联网浏览器、多媒体播放器、开发工具等。许多开发者和科研人员选择使用 Linux 作为开发环境,因为它提供了丰富的开发工具和编程语言支持。
Linux系统目录结构
/bin
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令
/boot
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件
/dev
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的
/etc
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录
/home
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
/lib
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库
DLL文件:
在Windows中,动态链接库(Dynamic Link Library,简称DLL)是一种包含可被多个程序共享的功能代码和数据的文件类型。DLL文件的作用可以总结如下:
### 1. 代码共享
DLL文件允许多个程序共享相同的功能代码。这意味着如果多个程序都需要执行相同的任务或使用相同的函数,它们可以共享同一个DLL文件,而不是每个程序都拥有自己的一份代码。
### 2. 资源共享
除了代码之外,DLL文件还可以包含共享的资源,如图标、对话框、字符串等。这些资源可以被多个程序引用和使用,从而节省内存和磁盘空间。
### 3. 模块化编程
使用DLL文件可以实现模块化编程,即将程序的不同部分分解为独立的模块,并且每个模块都可以被单独编译和更新。这使得程序更易于维护和扩展。
### 4. 动态链接
与静态链接库(Static Link Library,简称.lib文件)不同,DLL文件在程序运行时才被加载到内存中。这意味着程序可以在运行时动态地链接到DLL文件,并且可以在不重新编译程序的情况下更新或替换DLL文件。
### 5. 减少内存占用
由于DLL文件可以被多个程序共享,因此可以减少系统中多个程序所占用的内存。当多个程序都需要使用相同的功能时,它们可以共享同一个DLL文件的实例,而不是每个程序都加载一份独立的代码。
### 6. 扩展性和定制性
DLL文件使得程序具有更强的扩展性和定制性。开发人员可以编写自己的DLL文件,包含特定的功能或定制的功能,并且可以在需要时将其链接到程序中,而无需修改程序的源代码。
总的来说,DLL文件在Windows系统中扮演着重要的角色,它们提供了一种有效的方式来组织、共享和管理程序代码和资源,使得程序更加灵活、模块化和可维护。
/lost+found
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
/media
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下
/mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了
/opt
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的
/proc
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。 这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root
该目录为系统管理员,也称作超级权限者的用户主目录
/sbin
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序
/selinux
这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的
/srv
该目录存放一些服务启动之后需要提取的数据。
/tmp
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的
/usr
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录
/usr/bin
系统用户使用的应用程序
/usr/sbin
超级用户使用的比较高级的管理程序和系统守护程序
/usr/src
内核源代码默认的放置目录
/var
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件
/run
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run
Linux常用命令
命令提示符
进入命令行环境以后,用户会看到she11的提示符。提示符往往是一串前缀,最后以-个美元符号 $结尾,用户可以在这个符号后面输入各种命令。
如执行一个简单的命令 pwd :
[root@iZm5e8dsxce9ufaic7hi3uZ ~]# pwd
/root
命令解析:
root
:表示用户名;
iZm5e8dsxce9ufaic7hi3uZ
:表示主机名;
~
:表示目前所在目录为家目录,其中 root 用户的家目录是 /root 普通用户的家目录在 /home 下;
#
:指示你所具有的权限( root 用户为 # ,普通用户为 $ )。
命令格式
command parameters(命令 参数)
长短参数
单个参数:ls -a
(a 是英文 all 的缩写,表示“全部”)
单个长参数:ls --all
多个长参数:ls --reverse --all
长短混合参数:ls --all -l
参数值
短参数:command -p 10(例如:ssh root@121.42.11.34 -p 22)
长参数:command --paramters=10(例如:ssh root@121.42.11.34 --port=22)
基础命令
pwd
查看路径
ls
列出文件和目录,它是 Linux 最常用的命令之一
常用参数:
-a 显示所有文件和目录包括隐藏的
-l 显示详细列表
-h 适合人类阅读的
-t 按文件最近一次修改时间排序
-i 显示文件的 inode ( inode 是文件内容的标识)
cd
英语 change directory 的缩写,表示切换目录
cd/-->跳转到根目录
cd ~-->跳转到家目录
cd..-->跳转到上级目录
cd ./home -->跳转到当前目录的 home 目录下
cd /root/yanshi -->跳转到根目录下的 root 目录下的 yanshi 目录
cd -->不添加任何参数,也是回到家目录
du
列举目录大小信息
cat
一次性显示文件所有内容,更适合查看小的文件
-n
显示行号
touch
创建一个文件
touch new_file
mkdir
创建一个目录
mkdir new_folder
cp
拷贝文件和目录
cp file filecopy --> file 是目标文件,filecopy 是拷贝出来的文件
cp file one --> 把 file 文件拷贝到 one 目录下,并且文件名依然为
file cp file one/filecopy --> 把 file 文件拷贝到 one 目录下,文件名为filecopy
cp *.txt folder --> 把当前目录下所有 txt 文件拷贝到 folder 目录下
* 通配符 表示任意长度的字符
*.txt -> 1.txt test.txt test1.txt
-r 递归的拷贝,常用来拷贝一整个目录
mv
移动(重命名)文件或目录,与cp命令用法相似
mv file one --> 将 file 文件移动到 one 目录下
mv newfolder one --> 将 newfolder 文件夹移动到one目录下
mv *.txt folder --> 把当前目录下所有 txt 文件移动到 folder 目录下
mv file newfile --> file 文件重命名为 newfile
rm
删除文件和目录,由于 Linux 下没有回收站,一旦删除非常难恢复,因此需要谨慎操作
rm newfile --> 删除 newfile 文件
rm f1 f2 f3 --> 同时删除 f1 f2 f3 3个文件
【常用参数】
-i 向用户确认是否删除;
-f 文件强制删除;
-r 递归删除文件夹,著名的删除操作 rm -rf
sudo
以 root 身份运行命令
su
切换用户,需要 root 用户权限
sudo su --> 切换为root用户
(exit 命令或 CTRL + D 快捷键都可以使普通用户切换为 root 用户)
su kali --> 切换为普通用户
su - --> 切换为root用户
chmod
修改访问权限
adduser
新建用户
gzip / gunzip
“压缩/解压”归档,默认用 gzip 命令,压缩后的文件后缀名为 .tar.gz
gzip archive.tar # 压缩
gunzip archive.tar.gz # 解压
tar
归档+压缩
可以用 tar 命令同时完成归档和压缩的操作,就是给 tar 命令多加一个选项参数,使之完成归档操作后,还是调用 gzip 或 bzip2 命令来完成压缩操作。
tar -zcvf archive.tar.gz archive/ # 将archive文件夹归档并压缩
tar -zxvf archive.tar.gz # 将archive.tar.gz归档压缩文件解压
zip/unzip
“压缩/解压” zip 文件( zip 压缩文件一般来自 windows 操作系统)
unzip archive.zip # 解压 .zip 文件
unzip -l archive.zip # 不解开 .zip 文件,只看其中内容
ifconfig
查看 ip 网络相关信息,如果命令不存在的话, 执行命令 yum install net-tools 安装
vim命令
打开vim
在终端命令行中输入 vim 回车后 Vim 就会被运行起来,也可以用 Vim 来打开一个文件,只需要在 vim 后面再加文件名。如 vim file.name ,如果文件不存在,那么会被创建
交互模式
也成为正常模式,这是 Vim 的默认模式,每次运行 Vim 程序的时候,就会进入这个模式。
例如执行 vim name.txt 则会进入交互模式
交互模式特征:
在这个模式下,你不能输入文本;
它可以让我们在文本间移动,删除一行文本,复制黏贴文本,跳转到指定行,撤销操作,等等。
插入模式
这个模式是我们熟悉的文本编辑器的模式,就是可以输入任何你想输入的内容。进入这个模式有几种方法,最常用的方法是按字母键 i ( i、I、a、A、o、O 都可以进入插入模式,只是所处的位置不同),退出这种模式,只需要按下 Esc 键。
命令模式
退出文件
在交互模式下,按下冒号键 : 进入命令模式,再按下 q 键,就可以退出了。
如果在退出之前又修改了文件,就直接想用 :q 退出 Vim ,那么 Vim 会显示一个红字标明错误信息。此时我们有两个选择:
-
保存并退出 :wq 或 :x ;
-
不保存且退出 :q! 。
Linux开启服务
在Linux系统中,可以通过以下几种方法来启动服务:
-
使用service命令:可以通过service命令来启动、停止、重启或查看服务的状态。例如,启动Apache服务可以使用以下命令:
sudo service apache2 start
-
使用systemctl命令:systemctl是systemd守护进程管理工具,可以用来启动、停止、重启或查看服务的状态。例如,启动Apache服务可以使用以下命令:
sudo systemctl start apache2
-
使用/etc/init.d/目录下的启动脚本:在/etc/init.d/目录下存放着系统服务的启动脚本,可以通过执行这些脚本来启动服务。例如,启动Apache服务可以使用以下命令:
sudo /etc/init.d/apache2 start
-
使用启动脚本的绝对路径:有些服务可能没有在/etc/init.d/目录下的启动脚本,可以直接使用启动脚本的绝对路径来启动服务。例如,启动MySQL服务可以使用以下命令:
sudo /opt/mysql/bin/mysqld_safe --defaults-file=/etc/mysql/my.cnf
无论使用哪种方法,都需要以root或具有sudo权限的用户身份来执行相关命令
Linux开启端口
1.检查端口是否已经被占用
在开放端口之前,我们需要确保该端口尚未被其他服务占用。可以通过 netstat 命令来检查是否已经存在某个进程在监听该端口。
例如,我们要检查 8080 端口是否已经被占用,可以使用以下命令:
sudo netstat -anp | grep 8080
2.开放端口
使用 iptables 命令开放端口
在大多数 Linux 系统中,我们可以使用 iptables
命令来管理防火墙规则。
例如,我们要开放 8080 端口,可以使用以下命令:
sudo iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
3.重启防火墙
无论是使用 iptables 还是 firewalld 命令,都需要在开放端口之后重启防火墙才能使其生效。下面是重启 iptables 和 firewalld 的命令:
重启 iptables:
sudo service iptables restart
1
重启 firewalld:
sudo systemctl restart firewalld
4.验证端口是否开放
使用 netstat 命令
使用 netstat 命令可以查看当前 Linux 系统中所有开放的端口,以及相应的监听状态和进程信息。以下是使用 netstat 命令查看端口开放情况的命令:
sudo netstat -tuln