在 bash 脚本中,如何使用 将所有标准输出重定向到日志文件和tee屏幕上的输出exec?
log_file="$HOME/logs/install.txt-`date +'%Y-%m-%d_%H-%M-%S'`"
[ -f "$log_file" ] || touch "$log_file"
exec 1>> $log_file 2>&1
Run Code Online (Sandbox Code Playgroud)
此代码将所有日志重定向到日志文件而不是屏幕。
我跑:
:~$ sudo rkhunter --checkall --report-warnings-only
Run Code Online (Sandbox Code Playgroud)
我收到的警告之一:
Warning: Suspicious file types found in /dev:
/dev/.udev/rules.d/root.rules: ASCII text
Run Code Online (Sandbox Code Playgroud)
并且root.rules包含:
SUBSYSTEM=="block", ENV{MAJOR}=="8", ENV{MINOR}=="1", SYMLINK+="root"
Run Code Online (Sandbox Code Playgroud)
我想了解这些变量的含义和作用SUBSYSTEM,ENV{MAJOR}以及SYMLINK+。
将文件scp从一台服务器转移到另一台服务器后,可能会更改文件所有权的原因是什么?
文件所有权从“ owner ”更改为“ apache ”。我用过scp -p。用户“所有者”存在于两台服务器上并且具有相同的 UID。
是否有方法/命令来检查 bash 脚本的依赖关系?换句话说,对这个问题的回答:用户应该安装哪些库来运行脚本?
我可以通过阅读脚本并检查它调用的其他库/命令来手动执行此操作,但这对于长脚本而言并不明显。
我有一个共享主机帐户,我使用 ssh 登录。例如,当我输入时,su我有这个输出:
su: must be run from a terminal
这个错误是否与我没有足够的权限或其他原因有关?
这两行有区别吗?
/home/user/script.sh >> /home/user/stdout_and_error.log 2>&1
/home/user/script.sh 2>&1 >> /home/user/stdout_and_error.log
Run Code Online (Sandbox Code Playgroud)
知道我想把脚本的标准输出和执行错误放在日志文件中。如果没有差异,如果我想记录日志本身怎么办?
我创建了一个基于 bind9 的 DNS 服务器,只在转发模式下工作:
这是我的 named.conf.options 文件:
#acl goodclients {
# localhost;
# localnets;
#};
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and …Run Code Online (Sandbox Code Playgroud) 为了保护我的 mysql 服务器,我检查了用户列表:
mysql> SELECT User,Host,Password FROM mysql.user;
+------------------+-----------+-------------------------------------------+
| User | Host | Password |
+------------------+-----------+-------------------------------------------+
| root | localhost | ******************************************|
| root | 127.0.0.1 | ******************************************|
| root | ::1 | ******************************************|
| debian-sys-maint | localhost | ******************************************|
+------------------+-----------+-------------------------------------------+
4 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
root 和 debian-sys-maint 使用 localhost/127.0.0.1 作为主机。
但我不明白::1符号是什么意思?
我正在尝试使用 grep 为某些日志文件着色。我写了一个脚本,它的一部分看起来像这样:
#!/bin/bash
com="GREP_COLOR=\"1;36\" egrep --color=always '[^a-zA-Z0-9]' $log |less -R"
log="/var/log/syslog"
eval $com
Run Code Online (Sandbox Code Playgroud)
执行丢失 $log !
我试过这个:
#!/bin/bash
com="`GREP_COLOR=\"1;36\" egrep --color=always '[^a-zA-Z0-9]' $log |less -R`"
log="/var/log/syslog"
eval $com
Run Code Online (Sandbox Code Playgroud)
什么都没有发生 !
你能看出我的代码有什么错误吗?
什么是最快的方式grep -v对另外一个文件,既一行一行。
不grep支持呢?或者我应该在两个 for 循环中使用它?