要编写一个 Shell 脚本来清空 logs
表中的记录,可以使用 DELETE FROM
SQL 语句。以下是一个简单的脚本示例,用于清空 log.db
数据库中的 logs
表:
清空 logs
表的 Shell 脚本
set +o history
#!/bin/bash
cd /www/server/panel/data/db
# 定义数据库文件路径
DB_FILE="log.db"
# 执行 SQL 语句,清空 logs 表中的所有记录
sqlite3 "$DB_FILE" <<EOF
DELETE FROM logs;
EOF
# 输出结果
echo "logs 表中的所有记录已被清空。"
脚本说明
DB_FILE="log.db"
:定义数据库文件的路径。DELETE FROM logs;
:SQL 语句,删除logs
表中的所有记录。echo "logs 表中的所有记录已被清空。"
:执行删除操作后输出一条提示信息。
执行脚本
将脚本保存为一个文件,例如
clear_logs.sh
。赋予脚本执行权限:
chmod +x clear_logs.sh
运行脚本:
./clear_logs.sh
注意事项
- 不可逆操作:
DELETE FROM logs;
会永久删除logs
表中的所有记录,这个操作是不可逆的,请确保在执行之前备份数据库文件(如果需要)。 - VACUUM(可选):如果你希望在删除记录后回收空间,可以在
DELETE FROM logs;
语句后加上VACUUM;
,这会将数据库文件中的空闲空间整理出来。
例如:
sqlite3 "$DB_FILE" <<EOF
DELETE FROM logs;
VACUUM;
EOF
#!/bin/bash
cd /www/server/panel/data/db
# 定义数据库文件路径
DB_FILE="log.db"
# 执行 SQL 语句,删除 logs 表中最后一条记录
sqlite3 "$DB_FILE" <<EOF
DELETE FROM logs WHERE rowid = (SELECT rowid FROM logs ORDER BY rowid DESC LIMIT 1);
EOF
# 输出结果
echo "logs 表中的最后一条记录已被删除。"
set +o history
#!/bin/bash
cd /www/server/panel/data/db
# 定义数据库文件路径
DB_FILE="log.db"
# 执行 SQL 语句,删除 logs 表中最后 10 条记录
sqlite3 "$DB_FILE" <<EOF
DELETE FROM logs WHERE rowid IN (SELECT rowid FROM logs ORDER BY rowid DESC LIMIT 10);
EOF
# 输出结果
echo "logs 表中的最后 10 条记录已被删除。"
这个脚本将删除 logs
表中的所有记录并整理数据库文件,释放不再使用的磁盘空间。