Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答

7
谁有这个unix套接字对的另一端?
我想确定哪个进程具有UNIX套接字的另一端。 具体来说,我要问的是使用创建的一个socketpair(),尽管问题对于任何UNIX套接字都是相同的。 我有一个程序parent创建一个socketpair(AF_UNIX, SOCK_STREAM, 0, fds)和fork()。父进程关闭fds[1]并保持fds[0]通信。孩子做相反的事情close(fds[0]); s=fds[1]。然后孩子exec()的另一个程序child1。两者可以通过此套接字对来回通信。 现在,假设我知道谁parent是谁,但我想弄清楚谁child1是谁。我该怎么做呢? 我可以使用几种工具,但是没有一个可以告诉我哪个过程在套接字的另一端。我努力了: lsof -c progname lsof -c parent -c child1 ls -l /proc/$(pidof server)/fd cat /proc/net/unix 基本上,我可以看到两个插座以及有关它们的所有内容,但无法确定它们已连接。我正在尝试确定父级中的哪个FD与哪个子进程进行通信。


2
如何知道我是否正在使用UEFI引导?
我在搜索,但是没有找到一种明显的方法来知道GRUB是在系统引导中使用UEFI,还是在BIOS兼容模式下使用完整的BIOS。我发现只有Windows方法。GRUB或内核启动日志中是否显示某些信息,显示我使用的是UEFI,EFI还是BIOS?
54 boot  grub2  uefi 

10
缩进后如何在多行中为变量分配字符串值?
问题: 我需要给一个变量赋一个相当长的值。 我脚本的所有行都必须在一定数量的列下。 因此,我尝试使用多个行来分配它。 没有缩进就很简单: VAR="This displays without \ any issues." echo "${VAR}" 结果: This displays without any issues. 但是缩进: VAR="This displays with \ extra spaces." echo "${VAR}" 结果: This displays with extra spaces. 如何在没有这些空格的情况下优雅地分配它?
54 variable 

2
使用extundelete取消删除ext4上刚刚删除的文件
关于extundelete如何尝试删除/var/tmp/test.iso刚刚删除的文件有一个简单的选择吗? (开始以只读方式或类似方式重新安装驱动器不是很重要。我也可以再次重新下载该文件) 我正在寻找一个简单的命令,如果可以快速恢复它,可以尝试。 我知道,可以以只读方式重新安装驱动器:(请参阅如何简单地恢复刚删除的空磁盘上的唯一文件?) 但这在仍然挂载的磁盘上是否也可能以某种方式出现?


4
进程终止时的默认退出代码?
当某个进程被可处理的信号(例如SIGINT或)杀死SIGTERM而不处理该信号时,该进程的退出代码是什么? 对于像这样的无法处理的信号SIGKILL呢? 据我所知,杀死一个SIGINT可能导致退出代码的进程130,但这会因内核或外壳实现而有所不同吗? $ cat myScript #!/bin/bash sleep 5 $ ./myScript <ctrl-c here> $ echo $? 130 我不确定如何测试其他信号... $ ./myScript & $ killall myScript $ echo $? 0 # duh, that's the exit code of killall $ killall -9 myScript $ echo $? 0 # same problem

6
用下划线连接两个变量
我需要连接两个变量来创建具有下划线的文件名。让我们调用变量,$FILENAME并$EXTENSION从文件中读取文件名。 FILENAME=Hello EXTENSION=WORLD.txt 现在... 我尝试了以下操作,但未成功: NAME=${FILENAME}_$EXTENSION NAME=${FILENAME}'_'$EXTENSION NAME=$FILENAME\\_$EXTENSION 我总是得到某种奇怪的输出。通常下划线优先。 我需要它 echo $NAME Hello_WORLD.txt

7
为什么安装需要root特权?
为什么Linux要求用户必须是root用户/使用sudo /每次安装都经过特定授权才能安装某些东西?似乎是否允许用户安装某些东西的决定应该基于他们对源卷/网络共享和安装点的访问权限。非root用户挂载的两个用途是将文件系统映像挂载到用户拥有的方向,并将网络共享挂载到用户拥有的目录。似乎如果用户可以控制安装方程式的两侧,那么一切都应该很酷。 澄清访问限制: 我认为我应该能够装载用户可以访问的任何装载点,否则该装载点将是用户的所有者。 例如,在我的计算机上,/ dev / sda1由拥有权限的root用户和组磁盘拥有brw-rw----。因此,非root用户不能弄乱/ dev / sda1,并且显然mount不应允许他们挂载它。但是,如果用户拥有/home/my_user/my_imagefile.img和挂载点/ home / my_user / my_image /,为什么他们不能使用以下命令在该挂载点上挂载该映像文件: mount /home/my_user/my_imagefile.img /home/my_user/my_image/ -o loop 正如kormac指出的那样,存在一个suid问题。因此,必须添加一些限制来防止suid成为问题以及潜在的其他问题。也许这样做的一种方法是使操作系统将所有文件视为属于执行挂载的用户。但是对于简单的读/写/执行,我不明白为什么这会是一个问题。 用例: 我在实验室中有一个帐户,我的家庭空间限制为8GB。这很小,很烦人。我想从我的个人服务器上挂载nfs卷,以实质上增加我所拥有的空间。但是,由于Linux不允许这种事情,所以我只能将来回传输文件的速度限制在8GB以下。


5
通过第一次出现的分隔符分割字符串
我有以下格式的字符串 id;some text here with possible ; inside 并希望在第一次出现时将其拆分为2个字符串;。因此,应为:id和some text here with possible ; inside 我知道如何分割字符串(例如,使用cut -d ';' -f1),但是由于我;位于左侧,因此它将分割为更多部分。

6
使用rsync在目录之间移动(而不是复制)文件?
我一直在使用rsync复制文件一段时间。我的理解是,当要传输的某些文件已经在目标目录中时,仅传输增量差异(即“增量”),rsync比cp更快。 如果这是正确的,那么使用rsync移动文件夹A的内容(例如,文件夹B且B为空)是否有任何好处? 文件夹A的数据接近1TB(其中包含数百万个文件)。传输将通过本地网络完成(A和B在不同的文件系统上,都安装在超级计算机上,例如A是NFS,B是有光泽的)。 除此之外,我应该使用什么标志来要求rsync将文件从A移动(而不是复制)到B(即,在传输成功完成后删除A)?
54 rsync  cp 

4
Linux:根据参数终止进程
如何根据命令行参数终止进程? killall,,pgrep并且pkill似乎仅基于进程名称起作用。 我需要它能够区分在Java虚拟机中运行的许多应用程序java,所有虚拟机的进程名在哪里,并且可以通过查看命令行参数来找到实际的应用程序名。 可以使用手动完成此操作,ps aux | grep myapp.jar然后从输出中手动终止pid,但是我想使用一条命令来自动执行等效操作。
54 linux  kill 

3
如何使环境变量在shell脚本中“导出”?
我有多个Amazon EC2帐户,并希望能够$EC2_HOME使用脚本快速切换变量,例如。 我有一个这样的shell脚本设置: #!/bin/sh export EC2_HOME=/home/me/.ec2 echo $EC2_HOME 当我运行脚本时,我知道EC2_HOME已经设置好了,但是我认为使用export脚本会使变量在脚本完成后继续存在。它不会,因为运行echo $EC_HOME不会显示任何内容。 我知道这一定是非常基本的Linux脚本知识,但是我不知道。我尝试寻找相关问题时没有运气-如果这是重复的话,我深表歉意。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.