
目录怎么切换、文件怎么删除、日志怎么看、进程怎么查、服务怎么重启,很多操作看起来都需要记不同的指令。
其实,日常使用中真正反复出现的命令并没有那么多。可以先按照文件、日志、权限、进程和服务几个场景来理解,比单独背命令更容易记住。
ls用于查看当前目录或者指定目录中的文件。
lsls -lls -als -lh
-l可以显示权限、所有者、大小和修改时间等信息;-a会显示隐藏文件;-h通常和-l一起使用,让文件大小以KB、MB、GB等形式展示。
cd /usr/localcd ~cd ..cd -
cd ~回到当前用户的家目录,cd ..返回上一级,cd -则可以切换到上一次所在目录。
pwd当目录层级比较深时,可以用它确认自己当前位于哪个位置。
mkdir testdirmkdir -p a/b/c
-p可以一次创建多级目录。
rm test.txtrm -r testdirrm -rf testdir
rm -rf不会再次确认,并且会递归删除目录内容。
在服务器或者生产环境中使用以前,最好先通过pwd、ls等命令确认路径,避免误删。
cp test.txt /tmp/cp -r dir1 dir2
复制目录时通常需要加入-r参数。
mv test.txt /tmp/mv oldname.txt new.txt
mv既可以移动文件,也经常直接用于修改文件名。
touch demo.txt如果文件不存在,会创建一个空文件;如果文件已经存在,则会更新相关时间戳。
cat /etc/hostscat比较适合查看体积不大的文本文件。
文件内容很多时,一次全部输出容易刷屏,这时候通常更适合使用less。
less /var/log/syslogmore /var/log/syslog
less支持上下翻页和搜索,用来看日志或者配置文件比较方便。
在less中按q可以退出。
head -n 10 test.logtail -n 20 test.logtail -f test.log
head查看文件开头,tail查看结尾。
tail -f会持续显示文件新增内容,因此在观察程序运行日志时比较常见。
grep ”error” nginx.loggrep -i ”warn” test.txtgrep -v ”null” test.txt
-i忽略大小写,-v表示排除匹配内容。
如果需要递归搜索目录中的文件,还可以使用:
grep -r ”127.0.0.1” /etc/实际排查日志时,grep经常会和tail、ps等命令组合使用。
chmod 755 run.shchmod +x run.sh
chmod +x可以为脚本增加执行权限。
755这类数字权限则需要理解读、写、执行权限分别对应什么含义,而不是只记一个固定数字。
chown root:root test.txtchown -R nginx:nginx /html
chown用于修改文件或者目录所属的用户和用户组。
-R会递归处理整个目录,使用时需要确认影响范围。
ps auxps-ef | grep nginx
ps主要用于查看当前进程信息。
实际排查时,经常会结合grep寻找某个服务对应的PID。
需要注意的是:
ps -ef | grep nginx有时也会把grep nginx本身显示出来,因此还可以使用pgrep等方式辅助查询。
toptop可以查看CPU、内存、系统负载以及各个进程的资源占用情况。
服务器出现卡顿或者资源异常时,可以先用它判断是CPU、内存还是某个具体进程占用较高。
按q退出。
tar -zcvf test.tar.gz testdir/tar -zxvf test.tar.gz -C /tmp
常见参数:
z 使用gzipc 创建归档x 解包v 显示处理过程f 指定归档文件名
严格来说,tar本身主要负责打包,配合gzip等工具以后才形成常见的.tar.gz压缩包。
在使用systemd的Linux发行版中,可以通过systemctl管理服务。
systemctl start nginxsystemctl stop nginxsystemctl restart nginxsystemctl enable nginxsystemctl status nginx
分别对应启动、停止、重启、设置开机启动以及查看服务状态。
排查服务无法启动时,除了看status,还可以继续结合journalctl查看日志。
虽然不包含在前面的18个命令中,但日常使用Linux时,df和du也经常会遇到。
df -h它更适合判断某个磁盘分区是不是已经接近满载。
du -sh *可以快速查看当前目录下各文件和文件夹的大致占用空间。
如果还需要查看隐藏目录,则要另外处理,因为普通的*不会匹配以.开头的隐藏文件。
实时观察日志,并筛选错误内容:
tail -f nginx.log | grep -i error递归搜索配置文件中的指定内容:
grep -r ”127.0.0.1” /etc/Linux命令真正实用的地方,往往不在于单独记住某一条,而是能够根据问题把几条命令组合起来。
例如,程序访问异常时,可以先看systemctl确认服务状态,再通过ps和top查看进程,随后用tail和grep检查日志。
对于刚接触Linux的人来说,不需要一开始就背几百条命令。
先把目录文件操作、文本查看、权限管理、进程监控和服务管理这些基础内容用熟,已经能够处理不少日常问题。
学习时也可以少背参数,多实际操作。
每遇到一个问题,就试着想清楚:我要找文件、看内容、查进程,还是看服务状态?
当这些使用场景逐渐熟悉以后,再记具体命令和参数,通常会比单纯背命令表更容易掌握。