小编Per*_*-lk的帖子

联机帮助页中的“凌晨 3 点”部分是什么意思?

我偶然发现了这个。

我只是输入man fork,而不是显示系统调用文档,而是向我显示了一个awk扩展名,但是,部分页码是3am,而不仅仅是3.

是什么3am意思?

man

17
推荐指数
1
解决办法
3751
查看次数

加载用户桌面时如何从脚本中检测?

我有一个守护进程,在 bash 中实现并通过cron@reboot选项运行,它显示桌面处于非活动状态。脚本如下(为了测试目的,时间很短):

#!/bin/bash
P_STATE=0
while :
do
    sleep 5
    if [ $P_STATE == 0 ]; then
         [ `xprintidle` -ge 25000 ] && P_STATE=1 && wmctrl -k on
    else
         [ `xprintidle` -le 25000 ] && P_STATE=0
done
Run Code Online (Sandbox Code Playgroud)

问题:例如,如果用户仍然在登录屏幕中,xprintidle并且wmctrl由于桌面尚未加载而失败。为了避免这种情况,我将下一行放在脚本的开头:

while:
do
    sleep 10s
    [ -n `who | grep "$USER"` ] && break
done
Run Code Online (Sandbox Code Playgroud)

因此,脚本等待用户(在 crontab 文件中将 USER 变量设置为我的用户名)被记录。但是,如果用户开始,例如,终端会话(而不是像 KDE 或 GNOME 这样的图形会话),脚本也会继续。

如何确定用户是否已经处于能够“显示桌面模式”的“图形”会话中?此外,我如何确保“图形”会话已完全加载并且不在加载过程中或类似的东西?

我的解决方案: 我的(非正式)解决方案是在主循环中添加以下grep行:

WAIT_TIME=180

while:
do
    sleep $WAIT_TIME

    [ …
Run Code Online (Sandbox Code Playgroud)

scripting bash desktop session

11
推荐指数
1
解决办法
2455
查看次数

了解不同上下文中的环境变量

试图了解 Linux(具体是 Ubuntu 13.04)中环境的行为,我发现在不同的情况下,在不同的上下文中使用或定义了设置环境变量。例如,如果我检查, locale,我会得到:

$ locale
LANG=en_US.UTF-8
LANGUAGE=es_ES:es_HN:es_EC:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=es_ES.UTF-8
// more output
Run Code Online (Sandbox Code Playgroud)

但是,如果我发现,例如,LC_CTYPE使用env | grep "LC_CTYPE",它不会发送任何输出。一般来说,locale向我展示了 13 个LC_*变量,但env只有 9 个:

$ locale | grep "LC_*" | wc -l
13
$ env | grep "LC_*" | wc -l
9
Run Code Online (Sandbox Code Playgroud)

其他具有不同“性质”的变量是PS1. 例如:

$ env | grep "PS1" # No output, but...
$ set | grep "PS1" | head -n 1
PS1=$'\\[\\033[1;33m\\][\\t][\\W]\342\230\233\\[\\033[0m\\] '
Run Code Online (Sandbox Code Playgroud)

当然,PS1在我当前的环境中是一个定义明确的变量,因为我看到我的提示相应地改变了。

在其他上下文中查看 …

shell process environment-variables locale

7
推荐指数
1
解决办法
2765
查看次数

手册页、系统调用和 libc

为什么epoll_create没有被列为库函数(手册页,第 3 节),但是accept却被列为库函数?虽然这两个函数都是由内核系统调用提供的libc并且都引用内核系统调用?

我知道“为什么”问题通常不受欢迎,但这是我要求更好地理解这些概念之间的关系以及向第 2 和/或第 3 节添加某些内容的标准之间的关系以及 libc 之间的关系的方式。和系统调用(因为毕竟 libc 是为 C 程序实现与内核本身的接口的人。因此,据我了解,所有系统调用都是库函数,因为 libc 库提供了所有这些函数;或者有例外吗?我的解释?)。

system-calls glibc linux-kernel

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