问题描述
拿到一台陌生的arm linux64设备,想要运行自己的程序,用着用着就报错,空间不足,咋办呢
为什么呢
先用df指令看一下剩余空间
df -h
我每秒摁一次df指令,发现它这剩余空间跟倒计时似的越来越少
admin@admin:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mmcblk0p1 14G 9.1G 4.0G 70% /
none 3.5G 0 3.5G 0% /dev
tmpfs 3.8G 52K 3.8G 1% /dev/shm
tmpfs 3.8G 142M 3.7G 4% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
tmpfs 778M 0 778M 0% /run/user/1000
admin@admin:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mmcblk0p1 14G 9.2G 3.9G 71% /
none 3.5G 0 3.5G 0% /dev
tmpfs 3.8G 52K 3.8G 1% /dev/shm
tmpfs 3.8G 142M 3.7G 4% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
tmpfs 778M 0 778M 0% /run/user/1000
admin@admin:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mmcblk0p1 14G 9.3G 3.8G 72% /
none 3.5G 0 3.5G 0% /dev
tmpfs 3.8G 52K 3.8G 1% /dev/shm
tmpfs 3.8G 142M 3.7G 4% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
tmpfs 778M 0 778M 0% /run/user/1000
到后面,直接硬盘都剩余0了,然后过一阵子又变成空余5G,又慢慢减少。
我还以为我自己的代码在写数据呢,写满了又循环删除。
用ps指令看一下自己的代码,给他kill掉再看看
可以看到,我的代码mycode的pid是14173
admin@admin:~$ ps aux | grep mycode
root 14173 44.7 15.9 15641860 1270708 ? Sl 14:35 0:11 ./mycode
admin 14448 0.0 0.0 10292 3360 pts/0 R+ 14:35 0:00 ps aux
admin 14449 0.0 0.0 7420 648 pts/0 S+ 14:35 0:00 grep --color=auto mycode
给他强制kill掉
admin@admin:~$ sudo kill -9 14173
再df -h看看
还是空间倒计时,看来不是我自己的问题。好,赖别人,那就好说了。
我自己的代码可能有存储视频,什么视频能嫩大,一秒跑走一百多兆,YUV原始都没那么大。
看起来就是在搞什么磁盘测试,还自启动了
装个工具看看先。
admin@admin:~$ sudo apt-get install sysstat
运行
admin@admin:~$ iostat -d -x 1
Linux 4.9.253-tegra (admin) 2023年12月21日 _aarch64_ (6 CPU)
Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
loop0 0.03 0.01 0.23 0.00 0.00 0.00 0.00 0.00 0.05 0.00 0.00 7.89 0.51 0.04 0.00
mtdblock0 0.00 0.00 0.01 0.00 0.00 0.00 0.00 0.00 2.48 253.00 0.00 5.14 2.00 93.58 0.03
mmcblk0 32.88 196.02 11568.18 70197.46 0.21 11.85 0.63 5.70 3.64 8.90 1.86 351.86 358.12 4.14 94.68
mmcblk0boot1 0.00 0.00 0.01 0.00 0.00 0.00 0.00 0.00 4.74 0.00 0.00 4.00 0.00 4.74 0.00
mmcblk0boot0 0.02 0.00 0.08 0.00 0.00 0.00 0.00 0.00 28.40 0.00 0.00 4.00 0.00 28.38 0.05
zram0 0.03 0.00 0.12 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 4.00 4.00 0.00 0.00
zram1 0.03 0.00 0.12 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 4.00 4.00 0.00 0.00
zram2 0.03 0.00 0.12 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 4.00 4.00 0.00 0.00
zram3 0.03 0.00 0.12 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 4.00 4.00 0.00 0.00
zram4 0.03 0.00 0.12 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 4.00 4.00 0.00 0.00
zram5 0.03 0.00 0.12 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 4.00 4.00 0.00 0.00
Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
loop0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
mtdblock0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
mmcblk0 0.00 155.00 0.00 76836.00 0.00 4.00 0.00 2.52 0.00 9.96 1.55 0.00 495.72 6.35 98.40
mmcblk0boot1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
mmcblk0boot0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
zram0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
zram1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
zram2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
zram3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
zram4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
zram5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
loop0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
mtdblock0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
mmcblk0 0.00 154.00 0.00 78848.00 0.00 0.00 0.00 0.00 0.00 9.58 1.48 0.00 512.00 6.36 98.00
mmcblk0boot1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
mmcblk0boot0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
zram0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
zram1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
zram2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
zram3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
zram4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
zram5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
嘿哟,在这里狂写,write kb/s都跑到7W多了。
好,再装个工具看看是谁干的
装!
admin@admin:~$ sudo apt-get install iotop
运行!
admin@admin:~$ sudo iotop
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
11652 ?sys root 0.00 B/s 76.79 M/s 0.00 % 97.49 % dd bs=1M count=110k if=/dev/zero of=/mnt/SSD/test.log oflag=direct,nonblock
2311 ?sys root 0.00 B/s 92.52 K/s 0.00 % 4.27 % [jbd2/mmcblk0p1-]
11879 ?sys root 0.00 B/s 0.00 B/s 0.00 % 1.95 % ./mycode
4917 ?sys syslog 0.00 B/s 3.70 K/s 0.00 % 0.00 % rsyslogd -n [rs:main Q:Reg]
1 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init 2
2 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
5 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0H]
7 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_preempt]
8 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_sched]
9 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_bh]
10 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]
11 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [lru-add-drain]
12 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0]
13 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [cpuhp/0]
14 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [cpuhp/1]
15 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/1]
16 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/1]
17 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/1]
19 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/1:0H]
20 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [cpuhp/2]
21 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/2]
22 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/2]
23 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/2]
25 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/2:0H]
26 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [cpuhp/3]
27 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/3]
28 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/3]
29 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/3]
31 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/3:0H]
32 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [cpuhp/4]
33 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/4]
34 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/4]
35 ?sys root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/4]Connection to 172.16.133.69 closed by remote host.
好,接近真相了。看到有个进程在这里狂跑我的磁盘,还叫ssdtest是吧。
ps aux看一下,找到了。
root 9327 9326 2 14:19 ? 00:00:01 dd bs=1M count=110k if=/dev/zero of=/mnt/SSD/test.log oflag=direct,nonblock
那怎么把它搞掉呢?这东西是自启动的,kill掉了还会再自己又启动
ps aux看一下/etc/init/下的脚本,这个路径下的脚本开机都会自启。
root 6863 1 0 11:32 ? 00:00:00 bash /home/admin/remote/start.sh
root 6864 1 0 11:32 ? 00:00:06 bash /home/admin/remote/while_forced_start.sh
root 6869 1 0 11:32 ? 00:00:00 bash /etc/init/disktest.sh
发现了啊,这什么,disktest啊,看看
admin@admin:~$ cat /etc/init/disktest.sh
#!/bin/bash
cd /home/admin/test
bash disk_ReadWriteTest.sh
好,就是这东西一直在跑我的磁盘!
admin@admin:~$ cat ~/test/disk_ReadWriteTest.sh
#!/bin/bash
LOG1=disk_test_$(date +"%H%M%S").log
LOG=disk_test.log
#按时间备份测试LOG
mv $LOG $LOG1
...
给他注释掉。重启
再df -h看看,哎,好了,不倒计时了。舒服