我是 OpenBSD 的新手。我以前在 Linux 上工作过。我正在寻找可以找到有关当前正在运行的进程的信息的目录。在 Linux 中,我们有 /proc 目录,其中包含整个列表。但是我在 OpenBSD 4.6 中找不到类似的设置。我知道有像 ps、top 和 sysctl 这样的命令,但我想通过 C 代码获取这些信息。
我编写了这个程序,应该以 exitcode 44 退出:
// prog.S
#include <sys/syscall.h>
.text
.globl _start
_start:
subl $8, %esp
pushl $44
pushl $0
movl $SYS_exit, %eax
int $0x80
Run Code Online (Sandbox Code Playgroud)
我编译了
$ cc prog.S -nostdlib -o a.out
Run Code Online (Sandbox Code Playgroud)
并运行
$./a.out
Run Code Online (Sandbox Code Playgroud)
在 FreeBSD 13.0-RELEASE i386 (clang 11.0.1) 上这样做效果很好。事实上,可执行文件运行并且程序的退出代码应该是 44。
但是,在 OpenBSD 7.0 GENERIC.MP#5 i386(clang 版本 11.1.0)和 NetBSD 9.2 i386(gcc 7.5.0)上执行相同操作时,内核拒绝执行代码,并将其传递给 shell,其中课程失败:
openbsd$ ./a.out
./a.out[1]: syntax error: `(' unexpected
Run Code Online (Sandbox Code Playgroud)
奇怪的是,该文件说它是一个 ELF 二进制文件,因此通常应该由内核执行
openbsd$ file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped …Run Code Online (Sandbox Code Playgroud) 有没有人让OpenWorks在OpenBSD下运行?它不是一个官方支持的平台,但其中一个Cincom人告诉我它应该能够在linux兼容模式下运行.你是怎么设置它的?
我已经有Squeak运行没有问题,所以我不是在寻找替代方案.我特别需要为项目运行VisualWorks的Web Velocity.
谢谢,
我目前正在修改一个OpenBSD系统,以便建立自己的防火墙和其他一些东西.
因为这是相当实验性的(我是一个OpenBSD n00b,我已经把我的系统破坏了3到4次),我想知道其他人制作部分或全部文件系统的经验(我特别想到的是/ etc)某些VCS或其他的工作副本.
这是一个好主意吗?
我特别感兴趣的是VCS用户为此做了什么.我正在考虑颠覆,集市和git; 这不是一个共享的存储库,所以我对基本的vcs功能比对distributed-or-not参数更感兴趣.
我也想知道人们发现的想象或实际陷阱.我可以想象保存文件所有权和权限需要仔细考虑!
当然,任何不涉及VCS的替代方法
我正在开发一个需要在 unix 中实现 fork() 的项目。我读过 freeBSD 和 openBSD 源代码,但确实很难理解。有人可以解释一下返回两次的概念吗?我知道一个返回是子进程的 pid,它返回到父进程,另一个返回为零,它返回到子进程。但我无法理解如何实现返回两次的概念......我怎样才能返回两次?预先感谢大家。
我的输入(例如,来自ifconfig run0 scanOpenBSD)有一些用空格分隔的字段,但某些字段本身包含空格(幸运的是,包含空格的此类字段总是用引号引起来)。
我需要区分引号内的空格和分隔符空格。这个想法是用下划线替换引号内的空格。
样本数据:
%cat /tmp/ifconfig_scan | fgrep nwid | cut -f3
nwid Websense chan 6 bssid 00:22:7f:xx:xx:xx 59dB 54M short_preamble,short_slottime
nwid ZyXEL chan 8 bssid cc:5d:4e:xx:xx:xx 5dB 54M privacy,short_slottime
nwid "myTouch 4G Hotspot" chan 11 bssid d8:b3:77:xx:xx:xx 49dB 54M privacy,short_slottime
Run Code Online (Sandbox Code Playgroud)
这最终没有按照我想要的方式处理,因为我还没有用下划线替换引号内的空格:
%cat /tmp/ifconfig_scan | fgrep nwid | cut -f3 |\
cut -s -d ' ' -f 2,4,6,7,8 | sort -n -k4
"myTouch Hotspot" 11 bssid d8:b3:77:xx:xx:xx
ZyXEL 8 cc:5d:4e:xx:xx:xx 5dB 54M
Websense 6 00:22:7f:xx:xx:xx 59dB 54M
Run Code Online (Sandbox Code Playgroud) 我已经挠头一段时间了,找不到让它工作的方法......
我想在我的 OpenBSD 服务器上运行一些 cgi 脚本(用 Python 编写)。由于 OpenBSD 上的网络服务器在监狱中运行,我重新创建了整个文件夹结构(/bin /dev /usr /usr/local/lib 等),但是当我'时仍然收到“500 服务器内部错误”我试图导入一些需要访问 /dev/urandom 设备的 Python 模块。
我已经使用 mknod 创建了设备特殊文件。
ls -la /dev/*random
ls -la /dev/{null,zero}
Run Code Online (Sandbox Code Playgroud)
我得到以下输出
crw-r--r-- 1 root wheel 45, 3 Sep 13 11:09 /dev/arandom
crw-r--r-- 1 root wheel 45, 0 Jul 15 19:02 /dev/random
crw-r--r-- 1 root wheel 45, 1 Jul 15 19:02 /dev/srandom
crw-r--r-- 1 root wheel 45, 2 Jul 15 19:02 /dev/urandom
Run Code Online (Sandbox Code Playgroud)
和
crw-rw-rw- 1 root wheel 2, 2 Sep 16 01:30 /dev/null …Run Code Online (Sandbox Code Playgroud) 所以这个命令基本上是安全地连接到一个Web域来获取我的外部IP地址,这在Linux Debian系统上完美运行,但它在我的OpenBSD系统上无法正常工作.Curl命令工作正常,但是Grep命令有些问题,因为它只是没有抓住卷曲管道到它的IP.
是 - 是不是可以使用OpenBSD?我无法用手册页告诉我..
USERAGENT="Mozilla/4.0"
WEB_LOCATION="https://duckduckgo.com/?q=whats+my+ip"
curl -s --retry 3 --max-time 5 -tlsv1.2 --user-agent $USERAGENT $WEB_LOCATION | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'
Run Code Online (Sandbox Code Playgroud)
*******RESOLVED(Kinda)********
我通过某种原因计算出这种特殊模式:
grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'
Run Code Online (Sandbox Code Playgroud)
没有在OpenBSD上工作,但这个长版本确实如此......
grep -Eo '[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}'
Run Code Online (Sandbox Code Playgroud)
为什么会出现这种情况非常令人困惑,因为第一个搜索模式在我使用的所有Debian Linux版本上都能正常工作!
我最近开始使用 OpenBSD。我想创建简单的即发即弃容器/VM 或其他东西(它应该用作沙箱)。
用户可以上传他的源代码(C++/Java/Perl),它会在服务器(OpenBSD)上编译,如果编译成功,它应该执行这个文件,然后将结果返回到网页。
我如何在 OpenBSD 中提供这个?
另外,我应该使用 chroot,因为 'jail' 将在 6.0 中删除吗?或者还有其他可能在 OpenBSD 中创建“沙箱”吗?