是否有命令或现有脚本可以让我一次查看所有*NIX系统的预定cron作业?我希望它包括所有用户crontabs,以及/etc/crontab,以及其中的任何内容/etc/cron.d.这也将是很高兴看到通过运行特定命令run-parts在/etc/crontab.
理想情况下,我希望以一种漂亮的列形式输出并以一些有意义的方式排序.
然后,我可以合并来自多个服务器的这些列表,以查看整个"事件安排".
我本来就要写这样一个剧本,但是如果有人已经麻烦了......
为了简单和(假设)速度,我总是倾向于使用长整数作为数据库中的主键.但是当对象实例使用类似于REST或Rails的URL方案时,我最终会得到这样的URL:
http://example.com/user/783
Run Code Online (Sandbox Code Playgroud)
然后假设有ID为782,781,......,2和1的用户.假设有问题的Web应用程序足够安全,可以防止人们输入其他号码未经授权查看其他用户,简单的顺序分配的代理键也"泄漏"实例的总数(早于这一个),在这种情况下是用户,这可能是特权信息.(例如,我是stackoverflow中的用户#726.)
将一个UUID/GUID是一个更好的解决方案吗?然后我可以像这样设置URL:
http://example.com/user/035a46e0-6550-11dd-ad8b-0800200c9a66
Run Code Online (Sandbox Code Playgroud)
不完全简洁,但显示的用户隐含信息较少.当然,它隐藏着"通过默默无闻的安全",这无法取代适当的安全性,但它似乎至少更安全一点.
这种好处是否值得为Web可寻址对象实例实现UUID的成本和复杂性?我认为我仍然希望使用整数列作为数据库PK来加速连接.
还有UUID的数据库内表示问题.我知道MySQL将它们存储为36个字符的字符串.Postgres似乎有更高效的内部表示(128位?)但我自己没有尝试过.有人对此有经验吗?
更新:对于那些询问只是在URL中使用用户名的人(例如,http://example.com/user/yukondude),这适用于名称独特的对象实例,但是对于数以万计的网络来说呢?真正只能用数字识别的app对象?订单,交易,发票,重复图像名称,stackoverflow问题,......
我在某个服务器上遇到类似僵尸的进程有问题需要时不时地被杀死.如何才能最好地识别运行时间超过一小时的那些?
假设我运行ps axf,我可以看到我的命令的进程树看起来像这样:
800 ? Ss 0:00 /usr/sbin/sshd
10186 ? Ss 0:00 \_ sshd: yukondude [priv]
10251 ? S 0:00 \_ sshd: yukondude@pts/0
10252 pts/0 Ss 0:00 \_ -bash
10778 pts/0 S 0:00 \_ su -
10785 pts/0 S 0:00 \_ -su
11945 pts/0 R+ 0:00 \_ ps axf
Run Code Online (Sandbox Code Playgroud)
我知道我可以检查$$当前shell的PID(10785)或$PPID父PID(10778).
但我只想要顶级父PID,在这个例子中它将是800(SSH守护进程).有没有办法轻松做到这一点?
我从这个SO回答中了解到,我可以递归检查/proc/PID/stat文件中的第4个条目,以查找每个进程的父PID:
# cut -f4 -d' ' /proc/10785/stat
10778
# cut -f4 -d' ' /proc/10778/stat
10252
# cut -f4 -d' ' …Run Code Online (Sandbox Code Playgroud) 两个用户希望共享最初使用MS Access编写的同一数据库,而不会在单个MDB文件上相互冲突.
我使用其Migration Toolkit将表从简单的MS Access数据库移动到MySQL (顺便说一下,它运行良好)并设置Access以通过ODBC链接到这些表.
到目前为止,我遇到了以下问题:
一旦数据库正在使用中,我可以期待任何其他问题吗?特别是当两个用户都在同一张桌子上工作时?
在我使用的Linux服务器上,进程以随机间隔写入随机命名的文件.这是一个小样本,显示文件大小,修改日期和时间以及文件名:
27659 2009-03-09 17:24 APP14452.log
0 2009-03-09 17:24 vim14436.log
20 2009-03-09 17:24 jgU14406.log
15078 2009-03-10 08:06 ySh14450.log
20 2009-03-10 08:06 VhJ14404.log
9044 2009-03-10 15:14 EqQ14296.log
8877 2009-03-10 19:38 Ugp14294.log
8898 2009-03-11 18:21 yzJ14292.log
55629 2009-03-11 18:30 ZjX14448.log
20 2009-03-11 18:31 GwI14402.log
25955 2009-03-12 19:19 lRx14290.log
14989 2009-03-12 19:25 oFw14446.log
20 2009-03-12 19:28 clg14400.log
Run Code Online (Sandbox Code Playgroud)
(请注意,有时文件大小可以为零.)
我想要的是一个bash脚本来总结文件的大小,按日期细分,产生这样的输出(假设我的算法是正确的):
27679 2009-03-09
33019 2009-03-10
64527 2009-03-11
40964 2009-03-12
Run Code Online (Sandbox Code Playgroud)
结果将显示随时间变化的活动趋势,并突出显示异常繁忙的日子.
在SQL中,操作将是一个简单的操作:
SELECT SUM(filesize), filedate
FROM files
GROUP BY filedate;
Run Code Online (Sandbox Code Playgroud)
现在,这在Perl或Python中可能都很简单,但我真的更喜欢bash shell或awk解决方案.在bash中按日期对文件进行分组似乎特别棘手(特别是如果你不能假设特定的日期格式).总结大小可以在我想的循环中完成,但是有更简单,更优雅的方法吗?
是否存在用于存储定期或重复日期的已发布数据结构?可以处理的东西:
我认为cron内部数据结构可以处理#1,#4,#5(两个规则),也许#2,但我还没有看过它.MS Outlook和其他日历似乎能够处理前五个,但我没有那个源代码.
说我有这个简单的形式:
class ContactForm(forms.Form):
first_name = forms.CharField(required=True)
last_name = forms.CharField(required=True)
Run Code Online (Sandbox Code Playgroud)
我有一个字段的默认值,但没有另一个字段的默认值.所以我这样设置:
default_data = {'first_name','greg'}
form1=ContactForm(default_data)
Run Code Online (Sandbox Code Playgroud)
但是现在当我去显示它时,Django显示一个验证错误,说明需要last_name:
print form1.as_table()
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?由于这不是用户提交的数据,只是我想要预填的数据.
注意: required = False不起作用,因为我确实希望在用户提交数据时需要它.就在我第一次在页面上显示表单时,我没有默认值.
假设我有这个HTML:
<div id="a">
a aa aaa a aa aaa a aa aaa a aa aaa a aa aaa a aa aaa a aa aaa
a aa aaa a aa aaa a aa aaa a aa aaa a aa aaa a aa aaa a aa aaa
a aa aaa a aa aaa a aa aaa a aa aaa a aa aaa a aa aaa a aa aaa
</div>
<div id="b">
b bb bbb b bb bbb b bb bbb b bb …Run Code Online (Sandbox Code Playgroud) 这个很难解释,所以我将尝试使用示例来展示我的意思。请注意,我并不是在问是否可以在一个BREAK语句中使用多个列——我知道可以。
假设我有如下查询:
SELECT invoice_no, invoice_date, vendor, account, amount
FROM invoice
ORDER BY vendor, invoice_no, account
Run Code Online (Sandbox Code Playgroud)
假设结果集是:
INVOICE_NO INVOICE_DATE VENDOR ACCOUNT AMOUNT
---------- ------------ ------- ------- ------
0001 30-JAN-2009 Alpha 1000 50.00
0003 30-JAN-2009 Alpha 1000 125.00
0003 30-JAN-2009 Alpha 3000 33.33
0006 02-FEB-2009 Alpha 2000 40.00
0005 31-JAN-2009 Bravo 1000 40.00
0002 30-JAN-2009 Charlie 2000 120.75
0002 30-JAN-2009 Charlie 3000 5.00
0004 30-JAN-2009 Charlie 1000 900.50
Run Code Online (Sandbox Code Playgroud)
所以你可以看到有的供应商有多张发票,有的发票有多个账户。
要隐藏重复的供应商名称和发票号码,我可以使用 SQL*Plus 的BREAK命令,如下所示:
BREAK ON vendor ON invoice_no
Run Code Online (Sandbox Code Playgroud)
产生这个结果集: …