如何设置用户通过 SSH 连接到服务器时使用的 shell。例如,我无法忍受 BASH 并且需要使用 ZSH,.zsh_profile当我通过 ssh 连接到机器时,我如何才能使 ZSH 与我的配置文件 ( )一起加载。
我也不想用ssh传递一堆参数,我不能设置默认shell吗?
以不同用户身份运行 shell 脚本的好方法是什么?我正在使用 Debian etch,并且我知道我想模拟哪个用户。
如果我手动进行,我会这样做:
su postgres
./backup_db.sh /tmp/test
exit
Run Code Online (Sandbox Code Playgroud)
由于我想自动化该过程,因此我需要一种将 backup_db.sh 作为 postgres 运行的方法(继承环境等)
谢谢!
注意:这不是一个真正的问题,因为我已经找到了答案,但是由于我在这里不容易找到它,所以我将其发布,以便它可以使其他人受益。
问题:如何读取连接的 PEM 文件作为 apache/mod_ssl 指令SSLCACertificateFile使用的文件?
答案(原文)(来源):
cat $file|awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
Run Code Online (Sandbox Code Playgroud)
如果末尾有一个空行,这可能会留下一个空文件,例如openssl pkcs7 -outform PEM -in my-chain-file -print_certs. 为防止出现这种情况,请在打印前检查行的长度:
cat $file|awk 'split_after==1{n++;split_after=0}
/-----END CERTIFICATE-----/ {split_after=1}
{if(length($0) > 0) print > "cert" n ".pem"}'
Run Code Online (Sandbox Code Playgroud)
回答 29/03/2016:
按照@slugchewer answer,csplit可能是一个更清晰的选择:
csplit -f cert- $file '/-----BEGIN CERTIFICATE-----/' '{*}'
Run Code Online (Sandbox Code Playgroud) find对查找比 X 天前修改得更多的文件有很好的支持,但是我怎样才能find找到在某个日期之前修改的所有文件?
我在find手册页中找不到任何内容来执行此操作,只能与另一个文件时间进行比较或检查创建时间与现在之间的差异。制作具有所需时间的文件并与之比较是唯一的方法吗?
PostgreSQL 用户默认在 unix 套接字上进行对等身份验证,其中 unix 用户必须与 PostgreSQL 用户相同。所以人们经常使用su或sudo成为postgres超级用户。
我经常看到人们使用以下结构:
sudo su - postgres
Run Code Online (Sandbox Code Playgroud)
而不是
sudo -u postgres -i
Run Code Online (Sandbox Code Playgroud)
我想知道为什么。同样,我见过:
sudo su - postgres -c psql
Run Code Online (Sandbox Code Playgroud)
代替
sudo -u postgres psql
Run Code Online (Sandbox Code Playgroud)
如果没有领导sudo的su版本可能会做出一些感觉,如果你是一个老平台没有sudo。但是为什么要在比史前时代更短的 UNIX 或 Linux 上使用sudo su?
我最终通过一个 shell 脚本为我的数据设置了一个现实的备份计划,由 cron 以紧密的时间间隔处理。不幸的是,每次执行 CRON 时,我都会收到空电子邮件,而不仅仅是在出现问题时。
是否可以仅在出现问题时让 CRON 发送电子邮件,即。我TAR没有按预期执行?
这是目前我的 crontab 的设置方式;
0 */2 * * * /bin/backup.sh 2>&1 | mail -s "Backup status" email@example.com
Run Code Online (Sandbox Code Playgroud)
非常感谢!
我可以使用 ifconfig 或 hostname -i 命令找到我的 IP 地址。
但是我如何找到我的公共 IP?
(我有一个静态公共 IP,但我想使用 unix 命令找到它)
linux find 命令返回的条目的默认排序顺序是什么?
例如,如果我发出
find . -type f -name '*mp3'
Run Code Online (Sandbox Code Playgroud)
并且输出由多个子文件夹中的多个文件组成,列出目录的默认顺序是什么?同时,列出单个目录中的文件的排序顺序是什么?
有时它会返回:
./B/01.mp3
./A/01.mp3
./A/04.mp3
./A/02.mp3
Run Code Online (Sandbox Code Playgroud)
看看如何首先列出目录 B 的内容,然后是目录 A 的内容。同时在目录 A 中,文件以有趣的顺序列出。
我想要完成的是:
1.) 有一个配置文件作为模板,带有像 $version $path 这样的变量(例如 apache config)
2.) 有一个 shell 脚本来“填充”模板的变量并将生成的文件写入磁盘。
这是否可以通过 shell 脚本实现。如果您能说出一些我可以完成的命令/工具或一些好的链接,我将非常感激。
鉴于这个例子:
mkdir a
ln -s a b
ln -s b c
ln -s c d
Run Code Online (Sandbox Code Playgroud)
如果我执行:
ls -l d
Run Code Online (Sandbox Code Playgroud)
它会显示:
d -> c
Run Code Online (Sandbox Code Playgroud)
有没有办法ls或任何其他linux命令来d -> c -> b -> a代替显示?