1. 查看系统基本信息
#(Linux查看版本当前操作系统内核信息)
[root@bi ~]# uname -a
Linux bi.life.cib 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
# (Linux查看当前操作系统版本信息)
[root@bi ~]# cat /proc/version
Linux version 3.10.0-1062.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Wed Aug 7 18:08:02 UTC 2019
# (Linux查看版本当前操作系统发行版信息)
[root@bi ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
2. 查看linux CPU信息
# 查看物理CPU个数
[root@mysql ~]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
4
# 查看每个CPU的core数(即核数)
[root@mysql ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores : 4
# 查看逻辑CPU的个数
[root@mysql ~]# cat /proc/cpuinfo| grep "processor"| wc -l
16
# 查看CPU的型号
[root@mysql ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
16 Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
3. 查看磁盘空间
du -h * | sort -n
du -h * | sort -n|head
du -h * | sort -rh // 查看当前目录下所有文件的大小,并按从大到小的顺序排序
du -h * | sort -rh | head -20 // 查看当前目录下前20个最大的文件
4. 统计代码文件数和行数
# 统计 ktr文件数
find . -name "*.ktr" |wc -l
# 统计ktr文件的代码行行数
find . -name "*.ktr" | xargs cat | grep -v ^$ | wc -l
5. 磁盘满了怎么办
先确认是哪里占用空间比较大,针对性的解决。使用 3 中的命令,发现哪里的文件占用比较多。
5.1 docker 日志占用空间比较大解决:
首先应该是 docker-compose.yml文件中未限制日志大小,
- 治标的解决方案:
使用以下脚本清理日志
#!/bin/sh
echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done
echo "======== end clean docker containers logs ========"
- 治本的解决方案:
在docker-compose.yml中限制日志的大小
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "1"
最终的结果
version: '3'
# 本启动脚本用于开发环境启动。
services:
doc_parser:
build: .
image: image:v2
container_name: doc_parser
restart: always
environment:
- TZ=Asia/Shanghai
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "1"
volumes:
# - ./src:/opt/apps/src
- ./error.log:/opt/apps/error.log
- ./info.log:/opt/apps/info.log
# 在生产环境要禁用 断言,所以要使用 python -O这样的启动方式
# command: python -O /opt/apps/src/main.py
command: python -O -m uvicorn --host 0.0.0.0 --port 8800 --workers 4 src.apps.main:app --access-log --use-colors
ports:
- 8800:8800
kitty:
build:
context: ./kitty # 在这个目录中查找 Dockerfile,用于 build 镜像
dockerfile: Dockerfile # 在context中的 Dockerfile 文件名, 若不指定此行,则默认为 Dockerfile
image: image:v1
container_name: kitty
# restart: always
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "1"
environment:
- TZ=Asia/Shanghai
- DEBUG=true
volumes:
- ./kitty/config.yml:/opt/apps/config.yml
- ./kitty/logs:/opt/apps/logs
# 在生产环境要禁用 断言,所以要使用 python -O 这样的启动方式
# command: python read_env_to_config.py && ./kitty
command: ./kitty
ports:
- 9111:9111
redis:
image: redis:7.0
container_name: kitty_redis
# privileged: true
# restart: always
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "1"
ports:
- 6379:6379
environment:
- TZ=Asia/Shanghai
volumes:
#- ./redis.log:/var/log/redis/redis.log:rw
- ./redis/redis.conf:/usr/local/etc/redis/redis.conf
- ./redis/data:/data
command: redis-server /usr/local/etc/redis/redis.conf