Articles of linux

configurationSystemd服务以root权限运行

我有一个在Raspbian Jessie上使用Systemd设置的node.js应用程序的服务,它使用自己的用户帐户。 但是,我发现该服务没有正确运行,因为它没有必要的权限。 我安装的其中一个节点模块需要root访问权限。 如果我用sudo手动运行应用程序,一切正常。 有没有办法告诉systemd使用sudo运行服务?

基于Snort的防火墙

我没有太多的工作与SNORT或做了太多的研究,但这听起来有可能。 如果我设置一个服务器,并运行snort。 那么是否有可能将所有的stream量通过它像一个防火墙路由到我的网站? 这是否允许我有一个中心点来过滤掉所有不好的stream量? 至于转发去,我应该使用GRE隧道还是有更好的方法? 如果可能,我想尽量保持客户的知识产权。 因此,我可以运行HA Proxy / nGinx作为转发网站stream量的方式,将客户端IP保留在数据包中,而不是以每个客户端作为代理服务器的IP。

是否有可能隐藏丢失+find?

给定一个专门用于存储音乐,video等的分区,是否可以隐藏lost + found目录?

使libmagic /文件检测.docx文件

如别处所见 ,docx,xl​​sx和pttx是ZIP。 当他们上传到我的Web应用程序, file (通过libmagic和python-magic )检测到他们是ZIP。 我将文件的内容作为blob存储在数据库中,但是我自然不想用这种types的文件types来信任用户。 所以我想信任file ,并在下载过程中自动生成一个文件名。 我知道可以修改/etc/magic但格式( magic(5) )对于我来说太复杂了。 我在Debian的bug中发现了一个关于这个问题的bug报告,但是从2008年开始,这个bug似乎并没有在短期内得到修复。 我想我唯一的另一种select是确实信任用户(但仍然将内容存储为blob),并只检查基于文件名的文件扩展名。 这样我可以禁止一些扩展,并允许其他人。 当用户重新下载他的文件时,他可以以任何方式上传文件。 但是,如果文件与其他人共享,则此解决scheme是不安全的,因为您可以简单地重命名文件以允许上传文件。 有任何想法吗? 最后,我find了docx等的幻数列表 ,但是我无法将它们转换成magic(5)格式。

确定文件是否正在写入?

我需要部署一个在特定目录中查找tar文件的自动化进程(通过1分钟的cron脚本)。 如果findtar文件,则解压到适当的位置,然后删除tar文件。 tar文件通过另一台服务器的SSH自动复制到该服务器。 在某些情况下,tar文件非常大,有很多文件。 我期望遇到的问题:如果将tar文件复制到服务器需要1分钟以上,并且cron脚本每分钟运行一次,则会看到.tar.gz文件并尝试执行解压缩它,即使tar文件仍在写入过程中。 有没有什么办法(通过bash命令)来testing当前正在写入的文件,还是只有部分文件等? 我想到的一个select是将文件复制为不同的文件扩展名(如.tar.gz.part ),然后在传输完成后将其重命名为.tar.gz 。 但我想我会试图找出是否有简单的方法来确定文件是否完整的命令行第一…任何线索?

杀死X时间后CPU占用率高的进程?

运行linux我有几个进程,往往偶尔崩溃(游戏服务器),最终使用100%的CPU。 我正在寻找一个程序或脚本来检查名称的进程列表的CPU使用情况,如果他们是100%超过X时间,比如30秒,杀死他们。 我试过ps-watcher,但无法确定如何完成这一点。 只是在100%的使用率下杀死进程将无法正常工作,因为它会在正常运行期间的短暂时间内发生。 我也发现这个脚本,似乎做我想要的,但它是有限的一个过程: 链接任何帮助,非常感谢!

在linux中确保可重复的目录顺序

我运行一个托pipe的持续集成公司,我们在Linux上运行客户的代码。 我们每次运行代码时,都会在单独的虚拟机中运行它。 一个常见的问题是客户的testing有时会失败,因为他们的代码在虚拟机上签出的目录顺序。 让我进入更多的细节。 在OSX上,HFS +文件系统确保目录始终以相同的顺序遍历。 使用OSX的程序员假设,如果它在机器上运行,它必须在任何地方工作。 但是它在Linux上通常不起作用,因为Linux文件系统在遍历目录时不提供sorting保证。 作为一个例子,考虑有2个文件,a.rb,b.rb. a.rb定义MyObject ,而b.rb使用MyObject 。 如果首先加载a.rb,一切都将工作。 如果b.rb首先被加载,它将尝试访问未定义的variablesMyObject ,并失败。 但比这更糟的是,它并不总是失败。 因为在Linux上订购的文件系统没有sorting,所以在不同的机器上将会是不同的顺序。 这更糟,因为有时testing通过,有时会失败。 这是最糟糕的结果。 所以我的问题是,有没有办法使文件系统的sorting是可重复的。 也许有一些标志ext4,这说明它会一直以某种顺序遍历目录? 或者也许有不同的文件系统有这个保证?

如何在RHEL上“重启”特定的networking接口?

在RHEL中,而不是使用service network restart命令,我怎么能重新启动一个特定的networking接口,让我们说“eth1”,只有一个命令。 “只有一个命令”,因为这是我的ssh正在工作的唯一接口也。 所以,如果我即将使用: ifdown ,然后ifup ,我将永远无法击中ifup命令,因为我的ssh已经在ifdown eth1命令后终止了一次。 所以应该有一个单独的命令让我完全打开,然后调出正在为我当前的ssh连接服务的接口。 所以我不需要担心完全丢失到我的服务器的连接。 有什么想法吗?

在linux中识别物理networking接口

我是新来的Linux和我有四个网卡的服务器。 我必须确定将哪个物理networking接口分配给名称eth0,eth1,eth2和eth3。 我必须从eth2断开电缆,不知道它是哪个网卡。 谢谢

内核堆栈跟踪源代码行

给定如下的内核堆栈跟踪,如何确定发生问题的特定代码行? kernel: [<ffffffff80009a14>] __link_path_walk+0x173/0xfb9 kernel: [<ffffffff8002cbec>] mntput_no_expire+0x19/0x89 kernel: [<ffffffff8000eb94>] link_path_walk+0xa6/0xb2 kernel: [<ffffffff80063c4f>] __mutex_lock_slowpath+0x60/0x9b kernel: [<ffffffff800238de>] __path_lookup_intent_open+0x56/0x97 kernel: [<ffffffff80063c99>] .text.lock.mutex+0xf/0x14 kernel: [<ffffffff8001b222>] open_namei+0xea/0x712 kernel: [<ffffffff8006723e>] do_page_fault+0x4fe/0x874 kernel: [<ffffffff80027660>] do_filp_open+0x1c/0x38 kernel: [<ffffffff8001a061>] do_sys_open+0x44/0xbe kernel: [<ffffffff8005d28d>] tracesys+0xd5/0xe0 虽然我没有find函数调用的麻烦 – 但是将__link_path_walk加偏移量转换为实际的行号是困难的部分。 假设这是一个标准的分配提供的内核,我知道确切的版本和内部版本号,那么获取必要的元数据和进行相应的查找的过程是什么?