小编Rog*_*ach的帖子

如何将终端附加到分离的进程?

我已经从我的终端分离了一个进程,如下所示:

$ process &
Run Code Online (Sandbox Code Playgroud)

该终端现已长期关闭,但process仍在运行,我想向该进程的标准输入发送一些命令。那可能吗?

linux command-line shell process terminal

128
推荐指数
5
解决办法
19万
查看次数

扩展全局模式的最佳方法?

我需要以编程方式将 glob 模式(如../smth*/*, 或/etc/cron*/)扩展到文件列表中。最好的方法是什么?

bash wildcards

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

是否可以在 Gnome 中检索活动窗口进程/标题?

我需要一个解决方案来获取 Gnome 2 桌面上的当前活动(聚焦)窗口信息。我最感兴趣的是运行该窗口和窗口标题的过程。

是否可以?

解决方案:

获取窗口标题:

xwininfo -root -children | grep $(printf '%x\n' $(xdotool getwindowfocus)) | grep -oEi '"[^"]+"' | head -1
Run Code Online (Sandbox Code Playgroud)

获取进程名称:

ps -e | grep $(xdotool getwindowpid $(xdotool getwindowfocus)) | grep -v grep | awk '{print $4}'
Run Code Online (Sandbox Code Playgroud)

或者:

cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm
Run Code Online (Sandbox Code Playgroud)

gnome gui window

42
推荐指数
5
解决办法
4万
查看次数

逐行拆分文件并控制生成的文件扩展名

有一个标准的文件分割命令——split。

例如,如果我想将一个单词文件拆分为 10000 行的几个块,我可以使用:

split -dl 10000 words wrd
Run Code Online (Sandbox Code Playgroud)

它会生成几个格式为 wrd.01、wrd.02 等的文件。

但我想为这些文件指定一个特定的扩展名——例如,我想获得 wtd.01.txt、wrd.02.txt 文件。

有没有办法做到这一点?

shell filenames split

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

并发写入命名管道的保证是什么?

例如,我创建了一个命名管道,如下所示:

mknod myPipe p
Run Code Online (Sandbox Code Playgroud)

我从某个进程(例如,某个服务器)中读取了它。例如,我使用了尾巴:

tail -f myPipe
Run Code Online (Sandbox Code Playgroud)

如果多个客户端进程将一些消息写入其中(例如,echo "msg" >> myPipe,消息是否有可能交错,如下所示:

 <beginning of message1><message2><ending of message1>
Run Code Online (Sandbox Code Playgroud)

或者写入命名管道的过程是原子的?

linux pipe

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

有没有办法锁定命令行?

例如,在X session中,我可以使用Ctrl- Alt-L来锁定屏幕,因此它会要求密码解锁并防止有人弄乱我的电脑。

但是,如果我在其中一个 tty 上有一个开放的终端会话(例如,我可以使用Ctrl- Alt-访问F1它),那么它不会被锁定,并且有人仍然可以使用它来造成一些伤害。有没有办法“锁定”该命令行(可能有一些后台进程在其中运行)?

terminal screen-lock

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

如何在目录上递归设置权限(启用 ACL)?

例如,我想给我的同事写访问某个目录的权限。假设其中的子目录具有访问权限 775,文件 664,并且目录中还有一些可执行文件 - 775。

现在我想添加写权限。使用 chmod,我可以尝试类似

chmod o+w -R mydir/
Run Code Online (Sandbox Code Playgroud)

但这并不酷,因为我不想让 dir 成为世界可写的 - 我只想授予某些用户访问权限,所以我想使用 ACL。但是有没有一种简单的方法来设置这些权限?在我看来,我需要分别处理至少三种情况(目录、文件、可执行文件):

find -type d -exec setfacl -m u:colleague:rwx {} \;
find -type f -executable -exec setfacl -m u:colleague:rwx {} \;
find -type f \! -executable -exec setfacl -m u:colleague:rw {} \;
Run Code Online (Sandbox Code Playgroud)

对于这样一个简单的任务,似乎有相当多的代码行。有没有更好的办法?

linux bash acl permissions

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

为什么 rsync 尝试复制已经是最新的文件?

我在本地机器和远程机器上有两个相同的文件。它们的大小相等,并且本地计算机上的文件比远程计算机上的文件新 - 但 rsync 仍会尝试复制该文件。

我调用 rsync 如下:

rsync -nv -e "ssh -p 2222" user@host:/data/file.fif data/file.fif
Run Code Online (Sandbox Code Playgroud)

(如果我不使用-n选项,它会启动复制操作)

Rsync 文档明确指出它不应该发生:

Rsync  finds files that need to be transferred using a "quick check" algorithm (by default) that looks for files that have changed in size or in last-modified time.
Run Code Online (Sandbox Code Playgroud)

输出stat

# remote file
  File: `data/fif/Skovorodko_Olga_45_raw.fif'
  Size: 1137551966  Blocks: 2221784    IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 286338      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1037/  platon)   Gid: ( …
Run Code Online (Sandbox Code Playgroud)

rsync

26
推荐指数
1
解决办法
4万
查看次数

如何将端口从一台机器转发到另一台机器?

考虑以下情况:

在我家里,我有一个路由器(连接到互联网)、服务器(S)和我的主机(M)。S 可从 Internet 访问(它具有静态 IP),并且 24/7 全天候运行,而 M 则不然。

有时,我想让一些应用程序(它侦听 M 上的某个端口,例如 8888)可以从外部 Internet 访问。

为此,我想在 S (2222) 上设置一些端口以转发到 M 的端口 8888,以便任何访问 S:2222 的人都感觉他正在访问 M:8888。

我尝试使用 ssh 端口转发,我最好的尝试如下:

ssh -L 2222:M:8888 -N M
Run Code Online (Sandbox Code Playgroud)

但这仅允许我从服务器本身访问 2222 端口,而不能从其他机器访问。

Is there some way to do it properly? Preferably, I'd like it to be a simple command, which I would be able to start and shut down with ^C when I don't need that forwarding anymore.

linux port-forwarding

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

如何在bash中以空分隔的输入做`head`和`tail`?

find命令可以将文件名输出为空分隔的字符串(如果-print0提供),并且xargs可以在-0打开选项的情况下使用它们。但是在两者之间,很难对文件进行操作的该集合-sort命令有-z开关,这使得它可能对这些文件进行排序,但headtail没有他们。

我该怎么做head,并tail在一个方便的方式与空分隔的投入?(我总是可以创建一个简短而缓慢的 ruby​​ 脚本,但我希望可以有更好的方法)

find xargs tail text-processing head

19
推荐指数
1
解决办法
3808
查看次数