我使用的是 Ubuntu 22.04LTS。我想创建一个文件夹“temp”,在会话期间我在其中保存临时文件,顾名思义,这些文件是临时的。如何定义一个脚本,在关闭时自动删除该文件夹的内容?
例如:我下载了一些任务所需的文档,但最终我不需要保留它们,从而避免积累无用的文件。
我在互联网上找到了下面提到的脚本,当服务器存储空间不足或按照定义时,该脚本会通过电子邮件通知。我每 5 分钟运行一次,如果我的存储空间不足,它会在 5 分钟后通过电子邮件通知我。我需要的是当超出设置的存储限制时仅收到 1 封电子邮件通知,因为 1 封通知就足够了。我将清理存储空间,如果再次超出,我会再次收到通知,依此类推。我用 crontab 运行脚本。
#!/bin/sh
# Purpose: Monitor Linux disk space and send an email alert to $ADMIN
ALERT=90 # alert level
ADMIN="[email protected]" # dev/sysadmin email ID
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read -r output;
do
echo "$output"
usep=$(echo "$output" | awk '{ print $1}' | cut -d'%' -f1 )
partition=$(echo "$output" | awk '{ print $2 }' )
if [ $usep -ge $ALERT ]; then
echo "Running out of space \"$partition ($usep%)\" on $(hostname) as on $(date)" |
mail -s "Alert: Almost out of disk space $usep%" "$ADMIN"
fi
done
我有一台需要监视的远程机器。它运行的是 Ubuntu Studio 22.04 (KDE Plasma)。几周前它崩溃了,journalctl 显示了崩溃前几分钟发生的“错误”。所以我编写了一个遵循journalctl的简单脚本,如果出现“Bug”一词,它会发送一封警告电子邮件。我大约 10 天前设置了该脚本运行。昨天,我远程连接到机器并检查htop,发现该脚本使用了90%以上的CPU。我杀了它,CPU 使用率恢复正常。这是脚本:
#!/bin/bash
#####################
# THIS SCRIPT LAUNCHED AT STARTUP, CHECKS journalctl for string "Bug"
######################
while true; do
nohup journalctl --follow | grep -i -q "bug" && mutt -s "ALERT - AirchainPC may be in TROUBLE" -- [email protected] < bug_issued_by_journalctl.txt &>/dev/null &
done
有什么可以解释 CPU 使用率高的原因吗?顺便说一句,我认为我不需要那个“nohup”。
我在 Ubuntu 中创建了一个名为 bash_test_01.sh 的文件,其中包含命令echo "cmd is executed"
在 Powershell 中,如果我运行
>wsl
$cd /home
$/home/adm_difolco_e/bash_test_01.sh
我明白了
cmd 被执行。
但是如果我跑
wsl -e /home/adm_difolco_e/bash_test_01.sh
我明白了
<3>WSL (31608) ERROR: CreateProcessEntryCommon:570: execvpe /home/adm_difolco_e/bash_test_01.sh failed 8
<3>WSL (31608) ERROR: CreateProcessEntryCommon:579: Create process not expected to return
postinst
我的 debian 包中有一个脚本:
#!/bin/bash
oqm-config -g system.hostname
RESULT="$?"
if [ "$RESULT" -eq 1 ]; then
oqm-config -s system.hostname $(hostname).local "."
fi
这是为了填充配置变量(如果它不存在)。这些命令在安装过程之外起作用:
$ sudo ./test.sh
+ oqm-config -g system.hostname
ERROR: Config key not found: system.hostname
+ RESULT=1
+ [ 1 -eq 1 ]
+ hostname
+ oqm-config -s system.hostname oqm-demo.local .
{
"system": {
"hostname": "oqm-demo.local"
},
"captain": {},
"snapshots": {
"location": "/data/oqm-snapshots/",
"numToKeep": 5,
"frequency": "weekly"
}
}
但是,在安装期间执行时,初始的返回代码oqm-config -g system.hostname
始终是0
(或更准确地说是空字符串?不确定为什么空字符串中的这个特定错误应该是0
?):
Setting up open+quarter+master-manager-station+captain (1.0.18) ...
+ oqm-config -g system.hostname
ERROR: Config key not found: system.hostname
+ RESULT=0
+ '[' '' -eq 1 ']'
/var/lib/dpkg/info/open+quarter+master-manager-station+captain.postinst: line 5: [: : integer exp
ression expected
我错过了什么吗?
在 Ubuntu 20.04 上构建 debian 文件,尝试安装22.04
制作 debian 的文件(我知道它很乱,但通常有效):https://github.com/Epic-Breakfast-Productions/OpenQuarterMaster/blob/dev.388-fr-finish-keycloak-infra-component/软件/Station-Captain/makeInstallers.sh#L107-L117
我有一个脚本文件,它以这种方式引用另一个脚本文件(包含一些函数):
. "${scripts_dir}/update.sh"
在Linux脚本中这是什么意思?
它是否会加载 update.sh 中的代码以便现在可以调用它?
在我的 Kubuntu 22.04 中,我的 crontab 运行的脚本使用notify-send
. 但是,它不起作用:没有出现弹出窗口。如果我将脚本的输出(stderr
特别是)重定向到文件,则会打印此错误:
Error calling StartServiceByName for org.freedesktop.Notifications: Timeout was reached
如果我notify-send
直接从 cronjob 运行,
0 * * * * env DISPLAY=:0.0 notify-send --expire-time=0 --app-name="Test" 'Test text' 1>/tmp/out1 2>/tmp/out2
out1
并且out2
是空的;但是,这并不像以前那样有效。弹出窗口不会出现。
有没有办法让notify-send
工作按预期进行?
我已经创建了简单的脚本并将其放入 ~/.local/share/nautilus/scripts/(帖子末尾的脚本)。
我可以在 Nautilus->Scripts->myScript.sh 中右键单击运行,到目前为止一切正常。
问题是没有显示终端窗口或任何输出。我只收到正确填充所选文件路径的通知发送消息,无需等待。
我希望会有一些终端窗口打印“这是测试!”,然后是“请输入...”并等待 Enter 按键。最后,应收到通知发送。
我在这里错过了什么?
#!/usr/bin/bash
echo "THIS IS TEST!"
read -r -p "PLEASE ENTER TO EXIT! Waiting..."
notify-send "COMPLETED!" "${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS} ___ ${NAUTILUS_SCRIPT_SELECTED_URIS} ___ ${NAUTILUS_SCRIPT_CURRENT_URI}"
我的服务器中运行了一些脚本,有时我的脚本可能会崩溃,这很正常,但是从几天前开始,我开始看到一些非常奇怪的东西,在我的终端中,我有很多运行不同脚本的选项卡,突然一个选项卡已关闭,因此脚本死亡,我不知道为什么选项卡会自动关闭我从未见过这样的事情,我想知道一些关于我可以做些什么来调查此类问题的建议。
我正在使用 Ubuntu 22.04
我有一个 bash 脚本,它备份我的 gitlab 服务器并将文件复制到另一个磁盘。
当我手动运行脚本时,脚本按预期运行。
我试图将它添加为工作,crontab
但它似乎没有运行。
这就是我尝试设置的方式crontab
:
sudo crontab -e
我将其设置为每天 12:00 运行。
我也尝试了不同的时间,但仍然没有运气。
0 12 * * * root /home/user/dev/backup.sh
sudo /etc/init.d/cron restart
但是我没有在预期目录中看到任何文件。如果我手动运行脚本,它工作正常。
我的脚本的第一行包含#!/bin/bash
我不知道这是否重要。