我想将大约 1000 个 mp3 文件从包含复杂嵌套目录结构的名为“music”的目录移动到名为“mp3s”的单个目录,以便我可以在车中收听它们。
我使用的命令是:
find music -name '*mp3' -exec mv -v -t mp3s {} +
Run Code Online (Sandbox Code Playgroud)
然而,当我执行命令时发生了一些奇怪的事情。命令完成后,我注意到省略了四个文件。这些文件是:
"music/Michael Hedges/Michael Hedges - Taproot/06 - Chava's Song.mp3"
'music/Michael Hedges/Michael Hedges - Aerial Boundaries/04 - Ragamuffin.mp3'
'music/Jonas Hellborg/1988 - Bass/07. Blues For LW.flac.mp3'
'music/Jonas Hellborg/1988 - Axis/03. Roman.flac.mp3'
Run Code Online (Sandbox Code Playgroud)
我再次执行了完全相同的命令,这一次先前省略的四个文件已按预期移动。
我无法想象为什么find
会做出这样出乎意料的事情。为什么会发生这种情况?
在 Ubuntu 上的 bash shell 中执行。
据我所知,crontab 有这些字段,从左到右开始。
1 minutes 0-59
2 hours 0-23
3 days of month 0-31
4 month 1-12
5 day of the week 0-6
6 command
Run Code Online (Sandbox Code Playgroud)
我想在 15:30 每 15 天运行一次 foo 命令这是正确的,因为当月的运行命令 1 和 15 有 30 天(31 天)所以每 15 天运行一次
30 15 1,15 * * /sbin/foo -a 1> /dev/null
Run Code Online (Sandbox Code Playgroud)
这个语法也正确吗?
30 15 */15 * * /sbin/foo -a 1> /dev/null
Run Code Online (Sandbox Code Playgroud)
系统是使用 Dillon Cron 的 Slackware Linux
我们在 crontab 文件中有一堆 crontab 条目。其中一些被暂时注释掉。是否可以在条目处添加评论作为注释掉的原因。
例如
#00 20 * * * sh test.sh "Adding comments here, reason for commenting out"
Run Code Online (Sandbox Code Playgroud) 我最近在 Arch Linux 上安装了 virt-manager,与在 Ubuntu 下不同,第一次启动 virsh-edit 时没有提示我选择文本编辑器。相反,XML 文件是在 vi(或 vim,不确定)中打开的。
从 RedHat 档案中的这个线程中,我想如果我只是添加到~/.bashrc
:
export EDITOR=/usr/bin/nano
Run Code Online (Sandbox Code Playgroud)
这样就可以解决问题。但设置 EDITOR 环境变量不起作用。
此外,启动它EDITOR=geany sudo virsh edit myWINVM
给出了相同的结果,就像尝试使用不同的编辑器一样:EDITOR=geany sudo virsh edit myWINVM
如此处所述
我看到该变量实际上已被设置:
[~]$ printenv
SHELL=/bin/bash
SESSION_MANAGER=local/virtland:@/tmp/.ICE-unix/5451,unix/virtland:/tmp/.ICE-unix/5451
WINDOWID=27262979
COLORTERM=truecolor
XDG_CONFIG_DIRS=/etc/xdg
XDG_MENU_PREFIX=xfce-
SSH_AUTH_SOCK=/tmp/ssh-j36TZui4fOt5/agent.5457
DESKTOP_SESSION=Xfce Session
SSH_AGENT_PID=5458
EDITOR=/usr/bin/nano
...
Run Code Online (Sandbox Code Playgroud)
但是virsh edit MYVM
仍然在 vi 中打开 XML。
我需要在 Arch 中做一些不同的事情吗?virsh 最近的更新中更改此设置的方法是否已更改?
我读了很多关于命令使用的教程kill
,主要是3种方法
kill -15 <pid>
kill -SIGTERM <pid>
kill -TERM <pid>
Run Code Online (Sandbox Code Playgroud)
出于脚本目的以及 Macos 的可移植性,将不会使用代码编号。因为kill -l
macos 与 Linux 不同。因此,在这里输入播放信号名称。
问题
kill
正确或建议方法是什么?我是说:
为什么?这两种方法的存在只有一个原因,对吗?是否有强制理由使用一种方法而不是另一种方法?
环境
这种情况适用于 Ubuntu 桌面/服务器和 Fedora 工作站/服务器
在 CentOS 5 的旧时代,我有一个以另一个用户身份运行的应用程序。我创建了一个 .desktop 文件,它运行如下命令:
gksu -u anotheruser someapplication
Run Code Online (Sandbox Code Playgroud)
当用户单击该图标时,弹出窗口要求输入“另一个用户”的密码,当密码正确时,“某个应用程序”启动。
现在,在 CentOS 7 的现代,我找不到这种行为的替代品。我尝试过beesu:
beesu -l -P someapplication anotheruser
Run Code Online (Sandbox Code Playgroud)
但它要求我输入 root 密码而不是“另一个用户”密码。
我也尝试过 pkexec:
pkexec --user anotheruser someapplication
Run Code Online (Sandbox Code Playgroud)
结果相同。
这两种方法在寻找正确的显示变量时也存在问题:
Failed to parse arguments: Cannot open display:
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。
谢谢。
我想制作一个 shell 脚本来查找所有活动进程并向用户打印调度策略。我希望结果是这样的。
pid 3042's current scheduling policy: SCHED_OTHER
pid 3042's current scheduling priority: 0
pid 3043's current scheduling policy: SCHED_OTHER
pid 3043's current scheduling priority: 0
pid 3044's current scheduling policy: SCHED_OTHER
pid 3044's current scheduling priority: 0
Run Code Online (Sandbox Code Playgroud)
我已经成功做到了这一点,但仅限于使用ps
和chrt
命令的单个进程。
我正在为 Bash 编写一个制表符补全脚本,使用 Python 来提供补全结果。我正在使用虚拟脚本来显示我遇到的问题,内容并不重要。
我有一个名为 的 Bash 脚本dothat
,其中包含以下代码:
var=$1
echo "You have chosen $var"
Run Code Online (Sandbox Code Playgroud)
我还有一个为 创建制表符完成的脚本dothat
,称为dothat-completion.bash
:
_comp_func()
{
COMPREPLY=()
# Gets the output of a Python file and puts it into a variable
fruits=$(python fruit.py)
COMPREPLY=($(compgen -W "${fruits[*]}" -- $cur))
}
complete -F _comp_func dothat
Run Code Online (Sandbox Code Playgroud)
以及(简单)内容fruit.py
:
print('fruit:', end='')
Run Code Online (Sandbox Code Playgroud)
Python 脚本只是将字符串打印到 STDOUT,然后由 Bash 补全函数捕获该字符串,并用于生成制表符补全的可能匹配项。
现在,我想用这个脚本做的是,当我输入 时dothat <TAB>
,它将完成到dothat fruit:
,末尾没有空格。问题是,当我键入dothat
并按 Tab 时,它会完成为dothat fruit:
,并带有不需要的尾随空格。
我尝试将Python的内容更改为以下内容,并且所有结果都相同:
print('"fruit:"', end='') …
Run Code Online (Sandbox Code Playgroud) 当我使用ctrl+ alt+ F7,并切换到X11服务器,我可以看到桌面UI。
当我切换到ctrl+ alt+[ F1- F6] 时,我可以看到虚拟终端。
现在如何访问虚拟终端 7,即使 X 并行运行,我也可以在其中输入命令
我有一项每小时运行一次的服务(使用OnCalendar=hourly)。如果系统处于 24/7 状态,这非常有效,但在退出挂起/休眠状态后就会变得混乱。该服务将立即运行 - 这就是我想要的 - 但随后它会在每小时的顶部再次运行,无论自上次运行以来已经过去了多少时间。
有没有办法将计时器配置为以 1 小时为间隔运行?