小编mga*_*lgs的帖子

如何在shell管道中使用`jq`?

我似乎无法jq在shell管道中"正常"行事.例如:

$ curl -s https://api.github.com/users/octocat/repos | jq | cat
Run Code Online (Sandbox Code Playgroud)

结果在jq简单的打印出它的帮助文本*.如果我尝试将jq输出重定向到文件,会发生同样的事情:

$ curl -s https://api.github.com/users/octocat/repos | jq > /tmp/stuff.json
Run Code Online (Sandbox Code Playgroud)

jq如果它确定它不是从tty运行的话,是故意拯救?如何防止此行为以便我可以jq在管道中使用?


*(我意识到这个例子包含了无用用途 ;它仅用于说明目的)

shell pipe jq

185
推荐指数
2
解决办法
7万
查看次数

如何更改docker镜像安装目录?

据我所知,docker图像是/var/lib/docker在拉动时安装的.有没有办法改变这个位置,比如装入卷/mnt

docker

170
推荐指数
13
解决办法
11万
查看次数

使用X""对空字符串进行Bash测试

我知道我可以在Bash中测试一个空字符串,-z如下所示:

if [[ -z $myvar ]]; then do_stuff; fi
Run Code Online (Sandbox Code Playgroud)

但我看到很多代码写得像:

if [[ X"" = X"$myvar" ]]; then do_stuff; fi
Run Code Online (Sandbox Code Playgroud)

这种方法更便携吗?它只是在日子之前的历史残余-z吗?它适用于POSIX shell(即使我已经看到它用于脚本定位bash)?准备好我的历史/可移植性课程.


在服务器故障上询问的问题是如何确定bash变量是否为空?但没有人提供解释为什么你看到代码与X""东西.

string bash shell posix

75
推荐指数
2
解决办法
7万
查看次数

emacs lisp以编程方式使用前缀参数调用函数

我想从一些elisp代码中调用一个函数,就好像我用前缀参数以交互方式调用它一样.具体来说,我想用前缀调用grep.

我最接近它的工作是使用execute-extended-command,但仍然要求我输入我想用前缀调用的命令...

;; calls command with a prefix, but I have to type the command to be called...
(global-set-key (kbd "C-c m g")
                (lambda () (interactive)
                  (execute-extended-command t)))
Run Code Online (Sandbox Code Playgroud)

该文件说,execute-extended-command使用command-execute执行从迷你缓冲区读取命令,但我一直没能使其工作:

;; doesn't call with prefix...
(global-set-key (kbd "C-c m g")
                (lambda () (interactive)
                  (command-execute 'grep t [t] t)))
Run Code Online (Sandbox Code Playgroud)

有没有办法以非交互方式调用带前缀的函数?

emacs elisp

36
推荐指数
2
解决办法
6134
查看次数

如何在C(gcc)中获取自定义ELF部分的起始和结束地址?

我已经看到使用gcc __section__属性(特别是在Linux内核中)将数据(通常是函数指针)收集到自定义ELF部分中.如何检索和使用这些自定义部分中的"东西"?

c gcc elf

15
推荐指数
3
解决办法
1万
查看次数

刷新gnus中的摘要缓冲区

当我正在阅读消息时,gnus我希望在消息*Summary*到达时在我的缓冲区中动态显示新消息.目前我必须回到*Group*缓冲区,然后INBOX再次选择...有没有办法刷新*Summary*缓冲区而不回去*Group*

emacs gnus

13
推荐指数
2
解决办法
2171
查看次数

clearcase - 更新和rebase之间的区别

我最近开始学习ClearCase(我来自git和svn的背景 - 我非常想念他们:))并且一直在咀嚼这个:在快照视图中,有什么区别更新和rebase?

我知道存在差异(老实说,我已经开始完全忽略"更新",因为它似乎永远不会做我想要的(这是为了降低其他开发人员最近提供的更改(git pull,svn update))),I只是看不出有什么不同(并且cc文档对此事的帮助不大(奖励积分:任何指向好cc资源的指针(例如类似于svn-book或git手册页))).是的,这是一个句子,半打括注.

version-control clearcase

10
推荐指数
3
解决办法
2万
查看次数

使用emacs和gnus在引用的回复中包括原始邮件的日期和时间

当我使用其中一个*-with-original函数在emacs中使用gnus(message)回复消息时,我得到类似于此的引用:

"Doe, John" <johndoe@example.com> writes:

> Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
> Consectetuer adipiscing elit. Lorem ipsum dolor sit
> amet, consectetuer adipiscing elit.
Run Code Online (Sandbox Code Playgroud)

我希望gnus的行为与其他包含原始消息的日期和时间的MUA一样,例如:

On Thu 11 October 2012 09:20:12 "Doe, John" <johndoe@example.com> wrote:

> Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
> Consectetuer adipiscing elit. Lorem ipsum dolor sit
> amet, consectetuer adipiscing elit.
Run Code Online (Sandbox Code Playgroud)

有没有办法改变报价方式来实现这个目标?


更新2:我现在使用更简单的解决方案,来自kindahero的回答:

(setq message-citation-line-function 'message-insert-formatted-citation-line)
(setq message-citation-line-format "On %a, %b %d %Y at …
Run Code Online (Sandbox Code Playgroud)

emacs gnus

8
推荐指数
1
解决办法
879
查看次数

Android应用程序缺少Android Studio中的调试信息

我正在尝试调试我正在使用Android Studio编写的应用程序,但我似乎无法从Android Studio的"调试"视图中获取任何有用的调试信息.我正在使用看起来很糟糕的"Debug"图标启动我的应用程序,但是"Debug"视图没有任何有用的东西(例如,我的应用程序没有堆栈帧):

截图

即使我的应用程序崩溃,我也没有得到任何有用的信息.我记得,ADT插件会自动让你掉线导致崩溃.

我是否需要做任何其他事情才能使我的应用程序在Android Studio中"可调试"?我也试过强迫android:debuggable="true"我的AndroidManifest.xml,但无济于事.Android Studio似乎附加到正在运行的进程(应用程序在首次启动时显示"附加到调试器"消息几秒钟).

debugging android android-studio

7
推荐指数
2
解决办法
4470
查看次数

检查任务是否正在进行 celery 热关闭

长话短说

有没有办法判断我们的芹菜工人是否正在进入热关机状态?换句话说,我可以检查是否有待SIGTERM处理的情况吗?我有一个可以自行重新安排的任务,但如果有待关闭的任务,我想避免重新安排自己,以避免阻碍热关闭。像这样的东西:

if not self.shutdown_pending():
    self.retry(countdown=5, max_retries=3)
Run Code Online (Sandbox Code Playgroud)

实际上,除了重新安排工作之外,我希望能够在获得工作许可后立即彻底摆脱当前的工作,SIGTERM以便我可以在新的代码部署中尽快重新启动我的工作人员:

@app.task(bind=True)
def my_work_task(self):
    work = get_work()
    for item in work:
        if self.shutdown_pending():
            logger.info("Shutdown detected. Bailing.")
            return
        item.process()
Run Code Online (Sandbox Code Playgroud)

背景

我有一项任务需要不同的时间(从几秒到几分钟)。我最初使用的是每分钟 celery-beat 计划来调用该任务,但如果我只完成少量工作,例如只需要 10 秒即可完成,那么我想立即重新调用该任务次,以避免等待 50 秒等待下一个 celery 节拍到来,因为新工作很可能会在该时间段内可用。

所有这些都是为了最大限度地减少正在处理的工作项目的延迟。我想避免工作人员坐在那儿无所事事的 50 秒时间,因为在这段时间里可能有一些工作可以完成。请注意,工作会根据数据库中项目的“过期”而变得“准备就绪”,这就是为什么我使用 celerybeat 在可用时将其清理掉,而不是直接触发任务。

我的任务看起来是这样的:

@app.task(bind=True)
def my_work_task(self):
    work = get_work()
    do_some_work(work)
    # if this was just a short bit of work reschedule ourselves
    # immediately to avoid wasting time waiting for the
    # next celery beat.
    if len(work) < …
Run Code Online (Sandbox Code Playgroud)

python celery

6
推荐指数
1
解决办法
3930
查看次数

标签 统计

emacs ×3

gnus ×2

shell ×2

android ×1

android-studio ×1

bash ×1

c ×1

celery ×1

clearcase ×1

debugging ×1

docker ×1

elf ×1

elisp ×1

gcc ×1

jq ×1

pipe ×1

posix ×1

python ×1

string ×1

version-control ×1