Linux 将硬件、进程、网络都抽象为文件,统一通过/根目录访问。关键目录:
/bin、/sbin:系统命令/etc:配置文件/var:动态数据(日志)/proc:虚拟文件系统,显示进程和内核信息文件权限模型:每个文件有“用户-组-其他”三组权限,每组含读(r=4)、写(w=2)、执行(x=1)。例如755表示用户可读写执行,组和其他可读执行。
实战:修改权限与创建链接
# 创建测试文件
echo "Hello Linux" > test.txt
ls -l test.txt # 查看权限
chmod 644 test.txt # 改为 -rw-r--r--
chown user:group test.txt
# 硬链接与软链接(符号链接)
ln test.txt hard_link # 硬链接,指向同一inode
ln -s test.txt soft_link # 软链接,类似快捷方式进程是运行程序的实例。每个进程有PID,父进程PPID,形成树状结构。
常用命令:
ps aux # 查看所有进程详细信息
top # 动态进程列表(按P键按CPU排序)
kill -9 PID # 强制终止
nohup ./myapp & # 后台运行,退出终端不终止信号机制:kill -l列出所有信号,如SIGTERM(15)优雅终止,SIGKILL(9)强制杀死。
后台任务管理:
jobs # 查看当前终端后台任务
bg %1 # 将挂起的任务放到后台运行
fg %1 # 调回前台查看IP:ip addr 或 ifconfig。测试连通性:ping -c 4 8.8.8.8。
监听端口与服务:
ss -tuln # 查看所有TCP/UDP监听端口
netstat -anp # 更详细的连接信息防火墙(iptables/nftables):以iptables为例,放行80端口:
bash
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j ACCEPT # SSH
# 保存规则(不同发行版命令不同)
service iptables saveShell脚本是Linux自动化的核心。下面编写一个监控CPU、内存、磁盘的脚本,若超出阈值则记录日志并发送邮件(简化版)。
#!/bin/bash
# system_monitor.sh - 系统资源监控告警
LOG_FILE="/var/log/system_monitor.log"
CPU_THRESHOLD=80
MEM_THRESHOLD=80
DISK_THRESHOLD=90
# 获取CPU使用率(取user+system)
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')
# 获取内存使用百分比
MEM_USAGE=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100}')
# 获取根目录磁盘使用百分比
DISK_USAGE=$(df -h / | awk 'NR==2{print $5}' | sed 's/%//')
send_alert() {
local msg="$1"
echo "$(date '+%Y-%m-%d %H:%M:%S') - $msg" >> $LOG_FILE
# 生产环境可调用mail命令或curl告警API
# echo "$msg" | mail -s "System Alert" admin@example.com
}
# 检查CPU
if (( $(echo "$CPU_USAGE > $CPU_THRESHOLD" | bc -l) )); then
send_alert "CPU usage high: ${CPU_USAGE}%"
fi
# 检查内存
if [ $MEM_USAGE -gt $MEM_THRESHOLD ]; then
send_alert "Memory usage high: ${MEM_USAGE}%"
fi
# 检查磁盘
if [ $DISK_USAGE -gt $DISK_THRESHOLD ]; then
send_alert "Disk usage high: ${DISK_USAGE}%"
fi将此脚本加入cron定时任务,每分钟执行一次:
crontab -e
# 添加行
* * * * * /path/to/system_monitor.sh用Python内置的HTTP服务器快速搭建一个文件共享服务,并配置为后台守护进程。
步骤:
mkdir -p /var/www/html && echo "<h1>Hello Linux</h1>" > /var/www/html/index.htmlcd /var/www/html
nohup python3 -m http.server 8080 > /dev/null 2>&1 &iptables -I INPUT -p tcp --dport 8080 -j ACCEPThttp://你的IP:8080 即可看到页面。若想实现更复杂的动态服务,可编写一个简单的Python Web服务器:
#!/usr/bin/env python3
# simple_server.py
from http.server import HTTPServer, BaseHTTPRequestHandler
import time
class MyHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(f"<h1>Server time: {time.ctime()}</h1>".encode())
if __name__ == '__main__':
server = HTTPServer(('0.0.0.0', 8080), MyHandler)
print('Starting server on port 8080...')
server.serve_forever()运行:nohup python3 simple_server.py &,同样可后台运行。
如果服务意外崩溃,可借助systemd或supervisor实现自动重启。这里演示用systemd创建服务:
/etc/systemd/system/myweb.service:[Unit]
Description=My Simple Web Server
After=network.target
[Service]
ExecStart=/usr/bin/python3 /root/simple_server.py
Restart=always
User=root
[Install]
WantedBy=multi-user.targetsystemctl start myweb,开机自启:systemctl enable myweb。查看日志:journalctl -u myweb -f。
我们从文件系统、权限、进程、网络、脚本到部署Web服务,完整走过了Linux零基础入门到实战的旅程。关键要点:
|、>、>> 让命令组合更强大。Linux的学习没有捷径,但通过亲手编写监控脚本、部署服务、配置防火墙,你已跨越了“入门”的门槛。接下来,继续探索sed、awk、grep文本三剑客,以及vim编辑器,你将逐步成长为真正的Linux工程师。记住:命令行不是障碍,而是你操控系统的魔法棒。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。