一、为啥要学 Linux,它到底比 Windows 强在哪里?
(一)免费又省钱
Windows 系统需要花钱买正版授权,家庭版几百块,企业版更是贵得多。而 Linux 完全免费,不仅系统免费,上面很多常用软件,像办公软件 LibreOffice、数据库 MySQL 等也都是免费开源的。对于企业来说,部署大量服务器用 Linux,能省下一大笔软件授权费;个人学习和使用也不用掏一分钱,性价比超高。
(二)稳定到离谱
Windows 时不时就弹窗提示更新,更新完还可能出现各种兼容性问题,比如软件打不开、系统蓝屏死机。而 Linux 服务器能连续运行几年不重启,依然稳定工作。像大型网站、银行后台系统,为了保证 7×24 小时不间断服务,都会优先选择 Linux 系统,不用担心关键时刻掉链子。
(三)安全系数拉满
Windows 用户多,黑客就爱盯着它找漏洞攻击,电脑容易中病毒、木马。Linux 天生权限管理严格,普通用户没有管理员权限,很多危险操作干不了,病毒想偷偷安装、搞破坏非常难。而且开源意味着全球开发者都能一起检查代码,发现漏洞立马修复,安全更新速度特别快。所以银行、政府这些对安全要求极高的机构,都用 Linux 来保护重要数据。
(四)想怎么改就怎么改
Windows 系统就像一个封装好的黑盒子,用户只能按微软设定好的规则使用,想深度定制很难。Linux 是开源的,用户可以随意查看、修改系统底层代码。技术大神可以根据自己的需求,定制出独一无二的操作系统。比如想做一个专门用来挖矿的系统,或者适合物联网设备的轻量级系统,Linux 都能满足。
(五)服务器界的 “扛把子”
在服务器领域,Linux 几乎统治了市场。因为它占用资源少,同样配置的服务器,Linux 能同时处理更多任务。而且 Linux 支持多用户同时登录使用,每个用户互不干扰,特别适合企业多人协作办公。相比之下,Windows 服务器版本在性能和资源利用上就逊色不少,还经常需要额外的配置和优化。
(六)开发者的 “梦中情统”
Linux 自带很多开发工具,像编译器 GCC、版本控制 Git 等,安装配置都很方便。而且 Linux 遵循各种开源协议和标准,和开源社区的项目、代码兼容性特别好。开发者在 Linux 上开发的软件,移植到其他 Linux 系统,甚至其他支持开源标准的系统上,都能轻松运行。而 Windows 开发的软件,换个系统环境可能就出现各种问题,适配起来特别麻烦。
二、Linux 基础操作
(一)系统安装与登录
- 安装 Linux:咱可以用虚拟机软件,像 VMware 或者 VirtualBox,在自己电脑上装个 Linux 系统。比如说 CentOS 或者 Ubuntu。安装过程中,得注意选好分区,把系统装到合适的磁盘空间里。
- 登录系统:安装好后,打开虚拟机,就会看到登录界面。输入咱们安装时设置的用户名和密码,就能登录进 Linux 系统啦。
(二)常用命令
文件和目录操作
- ls:这个命令就是用来列出当前目录下的文件和文件夹的。比如说,你想看看 “/home” 目录下有啥,就输入 “ls /home”,它就会把这个目录下的东西都列出来。
- cd:用来切换目录。要是你想从当前目录进到 “/home/user” 目录,就输入 “cd /home/user”。想返回上一级目录,输入 “cd..” 就行。
- mkdir:创建新目录用的。比如你要在当前目录下创建一个叫 “new_folder” 的文件夹,就输入 “mkdir new_folder”。
- rmdir:删除空目录。要是你想删刚才创建的 “new_folder”(前提是里面没东西),就输入 “rmdir new_folder”。
- touch:可以创建新的空文件。比如说,在当前目录下创建一个叫 “test.txt” 的文件,输入 “touch test.txt”。
- rm:删除文件或者非空目录(小心用,删了可不好恢复)。删除 “test.txt”,输入 “rm test.txt”;要是想删一个非空目录 “my_folder”,得加个参数 “-r”,输入 “rm -r my_folder”。
文件内容查看
- cat:能把文件内容一次性全显示出来。比如你想看看 “test.txt” 里写了啥,输入 “cat test.txt”。
- more:一页一页显示文件内容。查看大文件的时候好用,按 “空格” 键翻页。输入 “more big_file.txt”。
- less:也是分页查看,比 “more” 更灵活,能往前翻页。用 “less another_big_file.txt” 查看文件。
- head:显示文件开头几行,默认是 10 行。比如想看看 “log.txt” 开头 5 行,输入 “head -n 5 log.txt”。
- tail:显示文件末尾几行,默认也是 10 行。想看 “log.txt” 末尾 3 行,输入 “tail -n 3 log.txt”。
文本编辑
- nano:简单好用的文本编辑器。用它编辑 “test.txt”,输入 “nano test.txt”,进去就能编辑内容,编辑完按 “Ctrl+X”,再按 “Y” 保存,最后按 “Enter” 退出。
- vim:功能强大但有点复杂。打开 “test.txt” 编辑,输入 “vim test.txt”。进去后按 “i” 进入插入模式开始编辑,编辑完按 “Esc” 键,再输入 “:wq” 保存并退出(“:q!” 是不保存强制退出)。
(三)用户和权限管理
用户管理
- useradd:添加新用户。比如添加一个叫 “new_user” 的用户,输入 “useradd new_user”。
- passwd:设置或修改用户密码。给 “new_user” 设置密码,输入 “passwd new_user”,然后按提示输入新密码。
- userdel:删除用户。删除 “new_user”,输入 “userdel new_user”(要是想连用户家目录一起删,加 “-r” 参数,即 “userdel -r new_user”)。
权限管理
- 文件和目录有权限设置,分所有者、所属组和其他用户三种权限,每种又有读(r)、写(w)、执行(x)权限。
- chmod:修改权限。比如要给 “test.txt” 的所有者添加执行权限,输入 “chmod u+x test.txt”;把 “my_folder” 目录的所有用户都设置成可读可写可执行,输入 “chmod 777 my_folder”(7 表示 rwx,即读、写、执行权限都有)。
- chown:改变文件或目录的所有者和所属组。把 “test.txt” 的所有者改成 “new_user”,输入 “chown new_user test.txt”;要是想同时改所有者和所属组,比如改成 “new_user:new_group”,输入 “chown new_user:new_group test.txt”。
三、Linux 系统管理
(一)进程管理
- ps:查看当前运行的进程。输入 “ps aux”,能列出所有用户的进程,显示进程的详细信息,像用户名、进程 ID、CPU 和内存占用等。
- top:实时动态显示进程状态,能看到哪个进程占用资源多。输入 “top” 后,会不断刷新进程信息,按 “q” 键退出。
- kill:终止进程。要是想杀掉进程 ID 为 “1234” 的进程,输入 “kill 1234”;要是进程比较顽固,用 “kill -9 1234” 强制杀掉(一般别轻易用 “-9”,可能会导致数据丢失啥的)。
(二)服务管理
- systemctl:管理系统服务的命令。比如要启动 “httpd” 服务(假设装了这个服务),输入 “systemctl start httpd”;停止服务用 “systemctl stop httpd”;重启服务是 “systemctl restart httpd”;查看服务状态,输入 “systemctl status httpd”。
- chkconfig:设置服务开机自启。想让 “httpd” 服务开机自动启动,输入 “chkconfig httpd on”;不让它开机自启,输入 “chkconfig httpd off”。
(三)磁盘管理
- df:查看磁盘使用情况。输入 “df -h”,“-h” 参数让结果以更易读的方式显示,能看到每个磁盘分区的总容量、已用容量、可用容量等信息。
- du:查看目录或文件占用磁盘空间大小。比如想看看 “/home/user” 目录占了多少空间,输入 “du -sh /home/user”,“-s” 表示只显示总和,“-h” 让结果易读。
- fdisk:磁盘分区工具(一般在新磁盘使用前要分区)。比如给新磁盘 “/dev/sdb” 分区,输入 “fdisk /dev/sdb”,然后按提示操作,像创建分区、设置分区类型等。
- mount:挂载磁盘分区。把 “/dev/sdb1” 分区挂载到 “/mnt/new_disk” 目录,输入 “mount /dev/sdb1 /mnt/new_disk”;想让系统开机自动挂载,得在 “/etc/fstab” 文件里添加相应配置。
四、网络配置
(一)网络设置
- ifconfig:查看和配置网络接口信息。输入 “ifconfig”,能看到当前网络接口的 IP 地址、子网掩码、MAC 地址等信息。要是想给 “eth0” 接口设置 IP 地址为 “192.168.1.100”,子网掩码为 “255.255.255.0”,输入 “ifconfig eth0 192.168.1.100 netmask 255.255.255.0”(不过这种设置重启后可能失效,永久设置得改配置文件)。
- ip:也是网络配置命令,功能更强大。比如用 “ip addr show” 查看网络接口信息,和 “ifconfig” 类似,但显示格式不太一样;用 “ip route” 查看路由表信息。
- 修改网络配置文件:在 “/etc/sysconfig/network-scripts/” 目录下有网络接口的配置文件,像 “ifcfg-eth0”。用文本编辑器打开这个文件,可以永久设置 IP 地址、网关、DNS 等信息。比如设置静态 IP,在文件里添加或修改 “IPADDR=192.168.1.100”“NETMASK=255.255.255.0”“GATEWAY=192.168.1.1” 等配置,改完保存,然后重启网络服务(“systemctl restart network”)。
(二)网络测试
- ping:测试网络连通性。比如想看看能不能 ping 通 “192.168.1.1”,输入 “ping 192.168.1.1”,要是能 ping 通,会显示响应时间等信息;要是不通,可能网络有问题。
- traceroute:查看数据包从本地到目标主机经过的路由路径。输入 “traceroute www.baidu.com”,它会显示数据包经过的每个路由器的 IP 地址和响应时间,能帮咱们找到网络故障出在哪一段。
- netstat:查看网络连接状态、路由表等信息。输入 “netstat -an”,能列出所有网络连接,包括 TCP 和 UDP 连接,显示连接的状态、本地和远程地址端口等信息。
五、高级技巧
(一)Shell 脚本编写
1.啥是 Shell 脚本:Shell 脚本就是把一堆 Linux 命令按顺序写在一个文件里,然后执行这个文件,就相当于依次执行里面的命令。能实现自动化操作,提高工作效率。
2.简单 Shell 脚本示例:比如创建一个备份文件的脚本。用文本编辑器创建一个叫 “backup.sh” 的文件,在里面输入:
#!/bin/bash
cp /home/user/important_file.txt /home/user/backup/
第一行 “#!/bin/bash” 指定用 bash shell 来执行这个脚本。
第二行就是复制文件的命令,把 “/home/user/important_file.txt” 文件复制到 “/home/user/backup/” 目录下。
保存文件后,给它添加执行权限 “chmod +x backup.sh”,然后执行 “./backup.sh”,就会执行文件里的备份操作啦。
3. 变量和条件判断:在脚本里可以用变量。比如:
#!/bin/bash
name="John"
echo "Hello, $name!"
这里定义了一个变量 “name”,值是 “John”,然后用 “echo” 命令输出带变量的句子。还能做条件判断,像:
#!/bin/bash
num=10
if [ $num -gt 5 ]; then
echo "The number is greater than 5"
else
echo "The number is less than or equal to 5"
fi
这里判断变量 “num” 的值是不是大于 5,然后根据结果输出不同的内容。
(二)软件安装与管理
- 包管理工具
- yum(适用于基于 Red Hat 的系统,像 CentOS):安装软件用 “yum install 软件名”。比如安装 “httpd” 服务,输入 “yum install httpd”;更新软件用 “yum update 软件名”,要是想更新所有软件,输入 “yum update”;卸载软件用 “yum remove 软件名”。
- apt-get(适用于基于 Debian 的系统,像 Ubuntu):安装软件 “apt-get install 软件名”;更新软件源 “apt-get update”,更新软件 “apt-get upgrade”;卸载软件 “apt-get remove 软件名”。
- 从源码安装软件:有些软件没有现成的包,就得从源码编译安装。一般步骤是:先下载软件源码包(通常是.tar.gz 或.tar.bz2 格式),然后解压,进入解压后的目录,执行 “./configure” 命令(这一步是配置安装选项,比如指定安装目录等),接着执行 “make” 命令编译源码,最后执行 “make install” 命令安装软件。比如安装 “nginx”,下载源码包解压后,在解压目录里依次执行这些命令。不过从源码安装比较复杂,可能还得先安装一些依赖包。
(三)安全设置
1.防火墙设置
- iptables(很多 Linux 系统自带):添加规则让 “httpd” 服务能对外提供服务,允许 TCP 协议的 80 端口通过,输入 “iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT”;禁止某个 IP 访问,比如禁止 “192.168.1.200” 访问,输入 “iptables -A INPUT -s 192.168.1.200 -j DROP”。设置完规则后,可以用 “iptables -L” 查看当前的防火墙规则。
- firewalld(CentOS 7 及以上常用):开启 “httpd” 服务的访问,输入 “firewall-cmd --zone=public --add-service=http --permanent”,然后重新加载防火墙配置 “firewall-cmd --reload”;查看当前开放的服务,输入 “firewall-cmd --zone=public --list-services”。
2.SELinux 设置:SELinux 是增强型安全机制。查看 SELinux 状态,输入 “sestatus”。要是想临时关闭 SELinux(不推荐,一般只在调试时用),输入 “setenforce 0”;想永久关闭,得修改 “/etc/selinux/config” 文件,把 “SELINUX=enforcing” 改成 “SELINUX=disabled”,改完重启系统。不过最好还是通过合理配置 SELinux 策略来满足安全需求,而不是直接关闭它。