我正在编写一个shell 脚本,我想在启动时作为守护程序运行,而不使用daemontools或daemonize等外部工具。
根据Linux Daemon Writing HOWTO,一个合适的守护进程具有以下特征:
stdin, stdout, stderr)/)该守护进程介绍更进一步,指出一个典型的守护程序也:
SIGCLD 我将如何做到这一切的sh,dash或bash只用普通的Linux工具脚本?
该脚本应该能够在尽可能多的发行版上运行而无需额外的软件,尽管Debian是我们的主要关注点。
注意:我知道StackExchange网络上有很多建议使用nohup …
我正在编写一个脚本,它需要一步计算命令输出中的字符数。
例如,使用该命令readlink -f /etc/fstab应该返回,10因为该命令的输出长度为 10 个字符。
这已经可以使用以下代码存储变量:
variable="somestring";
echo ${#variable};
# 10
Run Code Online (Sandbox Code Playgroud)
不幸的是,对命令生成的字符串使用相同的公式不起作用:
${#(readlink -f /etc/fstab)};
# bash: ${#(readlink -f /etc/fstab)}: bad substitution
Run Code Online (Sandbox Code Playgroud)
我知道可以通过首先将输出保存到变量来做到这一点:
variable=$(readlink -f /etc/fstab);
echo ${#variable};
Run Code Online (Sandbox Code Playgroud)
但我想删除额外的步骤。
这可能吗?最好仅使用内置或标准实用程序与 Almquist shell (sh) 兼容。
其中包括Debian 自动强化文档 ( https://www.debian.org/doc/manuals/securing-debian-howto/ch-automatic-harden.en.html ) 中列出的所有强化包,包括:
令人困惑的是,该套件的文档包似乎可用于Debian Stretch (9.0),但目前也没有任何强化元包计划用于该版本。
是什么赋予了?是否有我忽略的替代替换包?如果有,它们是什么?
可能值得注意的是,我花了大量时间在网上搜索这个问题的答案。似乎没有关于这个主题的信息,我在邮件列表中也没有找到任何内容,尽管我没有在那里进行彻底的搜索。
我所发现的只是 Jessie 必须在某个时候可以使用这些包,但后来被删除了,因为一些 Google 查询仍然返回指向 Jessie 包信息页面的无效链接。
harden 软件包是新手管理员的天赐之物,尽管我知道它们从来都不是保护 Debian 服务器的完整答案。尽管如此,奇怪的是没有看到任何解释将它们排除在 Debian 的最新版本中。
我有一张非常古老且晦涩难懂的软件 CD(大约 2004 年)的副本。该光盘使用SafeDisc 复制保护,需要放在 CD 托盘中才能运行程序。
多年来,我一直在 Linux 上的 Wine 下使用原始 CD,没有任何问题。然而,几周前,CD 损坏了,不再可行。
幸运的是,我确实有使用 120% 酒精创建的 CD的ISO 备份,这意味着它包含程序验证 CD 所需的所有保护数据。在 Windows 中,我所要做的就是使用光盘模拟器(例如Alcohol 120%或MagicISO)安装ISO,并且程序可以完美运行。
是否有类似的方法可以在 Linux 下或直接在 Wine 下通过复制保护仿真挂载 ISO ,以便可以访问 SafeDisc 数据?我已经尝试过 Wine 中的本地 GUI 挂载方法以及 Linux 挂载实用程序 ( mount -o loop src.iso /media/cdrom) 等,但这些方法都无法模拟 SafeDisc 复制保护。
我应该注意,我已获得发行商的许可,可以绕过 SafeDisc DRM 在 Linux 上运行它,只要我不透露我正在这样做。他们也不再制作软件或在他们的库存中有任何旧 CD。
我正在尝试构建一个非常小的 Debian 安装。
仅使用标记为Essential 的软件包(不包括重要和推荐软件包)来安装操作系统的最佳方法是什么?
Debian 甚至会在这种配置下运行吗?
注意:按照这些说明操作似乎仍然会安装一些标记为“重要”的包。