Articles of pipe理员

AWS EC2 Linux上的Web2Py

我在亚马逊AWS EC2上有一个实例运行Linux,仔细按照Amazon提供的说明进行操作: 设置在AWS上托pipeWeb应用程序 。 我已经build立了亚马逊提供的文档中提到的安全组。 默认安全组具有打开的所有端口上的所有通信,所有协议。 除了上面的安全规则之外,我还在端口22上设置了SSH,然后使用CyberDuck (一个很棒的FTP应用程序),将Web2Py源代码上传到AWS的一个名为web2py的文件夹中。 在成功将源代码FTP到这个web2py文件夹后,我使用terminal(在本地Mac上)将my-keys-file.pem写入AWS机器: ssh -i my-keys-file.pem ec2-user@ec2-xx-xx-xx-xx.compute-1.amazonaws.com (其中xx是公共DNS中的数字,因为它们出现在EC2页面上的实例中) 然后我检查了我的AWS实例是否安装了python,它是否有。 因此,我开始安装Web2Py。 python2.6 web2py.py password = pwd 它警告说GUI不可用,因为Tlk库没有安装,但Massimo在这里说( http://comments.gmane.org/gmane.comp.python.web2py/129181 )它并不重要。 运行Web2Py …. 如果我尝试: python web2py.py -a pwd -i 0.0.0.0 -p 80 它说: there is an error with the Rocket Server with that specific port (used by another process that is not […]

更改Apacheconfiguration目录?

如何从以下位置更改configuration目录: 在/ etc / apache2的 至 /数据/configuration/ apache2的 ? (我将在GlusterFS中使用它来使configuration在群集中同步) 非常感谢。

如何将程序变成deamon程序

我有时会写这样的程序来处理离线数据: load_model() //this may cost lots of time while(cin >> inputs) { result = process_input(inputs) cout << result } release_model() 这工作正常,如果我只需要处理离线数据。 但是,当数据一个接一个的时候我就陷入了困境。 由于每次都需要加载模型,这很耗时。 我想知道是否有任何方法将此程序转换成一个服务,而无需修改程序本身。 例如,我可以将cin和coutredirect到两个命名pipe道: program < namedpipe_in > namedpipe_out 我可以像这样把input放到namedpipe_in中 cat input > namedpipe_in 并在另一个pipe道中读取结果: cat namedpipe_out 但是,这个解决scheme是行不通的,因为一旦我把一些东西给了namedpipe_in,cat操作之后pipe道就会closures,程序退出。 我的问题是如何解决这个问题,使pipe道看起来更像是一个队列,而不是一个内存缓冲区。 感谢您的阅读时间。

在C中使用具有dynamic分配variables的pipe道和结构

我正在写一个程序,需要从父进程传递一个matrix到它的孩子(这就是为什么我使用fork()指令)。 我刚刚阅读了这个,并且自己解决了这个问题,但我仍然不明白如何使用read()和write()指令来创build到目前为止所创build的pipe道。 我知道这些指令写了一系列的字节,但我不确定如何使用它们的结构或dynamic分配的variables(如matrix)。 这里是我用来testing的代码(注意我所提的评论): #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/wait.h> // Structure definition (Matrix) typedef struct { int **mat; int rows; int cols; } Matrix; int main() { // Create the pipe int file_desc[2]; if (pipe(file_desc) != 0) exit(1); // Create two processes if (fork() == 0) { /** Instructions for the child […]

获取pipe道利用率?

这被标记为回答,但是如果有人知道可以做到这一点的类似fstat的系统调用,我很乐意听到。 我正在处理一些通过命名pipe道进行通信的应用程序(由于传统原因需要)。 一个pipe道有一个固定的容量(65536字节是Linux的默认值),当它满的时候,块写入,直到有足够的空间可用。 这意味着消费者速度的减慢会阻止更快的生产者。 我希望能够做的是定期监测pipe道的利用率。 是否有可能获得pipe道的数据大小(尚未从pipe道读取数据的大小)? fstat总是返回0的大小,预期的行为根据手册页。 是否有符合POSIX标准的方法获取pipe道容量? 显然,fcntl可以做到这一点,因为Linux 2.6.35。 但是,这需要能够在早期版本的Linux上运行。

我将如何主持deb包?

我目前正在开发一个github项目,主要专注于用Java编写的windows用户。 Install4j允许简单的.deb / .rpm等软件包转换…我们可以在下载方面分辨.deb,但是前一段时间看gitlab的时候,我看到Gitlab使用packagecloud.io作为一个托pipe为他们的软件包提供服务(使用他们自己的域名 ),所以他们可以使用apt-get进行更新。 我的问题是,如果有一个免费的服务,就像packagecloud.io(不是启动板或类似的baazar和高级的东西),可以托pipe在我们自己的服务器或公共服务器上。 或者,如果有甚至是我们可以在我们自己的服务器上使用的packagecloud.io的可下载版本。

数据报pipe道可以在Linux?

我正在尝试为我的Linux守护进程编写一些IPC机制来与其他进程通信。 我一直在看pipe道,因为它比sockets更可靠。 但现在我有一个问题,是否可以通过pipe道数据报连接? 目前我正在做这样的事情(清除error handling): mkfifo("path/to/named/pipe1", 0660); int ret_fd = open("path/to/named/pipe1", O_RDONLY | O_NONBLOCK); 对于套接字,我可以这样做: sockaddr_un sock; sock.sun_family = AF_UNIX; sprintf(sock.sun_path, "path/to/named/pipe1"); unlink(sock.sun_path); int ret_fd = socket(AF_UNIX, SOCK_DGRAM | SOCK_NONBLOCK | SOCK_CLOEXEC, 0); //maybe SOCK_SEQPACKET is better/more reliable bind(ret_fd, (sockaddr*)(&sock), sizeof(sock)); 为了说明这一点,我主要关心的是消息边界,以确保在得到信号读取和阅读时获得完整的数据包。

如何“注入”行到这里文档redirect?

我有一个BASH函数execute ,它通过SSHbuild立一个连接到一台机器,并执行通过这里docredirect提供的一堆命令。 这很好。 有没有办法注入一些命令到redirect? 我想在do_something之前总是运行prepare_something 。 function execute() { ssh user@host /bin/bash } execute << EOF do_something EOF

如何在一个cgroup中的多个块设备上configurationI / O限制?

我已经build立我的系统通过cgroup-bin软件包使用cgroups,其中包括几个很好的工具来安装和configurationcgroup子系统。 在我的/etc/cgconfig.conf ,我有一个如下所示的块: group limitio { blkio { blkio.throttle.read_bps_device = "<maj:min> 10485760"; } } 这样可行。 但是,我有多个设备要限制I / O。 所以,我试图列出他们与几个不同的分隔符,但似乎没有任何工作。 然后我想我会有cgsnapshot从手动configuration的机器为我生成configuration文件。 所以我尝试了以下几点: echo "<maj2:min2> 10485760" >> /path/to/limitio/blkio.throttle.read_bps_device 手动更新工作,我看到/path/to/limitio/blkio.throttle.read_bps_device 2行,但由cgsnapshot -s生成的以下configuration不起作用。 group limitio { blkio { blkio.throttle.read_bps_device = "<maj1:min1> 10485760 <maj2:min2> 10485760"; } } 如何在不使用单独的子组的情况下正确使用多个块设备? 谢谢!

如何通过SSH发送三个数据pipe道?

我在远程主机上有一个bash脚本,它在fd = 3上产生大量数据,以及在stdout和stderr上产生一些可能有趣的数据。 我要: 将stdout和stderrlogging到本地计算机上的文件中。 在我的本地机器上写入fd = 3的数据到stdout。 如果我的大脚本是本地的话,以下是如何完成的: exec 3> >(cat) ./big_script.sh -o /dev/fd/3 2>&1 >big_script.log exec 3>&- 不过,我想在远程计算机上运行big_script.sh,并将所有三个pipe道(fd = 1,fd = 2和fd = 3)作为单独的来自ssh程序。 什么是最好的办法呢?