标签 linux 下的文章

以下是摘自宝塔释放内存的脚本:

if [ -f "/etc/init.d/php-fpm-74" ];then
    /etc/init.d/php-fpm-74 reload
fi

if [ -f "/etc/init.d/mysqld" ];then
    /etc/init.d/mysqld reload
fi

if [ -f "/etc/init.d/nginx" ];then
    /etc/init.d/nginx reload
fi

if [ -f "/etc/init.d/httpd" ];then
    /etc/init.d/httpd graceful
fi

if [ -f "/etc/init.d/pure-ftpd" ];then
    pkill -9 pure-ftpd
    sleep 0.3
    /etc/init.d/pure-ftpd start 2>/dev/null
fi

sync
sleep 2
sync
echo 3 > /proc/sys/vm/drop_caches

sync 命令:sync 指令会将存于 buffer 中的资料强制写入硬盘中
Linux 系统中欲写入硬盘的资料有的时候为了效率起见,会写到 filesystem buffer 中,这个 buffer 是一块记忆体空间,如果欲写入硬盘的资料存于此 buffer 中,而系统又突然断电的话,那么资料就会流失了。

/proc/sys/vm/drop_caches的值,默认为0
来自官方的解释:

/proc/sys/vm/drop_caches (since Linux 2.6.16)
Writing to this file causes the kernel to drop clean caches,
dentries and inodes from memory, causing that memory to become
free.

To free pagecache, use echo 1 > /proc/sys/vm/drop_caches; to
free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;
to free pagecache, dentries and inodes, use echo 3 >
/proc/sys/vm/drop_caches.

Because this is a non-destructive operation and dirty objects
are not freeable, the user should run sync first.

写入此文件会导致内核丢弃内存中的 dentry 和 inode缓存的数据,导致内存被释放。
释放页面缓存,请使用

echo 1 > /proc/sys/vm/drop_caches

释放 dentries 和 inode,使用

echo 2 > /proc/sys/vm/drop_caches

释放 pagecache、dentries 和 inode,请使用

echo 3 > /proc/sys/vm/drop_caches

使用前,请执行sync命令,将 buffer 中的数据写入磁盘

对于系统的所有用户,通过/etc/wgetrc或 仅对于具有~/.wgetrc文件的用户:

use_proxy=yes
http_proxy=127.0.0.1:8080
https_proxy=127.0.0.1:8080

或通过-e放置在 URL 之后的选项:

wget ... -e use_proxy=yes -e http_proxy=127.0.0.1:8080 ...

也可以这样:
在命令行中输入:

$ export http_proxy=http://proxy_host:proxy_port

对于经过身份验证的代理,

$ export http_proxy=http://username:password@proxy_host:proxy_port

然后运行

$ wget fileurl

对于 https,只需使用 https_proxy 而不是 http_proxy。你也可以把这些行放在你的 ~/.bashrc 文件中,这样你就不需要每次都执行它。

本文只是工作中的一些经验记录,如果你也有相关的经验补充,可以留言,稍候将更新到文章里,谢谢

查看目录的大小快捷命令(别名)

alias dirsize='du -h --max-depth=1'
#执行以上命令,然后下面命令就可以使用 dirsize 快捷查看当前目录大小了,也可以 加目录路径
#下次重启自动添加命令别名可以 把这个命令可以添加到~/.bashrc 里面

CENTOS系统:

journal 垃圾日志清理
CentOS系统中有两个日志服务,分别是传统的 rsyslog 和 systemd-journal
systemd-journald是一个改进型日志管理服务,可以收集来自内核、系统早期启动阶段的日志、系统守护进程在启动和运行中的标准输出和错误信息,还有syslog的日志。

#查看占用了多大空间
journalctl --disk-usage
#删除日志文件,一般一个文件8M左右,使用以下命令清理这些日志文件
journalctl --vacuum-size=10M

#journalctl 命令自动维护文件大小
#只保留近一周的日志
journalctl --vacuum-time=1w
#只保留500MB的日志
journalctl --vacuum-size=100M

以上只是暂时清理日志文件,可在/etc/systemd/journald.conf 下永久更改设置
配置项文档:https://www.freedesktop.org/software/systemd/man/latest/journald.conf.html

  • SystemMaxUse=并控制磁盘空间量 日记最多可能用完
  • SystemMaxFileSize=并控制方式 大型单个日志文件最多可能会增长
  • SystemMaxFiles=并控制数量 最多保留单个日志文件
  • MaxRetentionSec=存储日记帐分录的最长时间
  • MaxFileSec=在单个 日志文件,然后再旋转到下一个文件

    SystemMaxUse=100M
    SystemMaxFileSize=10M

查看应用日志目录

cd /var/log
dirsize 

bt宝塔监控数据库文件清理
www/server/panel/data/system.db
这个是面板的监控信息,删除的话以前的数据就不在了,如果您觉得没必要的话可以删除,删除后命令行执行bt 1命令重启下面板。
或者在控制面板,左侧菜单【监控】页面,点击【清理数据】,没必要的话关闭监控功能或者定期清理数据

在使用yum install的时候,偶尔会碰见这样的错误:Couldn’t open file /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

这是因为在你的 /etc/yum.repos.d 目录下有关于yum repository的配置文件中列有如下的GPG key:

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

这个配置告诉YUM,这个repository的GPG key存在于磁盘上。而当YUM在路径 /etc/pki/rpm-gpg 下找不到这个GPG key的时候,就会报如上的错误了。

解决方案:

cd /etc/pki/rpm-gpg
wget https://archive.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7

然后再次运行 yum 命令就可以成功了。当然,也有些包是需要先安装epel之后才能装上的。安装epel的方法是: yum install -y epel-release

RPM 是 Redhat 的軟件管理系統, 全寫是 Redhat Package Manager, Redhat, Fedora 及 CentOS 等可以透過 RPM 簡單安裝, 移除及更新套件。以下是 RPM 操作的一些常見用法:

查詢套件
顯示所有已安裝套件:
rpm -qa

如果查詢包括特定字串套件, 例如查詢已安裝關於 php 的套件, 可以這樣:
rpm -qa | grep php

查看特定套件的安裝資訊, 例如 php-mysql:
rpm -qi php-mysql

查看套件所安裝的檔案:
rpm -ql php-mysql

安裝套件

安裝 package.rpm, 並在顯示安裝的資訊及安裝進度。
rpm -ivh package.rpm

在安裝及升級時, rpm 預設會檢查相依性, 雖然可以用 –nodeps (忽略相依性) 及 –force (強制安裝) 繞過, 但不建議這樣做, 因為存在相依性問題, 套件安裝後不肯定可以正常運作。

更新套件

更新 package.rpm, 如系統沒有安裝此套件, 直接安裝:
rpm -Uvh package.rpm

更新 package.rpm, 如系統沒有安裝此套件, 不會安裝:
rpm -Fuh package.rpm

如果不透過 YUM 升級 kernel, 而是自行下載 rpm 檔升級, 請使用 rpm -ivh 安裝, 不要使用以上升級選項, 因為使用升級選項, rpm 安裝時會移除舊 kernel, 萬一新 kernel 不能開機要麻煩了。

移除套件

移除 package 套件:
rpm -e package