站长必备 20 个 Linux 基础命令:从连接到安全运维,新手也能搞定服务器

做站长这么多年,从最开始接触Linux服务器的手足无措,到现在能熟练搞定各种日常运维,最大的感悟就是:不用死记硬背所有Linux命令,吃透这20个基础命令,就能应对绝大多数服务器日常操作——重启服务、查看日志、清理垃圾、排查异常,甚至简单的安全防护,都能轻松搞定。
很多新手站长刚拿到Linux服务器(不管是CentOS还是Ubuntu),看着黑框框的命令行就发怵,总想着用可视化面板,但面板偶尔会出问题,而且依赖面板会让你永远学不会真正的服务器运维。其实这些基础命令很简单,我结合自己多年的实操经验,把每个命令的用途、用法、注意事项都讲透,新手跟着练几次,就能上手,全程避开我当年踩过的坑。
先说明一下:我平时用的最多的是CentOS(毕竟中小企业服务器用的多),部分命令Ubuntu也能用,差异我会特别标注,不用纠结系统版本,核心用法都相通,重点是掌握思路,而非死记硬背。
一、基础入门必会(5个,搞定服务器连接与基础查看)
这5个命令是基础中的基础,不管是刚登录服务器,还是日常查看服务器状态,每天都会用到,新手先把这几个练熟。
1. ssh:远程连接服务器(重中之重)
用法:ssh 用户名@服务器IP -p 端口号(默认端口22,我之前改了2222,更安全)
例子:ssh webadmin@123.45.67.89 -p 2222
这是我们操作服务器的第一步,没有这个命令,根本进不了服务器。当年我刚入门,不知道端口号要写对,输了默认22端口,一直连接失败,排查了半小时才发现,自己之前改了SSH端口,忘了在命令里加-p 2222,特别坑。
注意:连接成功后,会提示输入密码,输入时密码是隐藏的,不会显示星号,正常输入回车就行,别以为是没输上。
2. ls:查看当前目录下的文件/目录
用法:ls(简单查看)、ls -l(详细查看,包含权限、大小、修改时间)、ls -a(查看隐藏文件,比如.htaccess、.bashrc)
例子:ls -l /var/www/html(查看网站根目录的文件详情)
日常用的最多的是ls -l,查看文件权限和大小,比如我怀疑某个文件权限不对,就用这个命令查看,快速定位问题。隐藏文件ls -a也常用,比如查看网站的.htaccess配置文件,默认是隐藏的,必须用这个命令才能看到。
3. pwd:查看当前所在的目录路径
用法:直接输pwd,回车就显示当前路径
新手很容易迷路,不知道自己在哪个目录下,输一下pwd,就能清楚看到自己的位置,比如/root(root用户目录)、/var/www/html(网站目录),避免误操作。
4. cd:切换目录(导航服务器)
用法:cd 目录路径(绝对路径或相对路径)
例子:cd /var/www/html(切换到网站根目录)、cd ../(切换到上一级目录)、cd ~(切换到当前用户的家目录)
这个命令每天要用几十次,切换到网站目录、配置文件目录,都靠它。新手记住两个快捷方式:../是上一级目录,~是家目录,不用输完整路径,节省时间。当年我刚学,不知道../,每次切换上一级目录,都输完整路径,特别麻烦。
5. whoami:查看当前登录的用户名
用法:直接输whoami,回车显示当前用户名
看似简单,但很实用。比如我有时候用root用户登录,有时候用普通用户webadmin登录,操作之前输一下whoami,确认当前用户,避免用root用户误操作(root权限太大,删错文件就麻烦了)。
二、文件/目录操作(6个,日常管理网站文件必备)
站长日常会经常上传、修改、删除网站文件,这6个命令是文件管理的核心,不用依赖FTP工具,命令行操作更高效、更安全。
6. mkdir:创建新目录
用法:mkdir 目录名(创建单个目录)、mkdir -p 目录1/目录2(创建多级目录,比如创建上传目录的子目录)
例子:mkdir -p /var/www/html/upload/images(创建图片上传目录)
注意:创建目录时,要确认当前用户有创建权限,比如用webadmin用户,就不能在/root目录下随便创建,会提示权限不足。当年我用普通用户创建目录,忘了权限问题,一直提示失败,后来才知道,要先给对应目录授权。
7. touch:创建新文件
用法:touch 文件名
例子:touch /var/www/html/test.php(创建一个测试PHP文件)、touch /var/log/myblog.log(创建自定义日志文件)
日常创建PHP文件、日志文件,都用这个命令,比用FTP上传空文件方便多了。比如我要测试某个PHP代码,就用touch创建一个空文件,再用编辑器修改。
8. cp:复制文件/目录
用法:cp 源文件 目标路径(复制文件)、cp -r 源目录 目标路径(复制目录,必须加-r,递归复制)
例子:cp /var/www/html/index.php /var/www/html/backup/(备份首页文件到backup目录)
这个命令是备份文件的常用命令,比如我要修改网站核心文件,先复制一份到备份目录,万一改崩了,能快速恢复。当年我没养成备份习惯,直接修改index.php,改崩了网站打不开,又没备份,折腾了好久才恢复,后来每次修改重要文件,都先用cp备份。
9. mv:移动/重命名文件/目录
用法:mv 源文件 目标路径(移动)、mv 旧文件名 新文件名(重命名)
例子:mv /var/www/html/test.php /var/www/html/upload/(移动测试文件到上传目录)、mv index_old.php index.php(重命名备份文件为首页文件)
重命名和移动用一个命令,很方便。比如我上传了新的首页文件index_new.php,测试没问题后,用mv重命名,替换旧的index.php,不用删除旧文件,万一新文件有问题,还能快速改回来。
10. rm:删除文件/目录(慎用!)
用法:rm 文件名(删除文件)、rm -r 目录名(删除目录)、rm -f 文件名(强制删除,不提示)
例子:rm test.txt(删除文本文件)、rm -r old_dir(删除旧目录)
重点提醒:这个命令一定要慎用!尤其是rm -rf /(强制删除根目录下所有文件),一旦输错,服务器就废了,所有数据都会丢失,没有挽回的余地。当年我见过一个新手站长,不小心输错命令,删了整个网站目录,哭着找我恢复,最后因为没有备份,只能重新搭建。
我的习惯:删除文件前,先用ls确认文件/目录是否正确,尽量不用rm -f,让系统提示一下,多一层保障。
11. cat:查看文件内容(简单快速)
用法:cat 文件名
例子:cat /var/www/html/conn.php(查看数据库连接文件,确认配置是否正确)、cat /etc/hosts(查看hosts配置)
适合查看小型文件,比如配置文件、简单的日志文件,快速查看内容,不用打开编辑器。如果文件太大(比如几M的日志),用cat会一次性显示所有内容,屏幕滚动太快,看不清,这时候就用下面的tail命令。
三、服务管理(3个,重启Web/数据库服务必备)
站长最常遇到的问题:网站打不开、数据库连接失败,这时候大概率需要重启服务,这3个命令,每天都可能用到。
12. systemctl:管理系统服务(CentOS7+、Ubuntu16+通用)
用法:systemctl start 服务名(启动)、systemctl stop 服务名(停止)、systemctl restart 服务名(重启)、systemctl status 服务名(查看状态)
常用服务名:nginx(Nginx服务)、httpd(Apache服务)、php-fpm(PHP服务)、mysqld(MySQL服务)、firewalld(防火墙服务)
例子:systemctl restart nginx(重启Nginx,网站打不开时先试这个)、systemctl status mysqld(查看MySQL是否正常运行)
这是最常用的服务管理命令,比之前的service命令更规范。比如网站修改了Nginx配置,必须重启Nginx才能生效,就用systemctl restart nginx。查看服务状态时,如果服务异常,会显示错误信息,能快速定位问题(比如MySQL启动失败,会提示是配置错误,还是端口被占用)。
13. service:管理系统服务(兼容旧系统)
用法:service 服务名 start/stop/restart/status
例子:service httpd restart(重启Apache服务)
这个命令是旧系统常用的,比如CentOS6,现在大部分服务器都是CentOS7+,用systemctl更多,但偶尔会遇到旧服务器,所以还是要了解一下。我的习惯是,先试systemctl,如果提示命令不存在,再用service。
14. netstat:查看端口占用情况(排查服务启动失败)
用法:netstat -tulnp | grep 端口号(查看某个端口是否被占用)
例子:netstat -tulnp | grep 80(查看80端口是否被Nginx/Apache占用)、netstat -tulnp | grep 3306(查看MySQL端口是否被占用)
服务启动失败,大概率是端口被占用。比如我重启Nginx时,提示启动失败,用这个命令查看80端口,发现是Apache也在运行,占用了80端口,关掉Apache,再重启Nginx就好了。如果提示netstat: command not found,CentOS输yum install net-tools -y,Ubuntu输apt install net-tools -y,安装一下就好。
四、日志查看与垃圾清理(3个,排查问题+释放空间)
网站出现异常(比如500错误、访问卡顿),需要查看日志找原因;服务器空间不足,需要清理垃圾文件,这3个命令,能帮你快速搞定。
15. tail:查看日志文件(实时查看,排查问题必备)
用法:tail -f 日志文件名(实时查看日志,按Ctrl+C退出)、tail -n 100 日志文件名(查看最后100行日志)
例子:tail -f /var/log/nginx/error.log(实时查看Nginx错误日志,网站报错时必看)、tail -n 100 /var/log/mysqld.log(查看MySQL最近100行日志)
这是我排查网站问题最常用的命令,比如用户反馈网站打不开,我就实时查看Nginx错误日志,能快速看到是配置错误、文件不存在,还是PHP代码报错。当年我刚学,不知道日志在哪里,网站报错只能瞎猜,后来学会用tail查看日志,排查问题的效率提升了10倍。
16. df:查看服务器磁盘空间(避免空间不足)
用法:df -h(以人类可读的格式,显示磁盘空间使用情况,单位是G、M)
例子:直接输df -h,就能看到每个分区的总空间、已用空间、剩余空间、使用率
服务器空间不足,网站会打不开、数据库会崩溃,所以我每天都会输一次df -h,查看空间使用情况。如果某个分区使用率超过80%,就及时清理垃圾文件。当年我没注意,日志文件攒了几十G,导致服务器空间占满,网站打不开,排查了半天才发现是日志文件太大。
17. rm -rf:清理垃圾文件(慎用,针对性清理)
用法:rm -rf 垃圾文件/目录(针对性清理,不要盲目删除)
例子:rm -rf /var/log/nginx/access.log.1(删除Nginx旧日志文件)、rm -rf /tmp/*(删除临时目录下的所有文件,临时文件可以放心删)
清理垃圾文件,重点清理旧日志文件、临时文件、无用的备份文件。注意:不要随便删除系统文件、核心配置文件,清理前一定要确认文件没用。我的习惯是,清理日志时,只删除后缀带数字的旧日志(比如access.log.1、access.log.2),保留最新的日志文件,方便后续排查问题。
五、安全与权限(3个,基础安全防护必备)
服务器安全很重要,这3个命令,能帮你做好基础的权限管控和安全防护,不用改复杂配置,新手也能操作。
18. chmod:修改文件/目录权限(重中之重)
用法:chmod 权限值 文件/目录名(权限值常用644、755,禁止用777)
例子:chmod 644 /var/www/html/index.php(设置PHP文件权限为644)、chmod 755 -R /var/www/html(递归设置网站目录权限为755,-R表示递归)
这是服务器安全的核心命令,很多站长因为权限设置错误,导致网站被黑、文件被篡改。记住两个核心权限:文件设为644(所有者读写字,其他只读),目录设为755(所有者读写执行,其他读执行),千万不要设为777(所有用户都有读写执行权限,相当于公开服务器文件,黑客能随意篡改)。
当年我为了图方便,给上传目录设了777权限,结果被黑客上传了木马文件,网站被挂马,折腾了好几天才清理干净,从那以后,再也没敢用过777权限。
19. chown:修改文件/目录所有者(避免权限混乱)
用法:chown 用户名:用户组 文件/目录名(-R表示递归修改目录下所有文件)
例子:chown -R webadmin:webadmin /var/www/html(把网站目录的所有者改为webadmin用户,避免用root用户)
很多新手站长,用root用户上传文件、修改文件,导致网站目录所有者是root,PHP程序用普通用户运行,没有权限读取文件,网站会出现500错误。这时候就用chown命令,把网站目录的所有者改为PHP运行用户(比如webadmin),权限就正常了。
20. firewall-cmd/ufw:防火墙基础操作(CentOS/Ubuntu分别对应)
CentOS(firewalld):firewall-cmd --list-ports(查看开放的端口)、firewall-cmd --add-port=80/tcp --permanent(开放80端口)、firewall-cmd --reload(重新加载防火墙配置)
Ubuntu(ufw):ufw status(查看防火墙状态)、ufw allow 80/tcp(开放80端口)、ufw deny 1234/tcp(拉黑1234端口)
防火墙是服务器的第一道防线,日常查看开放的端口、拉黑恶意端口,都用这个命令。比如我发现某个端口被恶意扫描,就用防火墙拉黑这个端口,避免服务器被攻击。注意:开放端口时,只开放需要的端口(比如80、443、SSH端口),其他端口全部关闭,减少攻击入口。
六、最后说两句:命令不用死记,实用为王
很多新手站长看到20个命令,就觉得头疼,怕记不住。其实我当年学的时候,也记不住,都是用到的时候查一下,用多了,自然就记住了。重点不是死记硬背每个命令的语法,而是理解每个命令的用途,知道遇到什么问题,该用哪个命令解决。
比如:网站打不开,先重启Web服务(systemctl restart nginx),不行就查看日志(tail -f 日志文件),再不行就查看端口是否被占用(netstat);文件权限不对,就用chmod修改;空间不足,就用df -h查看,再用rm清理垃圾。
这20个命令,能搞定站长90%的日常运维工作,剩下的10%,等你遇到具体问题,再慢慢补充学习就好。平时忘了用法,就翻出来看一眼,新手可以收藏这篇文章,用到的时候对照着操作,练几次就能上手。
另外,提醒新手一句:操作服务器时,一定要谨慎,尤其是rm删除命令、修改系统配置的命令,最好先备份,避免误操作导致服务器出问题。如果大家在使用这些命令时,遇到什么问题,比如命令提示不存在、操作后网站出问题,欢迎在留言区交流,我看到都会一一回复,帮大家避坑。
最后,希望每个站长都能熟练掌握这些基础命令,不用再依赖可视化面板,轻松搞定服务器日常运维,让自己的网站稳稳妥妥运行~
本文内容仅供参考,不构成任何专业建议。使用本文提供的信息时,请自行判断并承担相应风险。



