我有一台服务器,出于安全原因,它通常会关闭。当我想处理它时,我打开它,执行我的任务,然后再次关闭它。我的任务通常不超过 15 分钟。我想实现一种机制,在 60 分钟后自动关闭它。
我已经研究过如何使用 cron 执行此操作,但我认为这不是正确的方法,因为 cron 没有考虑服务器上次打开的时间。我只能设置周期性模式,但他们没有考虑到这些数据。
我怎么能做这个实现?
/dev/log
是系统日志记录的默认条目。在 systemd 实现的情况下(本例),它是指向任何/run/systemd/journal/dev-log
. 它曾经是 syslog 守护进程处理的 unix 套接字的接收端。
~$ echo "hello" > /dev/log
bash: /dev/log: No such device or address
~$ fuser /dev/log
~$ ls -la /dev/log
lrwxrwxrwx 1 root root 28 Aug 23 07:13 /dev/log -> /run/systemd/journal/dev-log
当您尝试写入时弹出错误的说明是什么,为什么没有进程保存该文件(从fuser /dev/log
空输出?
日志记录确实在系统上正常工作。
~$ logger test
~$ journalctl --since=-1m
-- Logs begin at Thu 2018-05-24 04:23:46 CEST, end at Thu 2018-08-23 13:07:25 CEST. --
Aug 23 13:07:24 alan-N551JM alan[12962]: test
扩展评论建议
~$ sudo fuser /dev/log
/run/systemd/journal/dev-log: 1 311
~$ ls -lL /dev/log
srw-rw-rw- 1 root root 0 Aug 23 07:13 /dev/log
apt-key的Ubuntu 手册页包含以下说明apt-key add
:
注意:不应使用此命令,应将密钥环直接放在 /etc/apt/trusted.gpg.d/ 目录中,并使用描述性名称和“gpg”或“asc”作为文件扩展名。
我想我在其他任何地方都没有看到过这个建议。大多数托管自己的存储库的项目都说要下载他们的密钥文件并将其添加到apt-key
.
如果我运行以下 .sh 文件:
#!/bin/sh -a
echo "a" | sed -e 's/[\d001-\d008]//g'
结果是一个错误:
sed: -e 表达式 #1, char 18: 无效的范围结束
但是,如果我运行以下 .sh 文件:
#!/bin/sh
set -a
echo "a" | sed -e 's/[\d001-\d008]//g'
它运行没有错误。第二个代码不应该与第一个代码等效吗?为什么第一个错误?
我想使用 jq 将带有元素和值的数组添加到现有的 json 文件中。
我已经有一个文件(input.json)
{
"id": 9,
"version": 0,
"lastUpdTs": 1532371267968,
"name": "Training"
}
我想将它添加到另一个组数组中到这个 json (orig.json)
[
{
"name": "JAYS",
"sourceConnection": {
"name": "ORACLE_connection",
"connectionType": "JDBC",
"commProtocol": "JDBC"
},
"checked": true,
"newlyAdded": false,
"id": null,
"groups": [],
"displayName": "SCOTT",
"defaultLevel": "MANAGED"
}
]
最终结果应该看起来像
[
{
"name": "JAYS",
"sourceConnection": {
"name": "ORACLE_connection",
"connectionType": "JDBC",
"commProtocol": "JDBC"
},
"checked": true,
"newlyAdded": false,
"id": null,
"groups": [
{
"id": 9,
"version": 0,
"lastUpdTs": 1532371267968,
"name": "Training"
}
],
"displayName": "SCOTT",
"defaultLevel": "MANAGED"
}
]
我知道如何将元素添加到数组中,但不确定如何从文件中传入。
jq '.[].groups += [{"INPUT": "HERE"}]' ./orig.json
如何在 nano 中搜索和替换水平标签?我一直在尝试[\t]
在正则表达式模式下使用,但这仅匹配字符的每次出现t
。
我一直在使用sed 's/\t//g' file
,效果很好,但我仍然对nano
解决方案感兴趣。
我努力了
echo yes | ssh [email protected]
yes | ssh [email protected]
ssh -y [email protected]
其中没有一个似乎工作?
ssh
我的部分问题是,当命令实际上是本地命令时,我认为命令之后的每个命令都是远程命令。我猜远程命令必须在一个字符串中声明,该字符串作为参数传递给 ssh 命令,例如
$ ssh [email protected] 'remote command'
我想在德语区域设置中使用英语。
现在我的系统使用以下设置运行(在 Debian Expert Installer 的安装过程中配置):
English - English (Default)
other -> Europe -> Austria
United States - en_US.UTF-8
German
我现在的问题是:
如何保留英语但将当前语言环境 ( United States - en_US.UTF-8
) 切换到所需的德语语言环境 ( de_DE.UTF-8
)?
在安装过程中这是不可能的,因为发生了错误(“检测到无效的语言/区域设置组合”)。
目前我在本地和远程主机上使用 Fish 作为我的主要 shell。
我通过 ssh 和 sftp 连接到远程主机。默认情况下,我想在连接时自动打开或重用远程 tmux;所以我将此添加到我的~/.ssh/config
:
Host example.com
RemoteCommand tmux a; or tmux
RequestTTY yes
问题是现在我无法通过 连接sftp
,也无法从本地 CLI 运行直接命令:
➤ ssh example.com ping localhost
Cannot execute command-line and remote command.
➤ sftp example.com
Cannot execute command-line and remote command.
Connection closed
所以,我的问题是:如何定义打开新的交互式 SSH 会话时要执行的默认命令,但使其可覆盖?