小编phu*_*clv的帖子

在多个平台上找到正确的 tmp 目录

I have a script that needs to create temporary files for its work, and clean up after itself. My question is about finding the right base directory for the temporary files.

The script needs to work on multiple platforms: Git Bash (Windows), Solaris, Linux, OSX. On each platform, the preferred temp directory is expressed differently:

  • Windows: %TMP% (and possibly %TEMP%)
  • OSX: $TMPDIR
  • Linux, UNIX: supposed to be $TMPDIR but appears to be unset on multiple systems I tried

So …

directory shell-script tmp

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

为什么不符合 GNU/Linux SUS v3+?

我正在寻找有关为什么 GNU/Linux 当前不符合SUS(单一 UNIX 规范)v3 甚至更好的 SUS v4 的具体细节?

它错过了哪些应用程序 API 和用户实用程序,或者以非 SUS 兼容的方式实现了哪些应用程序 API 和用户实用程序?

linux standard

23
推荐指数
1
解决办法
3406
查看次数

是否有经过 UNIX 认证的 Linux 发行版?

是否有通过Single UNIX Specification认证的 Linux 发行版?大多数发行版未获得认证的主要原因是什么?

linux standard posix

11
推荐指数
2
解决办法
4867
查看次数

在 32 位 Ubuntu 系统上运行 64 位应用程序

我看到的所有问题都是指在 64 位系统中运行 32 位应用程序。

我正在运行 32 位 Ubuntu 12.04(实际上是基于它的基本 OS Luna)并且我正在尝试运行一个拒绝打开的 64 位应用程序。跑步:

./64bit_app.run
Run Code Online (Sandbox Code Playgroud)

64bit_app.run我尝试运行的 64 位应用程序在哪里)导致:

bash: ./64bit_app.run: no se puede ejecutar el fichero binario
Run Code Online (Sandbox Code Playgroud)

转换为“无法执行/运行/打开二进制文件”。

我应该能够运行它吗?是否可以在 32 位系统中运行 64 位应用程序?如果是这样,如何?

linux 64bit ubuntu 32bit

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

RAM 替代 SSD 上的交换分区或交换文件

我的 Debian 伸展系统有很多内存。目前,它在 SSD 上使用加密交换分区,但在正常情况下,我不希望内存不足导致使用它。

但是根据 Snakedoc 的评论,完全关闭交换是一个坏主意:

请注意,完全禁用交换永远不会“安全”。即使系统具有 96+ GB 的内存,运行至少 512MB 的交换也是一个很好的安全措施。如果某些东西运行异常并意外吃掉所有 ram,它会让您的系统有时间杀死不必要的进程......禁用交换的替代方法是内核恐慌。

如何安全地永久关闭交换并回收空间?(在 Debian Jessie 上)

所以我想我可能会保留一些内存,比如 0.5G 用于“RAM 磁盘”,并将其用作交换文件,将写入保存到 SSD。

我怎么做?出于某种原因,这是一个坏主意吗?

swap ram ramdisk

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

为什么目录设置了粘滞位而没有可执行位?

在Ubuntu 14.04,列出该目录中的内容/var/spool/cronls -l提供中的目录下面的权限(无关柱剪断):

drwxrwx--T daemon daemon atjobs
drwxrwx--T daemon daemon atspool
drwx-wx--T root crontab crontabs
Run Code Online (Sandbox Code Playgroud)

在没有可执行位的目录上设置粘性位有什么目的?

ubuntu permissions directory-structure sticky-bit

8
推荐指数
2
解决办法
5755
查看次数

为什么 bash 仍然保留带有擦除的重复行?

我的 ~/.bashrc 中有以下行

export HISTCONTROL=ignoreboth:erasedups
Run Code Online (Sandbox Code Playgroud)

但是,每当我运行somecommand它时,它都会.bash_history像这样添加重复的命令

grep -w somecommand ~/.bash_history
somecommand
somecommand abc xyz
somecommand 123
somecommand
...
Run Code Online (Sandbox Code Playgroud)

为什么会这样以及如何预防?

bash command-history

6
推荐指数
2
解决办法
1742
查看次数

为什么流程不是预期流程组的一部分?

我正在学习 Linux 中进程、进程组(和会话)之间的关系。

我编译了以下程序...

#include <iostream>
#include <ctime>
#include <unistd.h>

int main( int argc, char* argv[] )
{
  char buf[128];
  time_t now;
  struct tm* tm_now;
  while ( true )
  {
    time( &now );
    tm_now = localtime( &now );
    strftime( buf, sizeof(buf), "%a, %d %b %Y %T %z", tm_now );
    std::cout << buf << std::endl;
    sleep(5);
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

...a.out作为后台进程运行它,就像这样......

a.out &
Run Code Online (Sandbox Code Playgroud)

这个网站说以下...

每个进程都是唯一进程组的成员,由其进程组 ID 标识。(创建进程时,它成为其父进程组的成员。)按照惯例,进程组的进程组 ID 等于进程组的第一个成员的进程 ID,称为进程组组长。

根据我的阅读,第一句与括号内的内容冲突:进程是唯一进程组的成员,还是其父进程组成员?

我试图调查 …

linux process process-groups

5
推荐指数
2
解决办法
1422
查看次数

将数字范围转换为文本文件中完整的数字序列列表

我的问题与相反。

我的输入文件是位置和序列号的列表(如库存列表)。一些序列号被列为范围(例如,11-17),我需要将每个范围转换为序列号的完整列表(例如,11、12、13、14、15、16、17)。

输入格式是这样的:

Main Street # 12770-12786, 12980, 13012-13013, 13068, 13093, 13115, 13122, 13137-13156, 13548-13557, 13954-13969, 14471-14475, 14500-14508

Madison Ave # 14071-14074, 14105-14128, 14131-14140, 14603-14612
Run Code Online (Sandbox Code Playgroud)

每个位置由一个空行分隔。每个位置都以名称开头。到目前为止,我只看到包含[a-zA-Z -]大小写字母、空格和破折号的名称。名称从新行的第 0 列开始,后跟一个空格、一个散列和一个空格:#

对于格式中的每个范围nnnn-mmmm,我需要生成一个逗号(和空格)分隔的顺序值列表,例如n1, n2, n3, n4, n5. 例如,Madison Ave(上图)的库存需要像这样列出:

Madison Ave # 14071, 14072, 14073, 14074, 14105, 14106, 14107, etc.
Run Code Online (Sandbox Code Playgroud)

输入是一个文本文件,输出可以是一个文本文件。我想在 bash 中进行处理,但我想我也可以使用 Python。

我知道一些可能的解决方案,例如:

  1. 使用这样的正则表达式模式使用 grep 查找范围:

    grep -o -P '\d+-\d+'<input_file>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 假设第一个结果是范围 4243-4263

    echo {4243-4263} | sed 's/-/../'
    
    Run Code Online (Sandbox Code Playgroud)
  3. 对上述结果使用 for 循环,如下所示:

    for …
    Run Code Online (Sandbox Code Playgroud)

shell-script

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

如何翻译 Unicode 字符?

我正在尝试将一些字符转换为这样的全角形式

tr 'abcdefghijklmnopqrstuvwxyz' '??????????????????????????'
Run Code Online (Sandbox Code Playgroud)

但是,它不起作用。我进行了搜索,结果发现tr不支持 UTF-8。所以基于那个问题的答案,我尝试使用 perl

tr 'abcdefghijklmnopqrstuvwxyz' '??????????????????????????'
Run Code Online (Sandbox Code Playgroud)

但仍然没有帮助。我尝试了更简单的版本

perl -C -pe 'tr/abcdefghijklmnopqrstuvwxyz/??????????????????????????/'
Run Code Online (Sandbox Code Playgroud)

似乎 perl 仍然将多字节 UTF-8 字符视为字节

如何正确转换这些字符?

character-encoding unicode tr

2
推荐指数
1
解决办法
970
查看次数