一、为什么要学Linux?

学习一样技能之前,懂得为什么要学习其实很重要,这样就不会被动刻板地去学习,而是主动探索。

在工作中,我们往往需要使用Docker、Kubernetes等容器化技术来打包项目,然后再用Nginx部署项目,这就需要使用Linux命令来创建和管理虚拟机、容器集群、镜像等,了解和熟悉一些常用的Linux操作命令对于使用Docker和配置Nginx是非常有帮助的。

我记得我学习大数据时,要安装Hadoop这个分布式计算框架,没法在Windows系统上直接装,就装了个虚拟机,然后在虚拟机中安装ubuntu或CentOS这些Linux系统,就是这样初步认识了一些Linux的基础命令。除此之外,Spark、Kafka、HBase、Flink等通常都需要在Linux上安装或部署或运行,Linux广泛应用于各种场景,其重要性不言而喻

二、什么是 Linux?

Linux是一种开源的操作系统内核,它基于UNIX操作系统,广泛应用于服务器、嵌入式系统和云计算等领域。它具有稳定性、安全性和可定制性的特点,因此被广泛应用于服务器和嵌入式设备等领域。Linux操作系统提供了丰富的命令行工具,可以通过命令行界面(CLI)进行系统管理和操作。

许多互联网公司和科技企业都在使用Linux作为服务器操作系统,因此掌握Linux及其常用命令可以为你在这些领域中的工作提供更多机会。

三、Linux 常用命令

1. 文件和目录管理

'ls':列出目录内容(list directory contents)
'cd':切换当前工作目录(change directory)
'pwd':显示当前工作目录的路径(print working directory)
'mkdir':创建新目录(make directory)
'rm':删除文件或目录 (remove)
'rm'是删除命令,'-r'参数表示递归地删除目录及其所有内容,包括子目录和文件。
'cp':复制文件或目录 (copy)
'mv':移动文件或目录(move)
'touch':创建空文件或更新文件时间戳(没有全称,是一个单词的命令)
'cat':查看文件内容
'more和less':逐页查看文件内容

具体的文件和目录管理命令示例如下:

# 列出当前目录内容
ls
# 创建新目录
mkdir mydir
# 删除文件或目录
rm myfile.txt
rm -r mydir        #删除名为"mydir"的目录及其所有内容,-r选项表示"递归"
# 复制文件或目录
cp myfile.txt mydir/   #将文件myfile.txt复制到目录mydir/中
cp -r mydir mydir_backup  #将目录mydir/及其所有内容递归地复制到目录mydir_backup/中
# 移动文件或目录
# 如果目录或文件不存在,会报错
mv myfile.txt mydir/   #将文件myfile.txt移动到目录mydir/中
mv mydir mydir_newname   #将目录mydir/重命名为mydir_newname/
# 创建空文件或更新文件时间戳
touch myfile.txt   #更新myfile.txt文件的访问时间和修改时间为当前时间

2. 系统管理

`uname`:显示系统信息
`date`:显示当前日期和时间
`uptime`:显示系统运行时间和负载
`shutdown`:关机或重启系统
`reboot`:重启系统
`df`:显示磁盘空间使用情况
`du`:显示目录或文件的磁盘使用情况

一套比较完整的系统管理命令示例如下:

# 显示系统信息
uname -a
# `-a`是一个选项或参数,用于指定要显示所有系统信息的详细输出
# 包括内核名称、主机名、内核版本、操作系统版本、硬件架构和处理器类型等
# 显示当前日期和时间
date
# 显示系统运行时间和负载
uptime
# 关机或重启系统
shutdown now
reboot

例如,执行 uname -a 命令可能会输出以下内容:

Linux mycomputer 5.4.0-42-generic #46~18.04.1-Ubuntu SMP Fri Jul 10 07:21:24 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

其中,mycomputer是主机名,5.4.0-42-generic是内核版本,x86_64是硬件架构。

3. 进程管理

`ps`:显示当前运行的进程
`top`:实时显示系统进程和资源使用情况
`ps -ef`:显示系统中正在运行的所有进程的详细信息
`kill`:终止指定进程
`killall`:终止所有具有指定名称的进程
`vmstat`: 报告虚拟内存(包括物理内存、交换空间和IO操作)统计信息
`strace`: 跟踪系统调用和信号,跟踪进程系统调用

具体进程管理命令示例如下:

# 显示当前运行的进程
ps aux   #aux是选项,表示显示所有用户的所有进程。
# 实时显示系统进程和资源使用情况
top
# 显示系统中正在运行的所有进程的详细信息
ps -ef
# ps是"Process Status"的缩写,`-ef`是选项,表示显示所有进程的完整信息。`-e`选项表示显示所有进程,`-f`选项表示以完整的格式显示进程信息。
# 输出结果包括进程的PID(进程ID)、父进程的PID、进程的状态、执行命令的用户、CPU使用率、内存使用率等信息。
# 终止指定进程
kill 1234   #向进程ID为1234的进程发送一个终止信号,用于终止该进程
# 终止所有具有指定名称的进程
killall firefox   #终止所有名为"firefox"的进程

4. 网络管理

`ifconfig`:显示或配置网络接口信息
`ping`:测试网络连接
`netstat`:显示网络连接、路由表和网络接口统计信息
`ssh`:通过SSH连接到远程主机
`scp`:在本地主机和远程主机之间复制文件
`curl`:下载文件

具体网络管理命令示例如下:

# 显示网络接口信息
ifconfig
# 测试网络连接
ping www.baidu.com #试图连接到网站www.baidu.com并测试其连接速度和可靠性
# 显示网络连接、路由表和网络接口统计信息
netstat -a
# 通过 SSH 连接到远程主机
ssh username@remotehost
# 在本地主机和远程主机之间复制文件
scp myfile.txt username@remotehost:~/destination/

5. 包管理

`apt-get`Debian/Ubuntu 系统的包管理工具
`yum`CentOS/RHEL 系统的包管理工具
`dnf`Fedora 系统的包管理工具

具体包管理命令示例如下:

# 安装软件包
apt-get install package_name
yum install package_name
dnf install package_name
# 更新软件包
apt-get update
yum update
dnf update
# 删除软件包
apt-get remove package_name
yum remove package_name
dnf remove package_name

6. 用户和权限管理

`useradd`:创建新用户
`passwd`:设置用户密码
`su`:切换到其他用户
`sudo`:以超级用户身份执行命令
`chmod`:修改文件或目录的权限(change mode)
`chown`:修改文件或目录的所有者(change owner)
`who与w`:查看当前登录用户

具体用户和权限管理命令示例如下:

# 创建新用户
useradd newuser
# 设置用户密码
passwd newuser
# 切换到其他用户
su - username
# 以超级用户身份执行命令
sudo command   #command是你以超级用户(root)的身份执行的命令
# 修改文件或目录的权限
chmod 644 myfile.txt
# 1.`chmod`是 "Change Mode" 的缩写
# 2.`644`是文件权限的数字表示方式。其中,第一个数字表示文件所有者的权限,第二个数字表示同组用户的权限,第三个数字表示其他用户的权限。数字 6 表示读写权限,数字 4 表示只读权限。
# 3.`myfile.txt`是要修改权限的文件名。
# 修改文件或目录的所有者
chown newuser myfile.txt   #`chown`是"Change Owner"的缩写,`newuser`是新的文件所有者的用户名

四、最后的话

能力一般,水平有限,本文可能存在纰漏或错误,如有问题欢迎指正,感谢你阅读这篇文章,如果你觉得写得还行的话,不要忘记点赞、评论、收藏哦!祝大家生活愉快!