最好对 SSH 使用公钥。所以,我sshd_config有PasswordAuthentication no。
一些用户从不登录,例如使用 shell 的 sftp 用户/usr/sbin/nologin。或者系统账号。
所以我可以创建这样一个没有密码的用户adduser gary --shell /usr/sbin/nologin --disabled-password。
这是一个好/坏主意吗?有没有我没有考虑过的后果?
我希望服务按需启动,而不是在启动时启动。为此,我可以使用 systemd 套接字激活(使用服务和套接字文件)。
但这是一个资源有限的服务器,所以在一段时间(例如 1 小时)不活动后,我想停止该服务(直到它再次被触发)。我怎样才能做到这一点?
我查看了一些文档,但我不知道这是否受支持。
更新:
假设这是不受支持的,用例可能仍然很常见。实现这一目标的好方法/解决方法是什么?
这从终端工作:
ls /dev/sda*
Run Code Online (Sandbox Code Playgroud)
我想在 bash 脚本中使用变量。我试过:
device="a"
ls "/dev/sd"$device"*"
Run Code Online (Sandbox Code Playgroud)
但我收到错误:ls: cannot access '/dev/sda*': No such file or directory。
我使用xinetd并且它适用于我的目的。但是我最近发现 systemd 内置了称为“套接字激活”的东西。
这两个看起来非常相似,但 systemd 是“官方的”,似乎是更好的选择。
但是在使用之前,它们真的一样吗?我应该注意哪些差异?
例如,我只想在第一次请求时启动一些 dockerised 服务——我的第一个想法是使用 xinetd。但是套接字激活是否更好/更快/更稳定/无论如何?
我明白这些:
true; echo "$?" # 0
false; echo "$?" # 1
true | echo "$?" # 0
Run Code Online (Sandbox Code Playgroud)
但不是这个:
false | echo "$?" # 0
Run Code Online (Sandbox Code Playgroud)
...为什么不打印1?
我怎么能在管道中强制失败,然后再得到1呢?
文件内容filelist:
/some/path/*.txt
/other/path/*.dat
/third/path/example.doc
Run Code Online (Sandbox Code Playgroud)
我想列出这些文件,所以我这样做:
cat filelist | xargs ls
Run Code Online (Sandbox Code Playgroud)
但我没有扩大这些球体,而是得到:
Run Code Online (Sandbox Code Playgroud)ls: cannot access '/some/path/*.txt': No such file or directory ls: cannot access '/other/path/*.dat': No such file or directory /third/path/example.doc
我希望 tmux 在 ssh 登录时启动。
典型的建议是将其添加到~/.bashrc:
if [ -z "$TMUX" ] && [ -n "$SSH_TTY" ] && [[ $- =~ i ]]; then
tmux attach-session -t mysession 2>/dev/null || tmux new-session -s mysession
fi
Run Code Online (Sandbox Code Playgroud)
但是当我登录时,我从 tmux 收到此错误:
服务器丢失
......然后我像往常一样陷入困境。
更新
当我添加睡眠时:
if [ -z "$TMUX" ] && [ -n "$SSH_TTY" ] && [[ $- =~ i ]]; then
tmux attach-session -t mysession 2>/dev/null || $(sleep 1 && tmux new-session -s mysession)
fi
Run Code Online (Sandbox Code Playgroud)
...然后就可以了。奇怪的!是什么原因?
我通过 ssh 进入我的 VPS 并运行 tmux。我可以从远程复制/粘贴到本地,从本地复制/粘贴到远程 - 使用鼠标和 shift。
但我不知道如何复制大量文本。
如果我在本地工作,我可以这样做:cat somefile.txt | xsel -b或者cat somefile | xclip -selection clipboard复制到剪贴板。(我当然不能这样做,因为远程服务器不运行 x,即便如此,剪贴板也不匹配 tmux 中使用的那个。)
那么,如何在 tmux 会话中复制文本,并通过网络将其复制到本地系统的剪贴板?
更新:
实际上,即使没有 tmux,这也适用 - 如何在远程和本地 shell 之间复制粘贴大缓冲区。
我有一个回显文本段落的 bash 脚本。我希望它们缩进。
例子:
echo "Something"
echo -e "\tfoo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo"
Run Code Online (Sandbox Code Playgroud)
将打印如下内容:
Something
foo foo foo foo foo foo foo foo foo foo …Run Code Online (Sandbox Code Playgroud) 我不使用 snap 并且从不安装 snap 包。
在新的 Ubuntu Server 18.04 上,snap list显示:
尚未安装快照。
移除它安全吗?
我不确定后台有什么奇怪的依赖关系 - 所以我不想现在或将来不小心破坏系统。(我想确定一下,因为在 ubuntu 桌面上,即使我不使用 snap,操作系统本身也会使用。)