十年运维路,半生中年局。
扫码关注公众号
不管是刚接触Linux的新手,还是想在工作里提高效率的人,把这10个核心技能练熟,基本能应对日常80%以上的操作,写简历能加分,干活也能少走弯路。
一、基础操作:天天都得用的核心命令
1.文件与目录管理
每天处理文件、建文件夹都靠这几个命令:ls、cd、mkdir、rm、cp、mv。
(1)ls:看当前目录有啥文件,ls -lha能看详细信息(大小、权限、修改时间),隐藏文件也能显示。
(2)cd:切换目录,cd /home/user进用户家目录,cd ..回上一级,不用记完整路径。
(3)mkdir:建文件夹,mkdir work建单个,mkdir -p work/project/docs一次性建多层目录。
(4)rm:删东西,rm test.txt删文件,rm -r work删文件夹,rm -rf work强制删(删了找不回,得小心)。
(5)cp:复制,cp test.txt work/把文件拷到文件夹,cp -r work/ backup/复制整个文件夹。
(6)mv:移动或改名,mv test.txt work/移文件,mv test.txt data.txt直接改文件名。
2.权限管理
Linux里文件谁能看、谁能改,靠chmod和chown管,尤其是多人共用服务器时必用。
(1)chmod:设读写执行权限,用数字最方便。比如chmod 755 file.txt,7是用户(所有者)权限(读+写+执行),第一个5是用户组权限(读+执行),第二个5是其他用户权限(读+执行)。
想让所有人能写就chmod 777,但不安全,少用。改文件夹权限加-R,chmod -R 755 work/。
(2)chown:改所有者和所属组,chown user:group file.txt,把文件归给user用户和group组;只改所有者就chown user file.txt,只改组就chown :group file.txt。
3.文本处理“三剑客”
查日志、改配置文件全靠grep、awk、sed,天天都能用到。
(1)grep:找文件里的内容,grep "error" log.txt在日志里找“error”行;grep -i "Error"忽略大小写,grep -c "error"统计有多少行匹配。
(2)awk:提取数据,比如/etc/passwd文件用冒号分隔,awk -F: '$3<1000 {print $1}' /etc/passwd,能找出用户ID小于1000的用户名($3是用户ID,$1是用户名)。
(3)sed:替换内容,sed -i 's/old_ip/new_ip/g' config.txt,把文件里所有旧IP换成新IP(-i直接改原文件,g是全局替换);还能删行,sed -i '/^#/d' config.txt删掉注释行。
二、系统管理:提升效率的关键操作
4.进程监控与管理
平时程序卡住,或者内存占用太高,就得用ps、top、kill这几个命令处理。
先说ps,这个命令能查看正在运行的进程。
输入ps -ef,可以看到所有进程的详细信息;要是只想找Java进程,就用ps -ef | grep java ,这里的 | 符号就像个筛子,帮你过滤结果。
top命令更直观,打开后能实时看到哪个进程最“吃”CPU和内存。
按P键,进程会按CPU占用从高到低排序;按M键,按内存占用排序;看完了想退出,直接按q就行。
最后是kill命令,用来结束进程。先从ps或top命令里找到进程号,比如1234 ,用kill 1234 就能正常结束进程。
要是进程卡死了,就得用kill -9 1234强制结束。
不过一定要确认好进程号,杀错进程可能会出大问题!
5.服务管理
像Web服务、数据库这些后台服务,启动、重启在不同系统里命令不太一样。
CentOS系统用systemctl命令,Ubuntu系统用service命令。
不过现在新一点的系统,比如CentOS 7以上、Ubuntu 16.04以后,基本都统一用systemctl了。
比如管理httpd服务,启动用systemctl start httpd,查看状态用systemctl status httpd,改完配置要重启就用systemctl restart httpd。
要是想让服务开机自动启动,得用systemctl enable httpd。
不过在一些老系统里,可能还会用到service命令,比如service nginx restart,但为了方便,还是建议优先学systemctl。
6.磁盘与文件系统
服务器硬盘满了,或者要接新硬盘,都会用到df、du、fdisk、mount这几个命令。
先说说df -h,这是我每天必看的。
它能显示每个磁盘分区用了多少空间,结果直接以GB、MB为单位,特别直观。
要是看到/目录占用超过80%,就得赶紧清理了——我之前就吃过亏,没及时清理,结果服务器直接卡住了。
du命令用来查目录大小。
比如想知道日志文件夹占多大空间,就用du -sh /var/log;要是想细看里面每个子目录,用du -h /var/log,哪个文件占地方一下就清楚了。
所以第一步一定要用lsblk或fdisk -l确认硬盘设备名,比如确认是/dev/sdb。
确认好了,再开始分区,用fdisk /dev/sdb,按n新建分区,按w保存。分区完了,用mkfs.ext4 /dev/sdb1格式化。
最后新建个目录,比如mkdir /data,再用mount /dev/sdb1 /data挂载。
如果想让挂载设置一直生效,就得改/etc/fstab文件。这里建议用磁盘的UUID代替设备名,因为设备名有时候会变,但UUID是固定的,更保险。
查UUID也简单,用blkid命令就行,之前我给服务器加硬盘时,就是用这个方法,到现在都没出过问题。
三、网络与实用工具:保障运行+少跑腿
连不上网,或者远程登不上服务器,就用ip、ping、traceroute这几个命令排查问题。
不过有些系统里可能没装这个命令,可以试试tracepath,还有个mtr命令,集成了ping和traceroute的功能,更好用。
8.防火墙管理
开放端口、防止恶意访问,CentOS用firewalld,Ubuntu用ufw。
平时很少直接操作服务器,基本都靠ssh和scp远程管理。
要是端口不是默认的22,得用ssh -p 2222 user@192.168.1.200指定端口。
要是传文件夹,得加个-r参数,像scp -r work/ user@192.168.1.200:/home/user/ 。
像每天备份数据、每周清理日志这种重复的活儿,不用手动做,可以用crontab命令设定时任务,让系统自动运行。
比如每天凌晨2点运行备份脚本,就写“0 2 * * * /home/user/backup.sh”,这里的*代表任意时间。
不过要注意,cron运行的环境和我们平时用的不一样,脚本或命令里最好写绝对路径,比如/usr/bin/python3 /home/user/script.py,不然可能因为找不到命令执行失败。
学Linux不用贪多,先把这些核心的练熟,能解决工作里的实际问题就行,不管是写简历找工作,还是平时干活,都能真真切切帮上忙。