Linux系统除了内核外,通常还包括GNU工具套件等大量自由软件、甚至一些专有软件。这些软件一起,构成一个功能完备的操作系统。对于使用者来讲,它提供了一个类似于Windows、MacOS的图形化界面和一些常用的软件,如办公软件,浏览器,音乐播放器,视频播放器等。
Linux的另一个特点是其高度的可定制性。用户可以根据自己的需求和技能选择或者定制各种各样的Linux发行版,例如:Debian、Ubuntu、Fedora、CentOS、Arch Linux等。
Linux系统以其高度自定义和功能强大的特点,在编程者和IT专业人士中赢得了广泛的赞誉。在底层,Linux操作使用一套被称为“shell”的命令行界面。在这篇文章中,我们将深入学习一些最常见和最有用的Linux命令和基础知识。
Linux 是一个开源的 Unix-like 系统,它是由 Linus Torvalds 在 1991 年首次发布的。以下是一些必须了解的基础知识:
/
是根目录,/home
通常包含用户文件,/etc
包含系统配置文件,等等。ls
可以列出目录的内容,cd
可以改变当前目录,rm
可以删除文件或目录等。chmod
和 chown
命令可以改变文件或目录的权限和所有者。apt
,CentOS 的 yum
或 dnf
,用于安装、更新或删除软件。ps
,top
,htop
,kill
,pkill
等命令来查看和管理系统进程。systemd
(或某些发行版中的 init
)来启动、停止或重新启动这些服务。vi/vim
,nano
,和 emacs
。ifconfig
,netstat
,ssh
,scp
是一些常用的网络工具。你可以用它们来查看网络配置,检查网络连通性,远程连接到其他系统等。以上只是 Linux 基础知识的浅尝辄止,实际上,Linux 的知识体系极其庞大和详细,通过不断学习和实践,你会发现 Linux 具有强大的能力和灵活性。
以下使用莱卡云服务器示范(Ubuntu 20.04.6 LTS)
# 查看IP地址
ip addr show
# ping网络(测试网络连通)
ping 目标机器的ip
# 查看系统时间
date
# 注销
logout
# 关机
shutdown -h now
# 重启
shutdown -r now
Linux文件系统实际上是一个目录和文件的树形结构。它采用一种统一的方式来访问所有类型的数据存储设备,包括硬盘、光盘、USB设备等。其中'/(root)'是文件系统的根目录,所有的目录和文件从根开始。
最常见的Linux文件系统类型是Ext4(扩展文件系统4),尽管还有其他的像XFS、Btrfs、ZFS、JFS等。各种文件系统类型具有不同的性能、可靠性和功能特性。
以下是Linux文件系统中一些主要目录的详细说明:
/
: 这是根目录,在此之下开始所有文件和目录。/bin
: 包含基本的可执行程序(二进制文件),这些程序对所有用户都可用。/boot
: 包含启动加载程序所需的文件,比如GRUB。/dev
: 包括设备文件,每个硬件设备(如硬盘驱动器、串行端口、键盘、声卡等)在/dev目录下都有相应的文件。/etc
: 包含所有的系统管理所需要的配置文件和子目录。/home
: 用户的主目录,在此目录下,每个用户都有自己的目录。/lib
: 保存着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。/sbin
: 包含一些管理员级别的重要二进制文件。/tmp
: 用于存放临时文件。/usr
: 包含多用户共享的应用程序和文件。/var
: 用于存储运行过程中经常变化的文件,如日志文件。在Linux中,有许多命令可以帮助你管理文件和目录。下面是一些基本的Linux文件管理命令:
ls
:列出目录的内容。
ls -l
:显示文件和目录的详细信息。ls -a
:列出包括隐藏文件在内的所有文件。cd
:更改当前目录。
cd ..
:移动到上一目录。cd /
:移动到根目录。pwd
:显示当前目录的完整路径。cp
:复制文件或目录。
cp source destination
:将源文件复制到目标位置。cp -r source_directory destination_directory
:复制源目录及其所有文件和子目录到目标目录。mv
:移动或重命名文件和目录。
mv old_name new_name
:将文件或目录重命名为新名称。mv source destination
:将源文件或目录移动到目标位置。rm
:删除文件和目录。
rm file
:删除指定的文件。rm -r directory
:删除指定目录及其所有子目录和文件。touch
:创建一个新的空文件。mkdir
:创建新的目录。
mkdir directory
:创建新的目录。cat
:显示文件内容。less
& more
:以分页方式查看文件内容。head
& tail
:查看文件的开始部分或结束部分。find
:在系统中搜索文件和目录。find / -name "filename"
:在根目录及其所有子目录中搜索名为"filename"的文件。ln
:创建硬链接或符号链接。ln -s source link
:创建一个指向源文件或目录的符号链接。chmod
:改变文件或目录的权限。chmod 755 file
:设置文件的权限为755(即,所有者拥有读/写/执行权限,而组成员和其他人只有读/执行权限)。chown
:更改文件或目录的所有者。chown user:group file
:将文件的所有者更改为用户'user',并将组更改为'group'。以上只是基础部分,Linux的文件管理命令远不止这些。具体使用时可以配合各种选项,实现更多的功能。
在Linux系统中,最常用的防火墙工具是iptables与新一代的firewalld。以下是一些常用的命令:
iptables
:早期的Linux系统防火墙,可以控制网络的访问和流量。
iptables -L
:列出所有的防火墙规则。iptables -F
:清空所有的规则。iptables -A INPUT -p tcp --dport 22 -j ACCEPT
:允许所有来自22端口的输入(SSH)。firewalld
:现在大部分Linux发行版默认使用的防火墙。
systemctl start firewalld
:启动firewalld服务。firewall-cmd --state
:检查firewalld状态。firewall-cmd --get-active-zones
:显示活动的区域和接口。firewall-cmd --zone=public --add-port=80/tcp --permanent
:在公共区域打开80端口(HTTP)。firewall-cmd --reload
:重新载入防火墙规则。ufw
:Ubuntu Firewall,用于Ubuntu及其衍生版本的非常简单易用的防火墙工具。
ufw enable
:启用ufw。ufw disable
:禁用ufw。ufw status
:检查ufw状态。ufw allow 22
:允许所有来自22端口的流量。ufw deny 22
:阻止所有来自22端口的流量。这些只是一部分命令,具体的使用方法可以参考相应的手册或者在线资源。记住,修改防火墙设置前,一定要了解你自己在做什么,因为错误的设置可能导致你的服务器无法访问。
这里使用的是莱卡云服务器(4C4G为例)
# 查看系统内核信息
uname -a
# 查看系统内核版本
cat /proc/version
?
# 查看当前用户环境变量
env
?
cat /proc/cpuinfo
?
# 查看有几个逻辑cpu, 包括cpu型号
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
?
# 查看有几颗cpu,每颗分别是几核
cat /proc/cpuinfo | grep physical | uniq -c
?
# 查看当前CPU运行在32bit还是64bit模式下, 如果是运行在32bit下也不代表CPU不支持64bit
getconf LONG_BIT
?
# 结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit
cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l
在Linux上安装必要的软件,可以让你的系统更加强大。以下是一些常见和重要的软件:
update
: 在开始之前,使用该命令更新你的包列表和包本身以获得最新的版本。
sudo apt update && sudo apt upgrade
gcc
: 这是GNU编译器,用于编译主要的编程语言。
sudo apt install gcc
make
: 这是一种工具,用于自动化软件编译和测试。
sudo apt install make
git
: 用于版本控制和协作。
sudo apt install git
vim
: 这是一种高度可定制的文本编辑器。
sudo apt install vim
python
: 这是一种流行的编程语言,用于Web开发、数据分析等。
sudo apt install python3
pip
: Python的包管理器。
sudo apt install python3-pip
OpenSSL
: 这是一种用于安全通信的工具。
sudo apt install openssl
curl
或wget
: 这两个都是用于从终端下载文件的工具。
sudo apt install curl wget
net-tools
: 这是一组网络工具,包括ifconfig, netstat等。
sudo apt install net-tools
以上是为了使您的Linux系统成为一个强大的开发环境,你需要安装的一些主要软件。请注意,我使用的是apt作为包管理器,这在基于Debian的系统(如Ubuntu)中很常见。如果你在使用其他类型的Linux,可能需要使用dnf,yum,pacman等不同的包管理器。