小编Cri*_*itu的帖子

使用 iptables 限制每个 IP 地址的最大连接数和每秒新连接数

我们有一个 Ubuntu 12.04 服务器,在端口 80 上有 httpd,我们想限制:

  • 每个 IP 地址到 httpd 的最大连接数为 10
  • 每秒到 httpd 的最大新连接数为 150

我们如何用 iptables 做到这一点?

iptables limit

38
推荐指数
3
解决办法
12万
查看次数

在 fstab 中增加“commit”的优缺点

过去我做过很多晦涩的系统优化,但在我powertop告诉我应该将 USB 端口设置为autosuspend后,我摆脱了其中的大部分,这迫使它们永久休眠,并且在我意识到更高swappiness的好处之后.

但是今天,在查看 时/etc/fstab,我注意到我已经commit=60//home设置了选项。我记得这是对笔记本电脑的优化,以减少对磁盘的写入量,从而节省电池。但后来我开始担心这可能会导致数据丢失(有时我的电池断开连接,然后在启动时fsck告诉我几个孤立的 inode)。

在寻找这个选项的解释时,我得出了以下解释(第二个似乎与我之前的理解相矛盾):

$ man mount | awk '/commit=/,/^$/'
commit=nrsec
    Sync all data and metadata every nrsec seconds. The default value is 5 seconds.
    Zero means default.
Run Code Online (Sandbox Code Playgroud)

https://forums.gentoo.org/viewtopic-p-4088752.html

commit=60 停止“立即”(默认为 5 秒)写入优先级,在几秒钟后缓存写入。这在重读和写混合在一起的情况下是很好的,在这种情况下,用户希望读取优先,以便处理器可以保持忙碌而不是在等待写入完成之前暂停,然后才能继续读取。

我见过的一个真实世界的例子是等待几秒钟 Gnome 下拉菜单出现,似乎没有任何原因。原因是磁盘忙于写入,因此CPU必须等待写入完成才能从磁盘中获取所有数据才能显示菜单。

提交到底有什么作用?增加它真的有好处吗(比如响应能力和节能)?它真的会导致数据丢失吗?

ext4 mount ext3 fstab

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

像 VIM 一样在屏幕上完成单词(Bash 或 Tmux)

如何配置 Bash、Zsh 或 Tmux 以完成屏幕上最后一个匹配的标识符?考虑这个常见的场景:

$ git fetch
remote: Counting objects: 16, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 9 (delta 4), reused 0 (delta 0)
Unpacking objects: 100% (9/9), done.
From /opt/git/thunder
 * [new branch]      issue540   -> origin/issue547314
   e9204cf..4d42c3f  v2.1       -> origin/v2.1
Run Code Online (Sandbox Code Playgroud)

如何让 Bash/Zsh/Tmuxissue547在 CLI 上轻松完成?当我Tab$ git checkout isGit 帮助完成 to后按下时issue,但我必须自己完成数字,因为所有前面的数字实际上都匹配现有的 Git 分支

在 VIM 中,按Ctrl+ Pfor omnicomplete 将作为前一个匹配完成,因此在这种情况下issue547314实际上会完成。如何在 …

bash zsh tmux autocomplete oh-my-zsh

10
推荐指数
1
解决办法
1293
查看次数

无法在 OpenSuse 上安装 crontab

我在 OpenSuse 上以 root 身份运行以下命令:

linux-gn77-PC:/home/harbir/project # crontab -e
Run Code Online (Sandbox Code Playgroud)

当编辑器打开时,我输入以下内容,因为我希望命令在 2145 小时运行

45 21 * * * * /home/harbir/project/maildispatcher.sh  &> /tmp/mycommand.log
Run Code Online (Sandbox Code Playgroud)

当我尝试保存文件时,我收到以下消息

crontab: installing new crontab
"/tmp/crontab.WOxjzG":1: bad command
errors in crontab file, can't install.
Do you want to retry the same edit?
Run Code Online (Sandbox Code Playgroud)

我希望 crontab 的输出转到文件/tmp/mycommand.log

linux cron opensuse

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

叉调用和递归

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
    fork();
    fork();
    fork();

    puts("hi");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该程序打印 8 次“hi”并退出。为什么?不是每个fork调用都main递归地调用:f(): "hi"; f()

fork

5
推荐指数
1
解决办法
7735
查看次数

用于添加或替换 .c 、 .h 和 makefile 中包含的许可证文本的 Shell 脚本 (bash)?

我在一个文件夹中有一组 *.c 、 *.h 和 Makefile,其中一些文件包含许可证文本,而一些文件没有任何许可证文本。所以我需要一个 shell 脚本,如果文件没有任何许可文本,我可以在其中添加许可文本,如果许可文本已经存在,那么我想用新的许可文本替换它。

例如

Folder1
?? *.c
?? *.h
?? Folder2
?  ?? *.c
?  ?? *.h
?  ?? Makefiles
?  ?? Folder4
?? Folder3
   ?? *.c
   ?? *.h
   ?? Makefiles
Run Code Online (Sandbox Code Playgroud)

注意:许可证文本将始终位于文件的开头。

现有许可证文本示例:

# Copyright (C) 2008 Jack <abc@cba.com>

# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
Run Code Online (Sandbox Code Playgroud)

新的许可证文本应该是:

/*--------------------------------------------------------------------- …
Run Code Online (Sandbox Code Playgroud)

shell-script text-processing

5
推荐指数
1
解决办法
4613
查看次数

wget: --convert-links 在已经下载的文件夹中?

有没有办法将wget下载和--convert-links功能分开?对于那些不熟悉 和wget/或 的人--convert-links,长话短说,wget 可用于下载网站。--convert-links修改下载的 html 文件,以便下载的网站可以离线工作。它通过转换href/ src/etc 来实现这一点。属性引用本地文件而不是远程网站。

\n

这是官方的解释

\n
\n

-k\n--转换链接

\n

下载完成后,转换文档中的链接,使其适合本地查看。这不仅影响\n可见的超链接,还影响链接到外部内容的文档的任何部分,例如嵌入图像、到样式表的链接、到非 HTML 内容的超链接等。

\n

每个链接都将通过以下两种方式之一进行更改:

\n

\xe2\x80\xa2 Wget 下载的文件的链接将更改为引用它们作为相对链接指向的文件。

\n

示例:如果下载的文件 /foo/doc.html 链接到 /bar/img.gif(也已下载),则 doc.html 中的链接将被\n修改为指向 ../bar/img.gif。这种转换\n对于目录的任意组合都可靠。

\n

\xe2\x80\xa2 尚未由 Wget 下载的文件的链接将更改为包括主机名和它们指向的位置的\n绝对路径。

\n

示例:如果下载的文件 /foo/doc.html 链接到 /bar/img.gif(或 ../bar/img.gif),则 doc.html 中的链接将被\n修改为指向 http:// /主机名/bar/img.gif。

\n

因此,本地浏览可以可靠地工作:如果下载了链接文件,则该链接将引用其本地名称;如果\n未下载,该链接将引用其完整的 Internet 地址\n而不是显示损坏的链接。之前的链接已转换为相对链接,这一事实可确保您可以将下载的层次结构移动到另一个目录。

\n

注意,只有在下载结束时Wget才能知道哪些链接被下载了。因此,\nk 完成的工作将在所有下载结束时执行。

\n
\n

-k如果(递归)下载被手动中断和恢复,或者如果一开始就没有指定,如何才能在html文件内获得正常的链接?

\n

似乎甚至不能使该过程更加健壮,因为 wget 在下载所有内容--backup-converted …

download wget

5
推荐指数
1
解决办法
1338
查看次数

哪些 Red Hat Enterprise Linux 软件包适用于 CentOS?

我想在 CentOS 5.6 上使用 Red Hat Enterprise Linux RPM 软件包,但我不知道哪个版本的 RHEL 可以与 CentOS 5.6 配合使用。

RHEL 4 = CentOS 4?

RHEL 5 = CentOS 5?

...

rpm rhel centos

4
推荐指数
2
解决办法
373
查看次数

CentOS 上未安装 eth0

我将如何在 CentOS 上安装eth0?当我这样做时ifconfig -aeth0不在那里。这是输出ip link

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
3: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue
    link/void
Run Code Online (Sandbox Code Playgroud)

linux networking centos

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