我正在编写一个shell 脚本,我想在启动时作为守护程序运行,而不使用daemontools或daemonize等外部工具。
根据Linux Daemon Writing HOWTO,一个合适的守护进程具有以下特征:
stdin, stdout, stderr)/)该守护进程介绍更进一步,指出一个典型的守护程序也:
SIGCLD 我将如何做到这一切的sh,dash或bash只用普通的Linux工具脚本?
该脚本应该能够在尽可能多的发行版上运行而无需额外的软件,尽管Debian是我们的主要关注点。
注意:我知道StackExchange网络上有很多建议使用nohup …
我正在寻找能够告诉我 ext4 与 btrfs 格式化驱动器上的分配量的命令。
背景:我正在使用一个备份系统,允许用户恢复单个文件。该系统仅使用rsync,没有服务器端软件,备份未压缩。结果是我有一些 3.6TB 的文件,其中大部分都很小。
对于我的数据集来说,LVM 下的 btrfs 卷上的存储效率似乎比普通的旧 ext4 卷上低得多,我怀疑这与最小文件大小以及块大小有关,但我有无法弄清楚如何获得这些尺寸以进行比较。btrfs wiki 说它使用“页面大小”,但我没有找到任何关于获取该数字的信息。
我正在安装 arch Linux 并输入了命令
grub-mkconfig -o /boot/grub/grub.cfg
Run Code Online (Sandbox Code Playgroud)
它回应了
WARNING: Failed to connect to lvmetad. Falling back to device scanning.
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
我想要实现的是一个交互式程序,它在询问用户密码之前或之后运行,但除非成功退出,否则不会处理对计算机的访问。为了让它更容易理解,这里有一个例子:
我想访问我的计算机,首先输入我的用户名,然后是我的密码,然后正确回答一个简单的随机生成的数学问题。
为此,我使用以下系统身份验证文件:
auth required pam_unix.so try_first_pass nullok nodelay
auth optional pam_faildelay.so delay=600000
auth optional pam_exec.so stdout /home/math
auth optional pam_permit.so
auth required pam_env.so
Run Code Online (Sandbox Code Playgroud)
问题是,名为 math 的程序无法处理来自用户的输入,因为它会自动从 PAM 读取 EOF,这实际上使其无用。我还尝试了可疑行的以下变体,在这种情况下,它会读入密码,这也不是我想要的:
auth optional pam_exec.so stdout expose_authtok /home/math
Run Code Online (Sandbox Code Playgroud) 无法挂载 btrfs 文件系统。最初在运行 xbian 的服务器上创建。尝试安装在最新的 OpenSUSE 42.2 服务器上。抱怨不支持的功能 0x10,open_ctree 失败。
我怎样才能挂载这个文件系统?
挂载尝试
# file -s /dev/sdc2
/dev/sdc2: BTRFS Filesystem (label "xbian", sectorsize 4096, nodesize 16384, leafsize 16384)
# mount -t btrfs /dev/sdc2 /mnt
mount: wrong fs type, bad option, bad superblock on /dev/sdc2,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
#
Run Code Online (Sandbox Code Playgroud)
消息输出
[ 119.698406] BTRFS info (device sdc2): disk space caching is enabled …Run Code Online (Sandbox Code Playgroud) 如何在shell中将值从科学记数法转换为十进制?(首选C shell)
另外我想将它从 e-12 转换为 e-9 然后 shell
42.53e-12 到 0.04253。我必须这样做才能列出清单。
背景:我在自己的目录中有一组文件,我按照文件名的顺序将它们合并到一个文件中。我称它们为t1.txt, t2.txt, t3.txt...我按照整数的顺序合并它们。
情况:出于各种原因,我想摆脱文件名作为以后文件合并操作的元数据。
行动:我正在考虑转移到一个文件合并系统,该系统按文件创建的日期/时间对文件合并进行排序(显然,我必须按照以后合并的顺序创建文件)。
题:
日期/时间排序的文件合并是否可靠?有隐藏的哥特式吗?某些文件的创建间隔仅为十分之一秒,或者更少——这是跟腱愈合吗?
我应该考虑订购合并是否有不同的东西。
日期/时间对我来说似乎很基本。OTH,一开始看起来简单直接的事情往往最终比想象的要复杂。所以我问。
我的/run/user/1000目录由 root 拥有 - 据我了解,它应该由我的用户拥有 - 当我收到此错误时,我无法启动任何快照程序(例如,slack):mkdir: cannot create directory \xe2\x80\x98/run/user/1000/snap.slack\xe2\x80\x99: Permission denied - 我也认为是什么导致了这个问题也可能导致我的音频无法工作。
这两个问题都可以在启动后chown修复pulseaudio -k && sudo alsa force-reload但我想弄清楚我在这里做错了什么。
我运行的是 Ubuntu 19.10
\n我在 ksh 中使用脚本来获取今天datecalc在 Solaris 10 服务器上使用的 91 天之前的日期。在 Linux 中与此等效的是什么?
month=`datecalc -a $(date +"%Y %m %d") - 1 |awk {'print $2'}`
day=`datecalc -a $(date +"%Y %m %d") - 91 |awk {'print $3'}`
year=`datecalc -a $(date +"%Y %m %d") - 1 |awk {'print $1'}`
Run Code Online (Sandbox Code Playgroud) 我正在尝试在循环中的多个服务器中执行操作,但我想在第一个服务器中启动我的操作并直接转到第二个,而无需等待第一个完成。
HOSTS="host1 host2"
For hostname in ${HOST} ;
do ssh -tt ${USERNAME}@${hostname} << EOF
actions
exit
EOF
Done
Run Code Online (Sandbox Code Playgroud)
任何人都有想法在 linux sh bash 中做到这一点?
先感谢您。
linux ×3
shell-script ×3
btrfs ×2
filesystems ×2
arch-linux ×1
awk ×1
backup ×1
csh ×1
daemon ×1
date ×1
debian ×1
ext4 ×1
filenames ×1
files ×1
login ×1
mount ×1
pam ×1
pdsh ×1
permissions ×1
sed ×1
shell ×1
snap ×1
timestamps ×1
ubuntu ×1