Linux文本界面中,指令cp,cd,mv,rm,df,vi都是些什么意思?还有哪些指令?

Linux文本界面中,指令cp,cd,mv,rm,df,vi都是些什么意思?还有哪些指令?,第1张

cp:是复制命令,用来复杂文件的,它可以见文件或者目录复杂到其他目录中。

cd"命令是用来改变当前的工作目录的",cd /是回到整个系统的根目录,而cd /home是回到home目录。

mv:是用来移动文件的。像mv /etc /代表的是把etc文件夹移动奥根目录中(/“根目录”)

rm:是一个删除命令,用例删除文件和目录。参数有-i 会提示你是否删除。-f会不提示直接删除,-r会删除整个文件夹或者目录以及属下的所有文件。

另外还有个rmdir的命令是用来删除目录的。

df:是检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

vi是一个编辑器,可以用来进行编写程序,和一些服务器的配置信息等等。使用vi会直接创立一个文件到你指定的路径中,在进入vi后想退出使用按insert,然后:wq!保存退出。

背景
最近一直收到产品环境其中一台server的磁盘占用超过90%的警告,之前为了解决这个问题编写了一个压缩和删除历史log的脚本,正常情况来说应该不会再报这个警告,因为脚本是每天都在跑,所以每天增长的log的大小应该不至于占用很多的磁盘空间,但是实际情况却是每隔两三天就会收到一次警告,然后不得不手动的清理一些还没有被脚本压缩以及删除的log,从而释放一些空间,但是这不是长久之计,所以就详细的去查了这个问题。
解决
再次受到这个警告之后,我通过SSH连到了这台机器,然后通过df -h的命令查看了一下各个挂载磁盘的使用率如下图:

从图中可以看到可以看到 /dev/xvdb1这个磁盘被挂载在/alidata1/这个目录下,并且已经使用了34G(90%)
然后就要查看/alidata1下到底是哪个文件或者文件夹占用了这么多的磁盘空间,我们通过du -h --max-depth=1来查看,如下图:

我们可以看到 /alidata1下的所有文件及文件夹占用的空间是22G,和我们通过df -h查看出来的磁盘占用34G相差12G,这是为什么?这12G的空间到底是被谁占用了?
于是去网上查了一些资料,原来是因为在Linux上删除一个进程正在写入的文件的时候,虽然已经被我们删除了,但是只要进程还在,那个文件就不会真正被删除,只是被临时存放到系统的某个地方,有点类似于Windows的回收站。通过lsof可以查看没有被真正删除的文件。如下图

从图中我们可以看出有四个占用空间比较大的没有被真正删除的文件,这四个文件分别是809和808的java进程console的输出log。之前被手动删除,但是由于没有重启进程导致文件一直还在,占用了大量空间。在通过重启808和809的java进程之后,磁盘的警告恢复了,通过df和du查看的结果如下:
df -h

从新的结果中可以看到df查看的磁盘占用空间和du查看的文件中下文件的占用空间一致了。
总结
所以如果以后碰到一些不合理的一些磁盘占用情况,我们可以通过df和du来查看磁盘占用空间和实际的文件占用空间是否有差异,如果有差异通过lsof命令查看有哪些没有被真正删除的文件,确认是被哪个进程占用,通过重启进程的方式来释放这些空间。

实际情况:

测试环境与生产环境centos7服务器同时出现了该情况,即通过df -h与du -sh /统计出的结果相差很大。

测试环境:

生产环境:
可以看到实际使用的磁盘量与df统计值都有很大的差异。直接导致的结果就是磁盘使用量会在未来的某一天达到100%,而实际已用的磁盘却很少,最终磁盘无法使用,必须重做系统才行······想想都可怕。

按照网上的绝大部分说法是,在日志文件正在被写入时,执行了删除文件 *** 作,导致文件一直被占用,无法释放。可以通过lsof |grep deleted命令来查看是哪个进程占用的,然后kill掉该进程,文件所占用的资源就会被释放,磁盘空间也自然释放了。

如果像网上说的这么简单就好了,网上的都是人云亦云。我停掉了所有的应用,重启了服务器,通过lsof |grep deleted查看是没有任何内容的情况下,磁盘情况就是上面的那样。根本不像网上说的,还有应用占用着,释放了就可以了。啥也没有,就是统计结果不一样,咋整?都不知道从哪入手解决这个问题。

于是我开始寻求帮助,问牛逼的同事,问网课的老师,问技术群,结果都是无功而返。其实这个问题我已经遇到过几次了,一直都想排查出结果,但是每次都是花了很多时间,铩羽而归。这不,昨天又花了1天的时间,也还是没有解决这个问题,内心非常沮丧。
但是,一切都没有那么糟糕,昨晚我回家正是沮丧之时,我的一位开发同事联系我说原因找到了,是因为反复的删除文件导致的磁盘产生碎片,占用了磁盘空间所致,通过清理磁盘碎片的方式,就可以解决这个问题。听到这个好相信,我都兴奋的不行了。于是按他所说的,我上网找到了关于xfs文件系统碎片整理的文章,具体如下:

参考文章:

>题主是否想询问“dnf韩服端游玩不了了么”可以玩。DNF(地下城与勇士)是一款韩国的游戏,截至2023年3月28日,该游戏仍在正常运营中,如果您在使用韩国服务器进行游戏时遇到了玩不了的问题,是由于网络问题造成的,游戏需要稳定的网络环境才能正常运行,您可以尝试检查自己的网络设置,或者使用其他网络环境进行游戏。

阿里云服务器的云盘扩容后运行df -h命令后仍然显示原来的容量,可采用如下方法解决:(在运行命令之前,防止数据丢失,尽量先做镜像备份)

若运行命令后报以下错误: unexpected output in sfdisk --version [sfdisk,来自 util-linux 2232] ,则运行下面的命令,切换ECS实例的字符编码类型,后重新运行 growpart 命令。

不是看不到盘符,是盘符太长了,在上边那个就是。
你做的VG
交换分区是必须的,因为有些软件,安装的时候必须使用一下交换分区。
所以尽量分出一个交换分区,并且最好不小于256M 还是128M来着。我忘了。

有多种方式查看linux服务器上有几块磁盘
方法1:
[root@localhost xly]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 178G 0 part /
└─sda3 8:3 0 2G 0 part [SWAP]
sdb 8:16 0 20G 0 disk /opt
可知系统有sda和sdb两块磁盘
方法2:
[root@localhost xly]# fdisk -l
Disk /dev/sda: 429 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00041bdd
Device Boot Start End Blocks Id System
/dev/sda1 1 39 307200 83 Linux
Partition 1 does not end on cylinder boundary
/dev/sda2 39 2358 18631680 83 Linux
/dev/sda3 2358 2611 2031616 82 Linux swap / Solaris
Disk /dev/sdb: 215 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10289794.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-07
下一篇 2023-05-07

发表评论

登录后才能评论

评论列表(0条)

保存