2022-12-17 23:05:21 +08:00
|
|
|
|
#!/bin/bash
|
2022-12-18 11:56:08 +08:00
|
|
|
|
#by spiritlhl
|
|
|
|
|
#from https://github.com/spiritLHLS/one-click-installation-script
|
|
|
|
|
#version: 2022.12.18
|
|
|
|
|
|
|
|
|
|
red(){ echo -e "\033[31m\033[01m$1$2\033[0m"; }
|
|
|
|
|
green(){ echo -e "\033[32m\033[01m$1$2\033[0m"; }
|
|
|
|
|
yellow(){ echo -e "\033[33m\033[01m$1$2\033[0m"; }
|
|
|
|
|
reading(){ read -rp "$(green "$1")" "$2"; }
|
2022-12-17 23:05:21 +08:00
|
|
|
|
|
2022-12-17 23:10:25 +08:00
|
|
|
|
head() {
|
|
|
|
|
# 支持系统:Ubuntu 12+,Debian 6+
|
2022-12-18 09:01:52 +08:00
|
|
|
|
ver="2022.12.18"
|
2022-12-17 23:10:25 +08:00
|
|
|
|
changeLog="一键修改journal日志记录大小,释放系统盘空间"
|
|
|
|
|
clear
|
|
|
|
|
echo "#######################################################################"
|
2022-12-17 23:13:12 +08:00
|
|
|
|
echo "# ${YELLOW}一键修改journal大小脚本${PLAIN} #"
|
2022-12-17 23:10:25 +08:00
|
|
|
|
echo "# 版本:$ver #"
|
2022-12-17 23:13:12 +08:00
|
|
|
|
echo "# 更新日志:$changeLog #"
|
2022-12-17 23:10:25 +08:00
|
|
|
|
echo "# ${GREEN}作者${PLAIN}: spiritlhl #"
|
|
|
|
|
echo "# ${GREEN}作仓库${PLAIN}: https://github.com/spiritLHLS/one-click-installation-script #"
|
|
|
|
|
echo "#######################################################################"
|
2022-12-18 11:43:51 +08:00
|
|
|
|
echo "支持系统:Ubuntu 18+,Debian 8+,centos 7+,Fedora,Almalinux 8.5+"
|
2022-12-18 11:39:23 +08:00
|
|
|
|
echo "1.自定义修改大小,单位为MB,一般500或者1000即可,有的系统日志默认给了5000甚至更多,不是做站啥的没必要"
|
2022-12-18 12:04:26 +08:00
|
|
|
|
echo "请注意,修改journal目录大小会影响系统日志的记录,因此,在修改journal目录大小之前如果需要之前的日志,建议先备份系统日志到本地"
|
2022-12-18 12:02:49 +08:00
|
|
|
|
echo "2.自定义修改设置系统日志保留日期时长,超过日期时长的日志将被清除"
|
|
|
|
|
echo "3.默认修改日志只记录warning等级(无法自定义)"
|
2022-12-18 11:39:23 +08:00
|
|
|
|
echo "4.以后日志的产生将受到日志文件大小,日志保留时间,日志保留等级的限制"
|
2022-12-17 23:10:25 +08:00
|
|
|
|
# Display prompt asking whether to proceed with changing
|
2022-12-18 11:33:08 +08:00
|
|
|
|
reading "Do you want to proceed with changing? [y/n] " confirm
|
2022-12-17 23:10:25 +08:00
|
|
|
|
echo ""
|
2022-12-17 23:05:21 +08:00
|
|
|
|
|
2022-12-17 23:10:25 +08:00
|
|
|
|
# Check user's input and exit if they do not want to proceed
|
|
|
|
|
if [ "$confirm" != "y" ]; then
|
|
|
|
|
exit 0
|
|
|
|
|
fi
|
2022-12-18 11:43:51 +08:00
|
|
|
|
reading "Enter the desired day of the journal retention days (eg: 7): " retention_days
|
2022-12-18 11:29:55 +08:00
|
|
|
|
reading "Enter the desired size of the journal directory in MB (eg: 500): " size
|
2022-12-17 23:10:25 +08:00
|
|
|
|
}
|
2022-12-17 23:05:21 +08:00
|
|
|
|
|
2022-12-17 23:10:25 +08:00
|
|
|
|
main() {
|
2022-12-18 11:04:03 +08:00
|
|
|
|
# Set default value for size
|
|
|
|
|
size="$size"M
|
|
|
|
|
|
2022-12-18 17:29:48 +08:00
|
|
|
|
temp_file=$(mktemp)
|
|
|
|
|
backup_file="/etc/systemd/journald.conf-$(date +%Y%m%d%H%M%S).bak"
|
|
|
|
|
sudo cp /etc/systemd/journald.conf "$backup_file"
|
|
|
|
|
yellow "Backed up /etc/systemd/journald.conf to $backup_file"
|
|
|
|
|
awk -v size="$size" '{ if ($1 == "SystemMaxUse=") { print "SystemMaxUse=" size } else { print $0 } }' /etc/systemd/journald.conf > "$temp_file"
|
|
|
|
|
sudo cp "$temp_file" /etc/systemd/journald.conf
|
|
|
|
|
rm "$temp_file"
|
2022-12-17 23:52:30 +08:00
|
|
|
|
|
2022-12-18 11:04:03 +08:00
|
|
|
|
# Restart journald service
|
|
|
|
|
systemctl restart systemd-journald
|
2022-12-18 17:29:48 +08:00
|
|
|
|
|
2022-12-18 13:01:21 +08:00
|
|
|
|
green "change /etc/systemd/journald.conf successfully"
|
2022-12-17 23:10:25 +08:00
|
|
|
|
}
|
|
|
|
|
|
2022-12-18 11:29:55 +08:00
|
|
|
|
|
2022-12-18 17:29:48 +08:00
|
|
|
|
|
2022-12-18 11:04:03 +08:00
|
|
|
|
level() {
|
|
|
|
|
# Set default values for variables
|
|
|
|
|
log_level=warning
|
2022-12-18 11:29:55 +08:00
|
|
|
|
journald_log_dir="/var/log/journal"
|
2022-12-18 11:09:27 +08:00
|
|
|
|
|
|
|
|
|
# Check if log directory exists
|
2022-12-18 11:29:55 +08:00
|
|
|
|
if [ ! -d "$journald_log_dir" ]; then
|
2022-12-18 13:01:21 +08:00
|
|
|
|
yellow "Log directory not found, so no delete" >&2
|
2022-12-18 11:47:02 +08:00
|
|
|
|
else
|
|
|
|
|
# Set log retention period
|
|
|
|
|
find "$journald_log_dir" -mtime +$retention_days -exec rm {} \;
|
2022-12-18 13:01:21 +08:00
|
|
|
|
green "change $journald_log_dir successfully"
|
2022-12-18 11:09:27 +08:00
|
|
|
|
fi
|
2022-12-18 11:47:02 +08:00
|
|
|
|
|
|
|
|
|
|
2022-12-18 11:09:27 +08:00
|
|
|
|
# Check if config file exists
|
|
|
|
|
if [ ! -f /etc/rsyslog.conf ]; then
|
2022-12-18 11:43:51 +08:00
|
|
|
|
red "Config file (/etc/rsyslog.conf) not found, so not modify" >&2
|
2022-12-18 11:47:02 +08:00
|
|
|
|
else
|
|
|
|
|
# Set log level
|
2022-12-18 17:29:48 +08:00
|
|
|
|
temp_file=$(mktemp)
|
|
|
|
|
backup_file="/etc/rsyslog.conf-$(date +%Y%m%d%H%M%S).bak"
|
|
|
|
|
sudo cp /etc/rsyslog.conf "$backup_file"
|
|
|
|
|
yellow "Backed up /etc/rsyslog.conf to $backup_file"
|
|
|
|
|
if grep -q "loglevel" /etc/rsyslog.conf; then
|
|
|
|
|
awk -v log_level="$log_level" '{ if ($1 == "loglevel") { print "loglevel = " log_level } else { print $0 } }' /etc/rsyslog.conf > "$temp_file"
|
|
|
|
|
else
|
|
|
|
|
cat /etc/rsyslog.conf > "$temp_file"
|
|
|
|
|
echo "loglevel = $log_level" >> "$temp_file"
|
2022-12-18 11:47:02 +08:00
|
|
|
|
fi
|
2022-12-18 17:29:48 +08:00
|
|
|
|
sudo cp "$temp_file" /etc/rsyslog.conf
|
|
|
|
|
rm "$temp_file"
|
2022-12-18 13:01:21 +08:00
|
|
|
|
green "change /etc/rsyslog.conf successfully"
|
2022-12-18 11:29:55 +08:00
|
|
|
|
fi
|
2022-12-18 17:29:48 +08:00
|
|
|
|
|
2022-12-18 11:29:55 +08:00
|
|
|
|
}
|
2022-12-18 11:09:27 +08:00
|
|
|
|
|
2022-12-18 11:29:55 +08:00
|
|
|
|
check_again() {
|
|
|
|
|
# Loop for 5 seconds, printing journald disk usage every second
|
|
|
|
|
count=0
|
|
|
|
|
while [ $count -lt 5 ]; do
|
|
|
|
|
journalctl --disk-usage
|
|
|
|
|
count=$((count+1))
|
|
|
|
|
sleep 1
|
|
|
|
|
done
|
2022-12-18 11:04:03 +08:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2022-12-17 23:10:25 +08:00
|
|
|
|
head
|
|
|
|
|
main
|
2022-12-18 11:04:03 +08:00
|
|
|
|
level
|
2022-12-18 11:29:55 +08:00
|
|
|
|
check_again
|