小编Jer*_*ska的帖子

如何在@reboot 后 1 分钟开始 Cron 作业?

我需要在每次重新启动后一分钟执行我的脚本。当我@reboot在我的 crontab 中申请时,我的脚本为时过早 - 我希望脚本在重新启动时常规运行的所有其他任务之后执行。重新启动后如何运行脚本?

cron sleep

66
推荐指数
3
解决办法
19万
查看次数

如何只用 sed 替换第一次出现?

原始文件

claudio
antonio
claudio
michele
Run Code Online (Sandbox Code Playgroud)

我只想用“克劳迪娅”更改“克劳迪奥”的第一次出现,以便我得到以下内容:

claudia
antonio
claudio
michele
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

sed -e '1,/claudio/s/claudio/claudia/' nomi
Run Code Online (Sandbox Code Playgroud)

上面的命令执行全局替换(它替换所有出现的 'claudio')。为什么?

sed

39
推荐指数
4
解决办法
10万
查看次数

如果应用程序正在运行,我如何检查 Bash 脚本?

我的主文件夹中有一个 gnome-run 应用程序。我现在已经添加了当我按下Meta+时运行的应用程序R(我在CCSM 中添加了它)。我通过./gnome-run在我的主文件夹中执行来运行应用程序。
我在ps -A.

问题是,如果我打开 gnome-run 程序并按下组合键,我希望应用程序关闭。有没有办法创建一个 bash 文件来检查应用程序是否正在运行?如果它然后关闭它,否则启动它。

bash gnome process-management pgrep

6
推荐指数
1
解决办法
3136
查看次数

在基于 Linux 的系统上启动进程所需的最小内存量是多少?

两种语言的例程都很便宜:每个 goroutine 为 2KB,而 Elixir 进程每个为 0.5KB。

据我所知,在BEAM中启动一个进程需要 0.5KB 的内存。对于Elixir和 Erlang来说,这是如此轻量级,而对于Go来说,在较小程度上,与其他依赖于自己的不那么便宜的进程和线程或依赖于它们的语言相比,这似乎是使用这些运行时的优势底层操作系统的进程和线程(据说也需要更多内存)。

我想知道在基于 Linux 的系统上启动一个进程需要多少内存。我知道内存使用情况取决于进程正在执行的操作。但我认为仅仅启动一个不执行任何操作的进程会产生内存成本)。那成本是多少?
我在哪里可以阅读更多相关内容?是否有任何文件/命令可以用来检查它?

process memory concurrency

6
推荐指数
1
解决办法
962
查看次数

如何将只能安装到 /etc/fstab 中具有条目的驱动器/分区列入白名单?

在我的 Ubuntu 系统上,我注意到某些文件管理器在打开时可以挂载通过我的 USB 端口之一(作为非 root)连接的任何驱动器。为了防止这种情况发生,我/etc/fstab这样配置:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/vgubuntu-root /               ext4    errors=remount-ro 0       1
# /boot was on /dev/nvme0n1p3 during installation
UUID=485794d0-6773-4136-9df9-c8f97fc3c3bc /boot           ext4    defaults        0       2
# /boot/efi was on /dev/nvme0n1p2 during installation
UUID=5E62-20EC  /boot/efi       vfat    umask=0077      0       1
/dev/mapper/vgubuntu-swap_1 none            swap    sw              0       0
#/media/j/sandisk-32GB is my primary USB drive for backups
PARTUUID=d199a40a-b5cc-724b-b70b-1b90e4274ea9 /media/user_xyz/sandisk-32GB ext4 defaults,nofail 0 3
Run Code Online (Sandbox Code Playgroud)

1. 如何防止非用户自动挂载或挂载my 中root指定的驱动器/分区?/etc/fstab

2.是否可以进一步限制root安装白名单以外的驱动器?例如, …

filesystems automounting mount fstab

6
推荐指数
2
解决办法
528
查看次数

如何验证文件是否已被复制?

有没有办法确保文件已复制到 USB 驱动器?

(例如:我有一个文件 secret.db,我想我的朋友已经将它复制到他的 USB 驱动器中。stat $filename我看不到更新的 a/c/m/time 因为cp没有更新时间戳)。

有没有办法知道或者不可能?

我正在使用 Ubuntu 12.04 和 Bash v4。

security stat forensics timestamps files

5
推荐指数
1
解决办法
4709
查看次数

如果我在 cron 中为 SHELL 分配两个 shell,它可能工作吗?

最近我开始逐步将我的 shell 切换到nu的过程, 因此我考虑在 cron 中将其路径分配给 SHELL。

在阅读了手册的大部分内容后man 5 crontab,我查看了 PATH 并复制了:在尝试将两个 shell 分配给 SHELL 的值之间使用的约定:

SHELL=/bin/bash:/home/jerzy/.cargo/bin/nu
Run Code Online (Sandbox Code Playgroud)

它不起作用,我的 crontab 中的脚本无法正常工作。而无论是SHELL=/bin/bashSHELL=/home/jerzy/.cargo/bin/nu正常工作。

我可以为 SHELL 分配两个 shell 吗?这样做甚至有意义吗?

shell cron environment-variables

5
推荐指数
2
解决办法
934
查看次数

如何可靠地捕获此脚本中“ls”的输出?

以下脚本play_movie.sh旨在自动选择一部电影(如果当前目录中只有一部电影)并使用ffplay. 否则,它的目的是向用户显示一系列电影并接受他们的输入(要播放的电影)。

#!/usr/bin/bash

output_a=$(ls -R *.[aA][vV][iI] 2>/dev/null)
output_m=$(ls -R *.[mM][kKpP][vV4]] 2>/dev/null)
output_v=$(ls -R *.[vV][oO][bB]] 2>/dev/null)
all_exts="${output_a}${output_m}${output_v}"
ln_cnt=$(echo "${all_exts}" | wc -l)

if [[ "$ln_cnt" -eq 1 ]]; then
  echo -e "Playing: ${all_exts}\n"
  ffplay -hide_banner -infbuf -fs -sn -ast a:0 "${all_exts}"
elif [[ "$ln_cnt" -gt 1 ]]; then
  printf "Select a file out of the list below"
  ls -R *.[aA][vV][iI] 2>/dev/null 
  ls -R *.[mM][kKpP][vV4] 2>/dev/null 
  ls -R *.[vV][oO][bB] 2>/dev/null
  read line; ffplay -hide_banner -infbuf -fs -sn -ast …
Run Code Online (Sandbox Code Playgroud)

ls stdout variable

4
推荐指数
2
解决办法
1297
查看次数

怎么可能除了隐藏的'.' 来自重命名脚本的文件和目录?

我有一个重命名脚本,去掉空格,每个目录和文件。它递归地执行:

#!/bin/bash

find -name "* *" -print0 | sort -rz | \
  while read -d $'\0' f; do mv -v "$f" "$(dirname "$f")/$(basename "${f// /_}")"; done
Run Code Online (Sandbox Code Playgroud)

当我在我的~目录中运行它时,脚本造成了一些意外的破坏,重命名了以下项目:

  • ./.cache/google-chrome/Default/Storage/ext/nmmhkkegccagdldgiimedpiccmgmieda/def/Code Cache
  • ./.cache/google-chrome/Default/Storage/ext/gfdkimpbcpahaombhbimeihdjnejgicl/def/Code Cache
  • ./.cache/google-chrome/Default/Code Cache

我希望我的脚本排除任何以.重命名开头的目录或文件。你会怎么写这样的剧本?是否需要为此使用正则表达式?

find shell-script recursive regular-expression rename

3
推荐指数
1
解决办法
178
查看次数

将这些文件的权限设置为 600 是否会导致我的操作系统无法使用?.bash_logout、.bashrc、.profile

我严重依赖我的别名,我突然想到,我可以通过递归更改主目录及其子目录和文件(文件和目录).bashrc的权限来提高我的隐私/安全性并在某种程度上强化我的 Ubuntu 20.04 桌面)。所以我跑了:600700

sudo chmod -R 600 /home/undoxed && sudo chmod -R u+X /home/undoxed
Run Code Online (Sandbox Code Playgroud)

其中undoxed是我的管理用户的名称。递归标志也未能幸免.bash_logout.bashrc, 和.profile

从我之前在修改 时注意到的情况来看/etc/adduser.conf将其设置为 DIR_MODE=0700与设置为umask, 然后添加新用户,结果将获得新用户主目录中任何文件的权限,但以下文件除外:。上述三个文件都获得了权限,而不是像我预期的那样。.bashrc0077useradd600.bash_logout .bashrc .profile644600

为什么这三个文件能够幸免呢?制作这些文件600(就像我手动使用的那样)是否chmod -R 600会使我的操作系统无法使用?与 相比,这些具有此类权限的文件是否会产生其他后果644

到目前为止,一切似乎都很好,但sudo chmod -R 600 /home/undoxed && sudo chmod -R u+X /home/undoxed 今天跑步后我还没有重新启动,我很想这样做。

bash permissions profile .bash-logout

3
推荐指数
1
解决办法
2913
查看次数