如果这件事应该转移到DBA交易所,我道歉。对我来说,感觉更像是linux而不是DB,下面是这样的:
我有一些机器每天晚上运行预定的cron任务,并将输出通过电子邮件发送给我。我不想为这种事发电子邮件。一般来说,我认为我们使用电子邮件的方式是坏的,但这是另一个故事。
因此,我开始想,我可以保留一个中央SQLite数据库来存储有关作业何时开始和完成,甚至可能是输出的信息。然后我就可以建立一个网页来查询这个问题,让我知道昨晚发生了什么。
所以我想出了一个简单的模式,可以在脚本的开头运行这个命令。
sqlite3 dbname.db "UPDATE data SET LastStart = DATETIME('NOW') WHERE TaskName = 'taskname'"所以现在我有一份记录表明我的工作是什么时候开始的。万岁。然后,我可以运行一个类似的命令,把作业结束的时间。
所以。如果数据库和任务位于同一台计算机上,这将非常有效。我去另一台机器,需要更新sqlite数据库.我怎么能有效地做到这一点呢?
我试过这个
ssh aaron@10.1.150.53 'sqlite3 /home/aaron/dbname.db "UPDATE data SET LastStart = DATETIME('NOW') WHERE TaskName = 'taskname'"'但这一结果是:
Error: no such column: NOW我试过一些变体,但什么也没得到。
我接近了吗?我应该做些完全不同的事吗?我在重新发明方向盘吗?
发布于 2012-06-25 19:26:47
所有这些都来自于引用。试试这个:
ssh aaron@10.1.150.53 'sqlite3 /home/aaron/dbname.db "UPDATE data SET \
LastStart = DATETIME('''NOW''') WHERE TaskName = '''taskname'''"'ps。您需要引用NOW,否则sqlite将尝试查找具有此名称的列。但是你的引号'会被ssh的引号吃掉。您无法转义',因此使用了三个引号(第一个off引号,第二个是需要传递给sqlite的引号,最后一个是打开的'''引号)。
pps。此外,您还可以反引用如下所示:
ssh aaron@10.1.150.53 "sqlite3 /home/aaron/dbname.db \"UPDATE data SET \
LastStart = DATETIME('NOW') WHERE TaskName = 'taskname'\""https://unix.stackexchange.com/questions/41611
复制相似问题