目录 cron.d(如/etc/cron.d/)和之间的主要区别是什么crontab?
据我了解,人们可以创建一个文件,/etc/cron.d/my_non_crontab_cronjobs然后将任何想要的内容放入其中,就像将它们放入crontabvia 一样crontab -e。
那么两者的主要区别是什么呢?
我知道什么是ugoa(所有者、组、其他人、全部)或rwx(读取/正确/执行)或 4,2,1 或-, f, d, l,我试图读入man chmod以了解什么是大写X,chmod但没有一个条目。然后我在 posix/chmod 中阅读了这篇文章,但被困在了这段话中:
仅当目标 a) 是目录 b) 已经为用户、组或其他人中的任何一个设置了至少一个可执行位时才设置可执行位。
我还在这篇文章中读到了这个代码示例:
chmod -R u=rwX,g=rX,o=rX testdir/
Run Code Online (Sandbox Code Playgroud)
我知道testdir/对所有者 (u)、组 (g) 和其他人 (o)有递归许可,但我承认我仍然错过了大写 X 的意图。
也许这里的教学措辞可以对此有所了解(我在这里发布的主要原因是因为我没有找到关于此的 SE 会议)。
更新
对不起,我错过了那个男人。我没想到 X 会出现在参数列表之前,我认为搜索返回的是 x 而不是 X,我的错。
我使用 Ubuntu 服务器 16.04,并且我希望at在当前会话中使用该实用程序在 1 分钟后执行某些操作(例如echo),而不提供特定日期和时间 - 仅比当前时间提前 1 分钟。
这失败了:
echo 'hi' | at 1m
Run Code Online (Sandbox Code Playgroud)
我选择的原因at了sleep,因为睡眠障碍当前会话是延迟命令为此更适合在另一个会话,而不是大部分时间的一个,我们的工作。AFAIR,at不会以这种方式行事,也不会妨碍我的会议。
根据 Pied Piper 的回答,我尝试过:
(sleep 1m; echo 'hi') &
Run Code Online (Sandbox Code Playgroud)
我对这种方法有一个问题:“hi”流打印在我的主提示中,并且还在_包含它的主提示下添加了一个空的辅助提示 ( ),请参阅:
USER@:~# (sleep 1m; echo 'hi') &
[1] 22731
USER@:~# hi
^C
[1]+ Done
Run Code Online (Sandbox Code Playgroud)
通过 Peter Corde 的回答,我尝试过:
(sleep 2 && echo -e '\nhi' && kill -WINCH $$ &)
Run Code Online (Sandbox Code Playgroud)
这在 Bash 4.4 中可以正常工作,但在某些旧版本中似乎无法正常工作(请参阅答案中的评论)。我个人在自己的环境中使用 Bash 4.3。
我在 Debian 9.3 中运行了以下命令:
cd /usr/local/src
wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
Run Code Online (Sandbox Code Playgroud)
该文件下载得很好,但是,当我执行时:
tar -xzfv maldetect-current.tar.gz
Run Code Online (Sandbox Code Playgroud)
我得到:
tar (child): v: Cannot open: No such file or directory tar (child):
Error is not recoverable: exiting now tar: Child returned status 2
tar: Error is not recoverable: exiting now
Run Code Online (Sandbox Code Playgroud)
但ls -la表明该文件确实存在:
/usr/local/src# ls -la
total 3144
drwxrwsr-x 2 root staff 4096 Jan 8 11:46 .
drwxrwsr-x 11 root staff 4096 Jan 8 11:40 ..
-rw-r--r-- 1 root staff 1605546 Jul 14 04:45 maldetect-current.tar.gz
Run Code Online (Sandbox Code Playgroud) locationNginx中以下块的含义是什么?
location ~ /\.ht {
deny all;
}
Run Code Online (Sandbox Code Playgroud)
我问,因为我有一个小的 WordPress 站点,我从它的配置中删除了这个块并重新启动了服务器,但该站点似乎仍然正常工作。
我知道在 Linux 中有两个执行阶段,处理我们运行的每个命令。我会说出我对它们的理解方式,因为我不知道原文的措辞:
外壳处理---外壳编辑命令(将其拆分为不同的行等),所有这些都在与当前外壳不同的外壳中完成。
在 shell 处理之后执行结果(在我们使用的原始 shell 中)。
有人可以回答这些操作的名称并参考他认为最适合新学习者的一些阅读材料吗?
我知道这set -x会让 Bash 用户进入调试模式,并且我觉得在调试模式下全职工作将帮助我更好地处理 Bash 中可能出现的问题。
我在使用时遇到问题set -x:
当我尝试使用我的发行版(Ubuntu 16.04)的本机制表符完成来完成目录名称时,我得到一个非常长且混乱的输出。
例如,$PWD我/var/www/html/运行以下任一命令:
cd ~/u[制表符补全完成u至ulcwe]
cd ~ && cd u[制表符补全完成u至ulcwe]
在这两个示例中,我都会得到非常长且混乱的输出:
+ return 0
+ local -a toks
+ local quoted x tmp
+ _quote_readline_by_ref '~/u' quoted
+ '[' -z '~/u' ']'
+ [[ ~/u == \'* ]]
+ [[ ~/u == \~* ]]
+ printf -v quoted '~%q' /u
+ [[ ~/u == …Run Code Online (Sandbox Code Playgroud) 我是否正确理解Gnome shell是为允许基于 GUI 的操作而编写的 shell,而Unity GUI实际上是基于 Gnome shell 的接口之一?
如果文件中不存在这些行,如何将多行追加到文件中?
例如,要添加多个全局别名,/etc/bash.bashrc我使用heredocument:
cat <<-"BASHRC" >> /etc/bash.bashrc
alias rss="/etc/init.d/php*-fpm restart && systemctl restart nginx.service"
alias brc="nano /etc/bash.bashrc"
BASHRC
Run Code Online (Sandbox Code Playgroud)
我被批评说这个操作不包括检查行是否已经存在的方法,如果错误地重新执行这里文档,我可能会导致冗余和冲突。
考虑这些wget代码:
wget -P ~/ https://raw.githubusercontent.com/user/repo/branch/papj.sh
wget -P ~/ https://raw.githubusercontent.com/user/repo/branch/nixta.sh
Run Code Online (Sandbox Code Playgroud)
有没有什么优雅的方法可以将具有上述相同基本 URL 的不同终端合并为一行而不是 2 行或更多行?
伪代码:
wget -P ~/ https://raw.githubusercontent.com/user/repo/branch/papj.sh||nixta.sh
Run Code Online (Sandbox Code Playgroud) debian ×2
at ×1
autocomplete ×1
bash ×1
chmod ×1
command-line ×1
console ×1
cron ×1
curl ×1
debugging ×1
delay ×1
download ×1
executable ×1
files ×1
gui ×1
nginx ×1
output ×1
permissions ×1
posix ×1
shell-script ×1
sleep ×1
stdout ×1
tar ×1
ubuntu ×1
wget ×1