标签: caching

如何从 shell 脚本安全地创建和访问临时文件?

我读过将输出重定向到固定名称文件/tmp可能存在安全风险,因为如果攻击者(或不满者)注意到/tmp/tmpfileformyscript.tmp我运行脚本时创建了一个文件(即使他没有对我的脚本的读取访问权限)脚本),例如,他可以创建一个符号链接ln -s ~wildcard/.bashrc /tmp/tmpfileformyscript.tmp.bashrc当我运行我的脚本时,它会导致我破坏我的文件。

因此,我可以使用类似filename="tmpfile.tmp.$RANDOM" ; echo outputtext > "$filename".

但是,有时我想使用 tmp 文件进行缓存,在这种情况下,我想知道“tmpfile.tmp.*”是否与其中的任何内容匹配/tmp,如果匹配,请使用该文件而不是创建一个新文件。不幸的是test[ -f filename ]据我所知,等价物不支持文件通配。

因此,我的问题是双重的:

  1. 如何安全地创建临时文件?是"predictablename.$RANDOM"可接受的做法还是有更好(更安全、更简单)的方法?
  2. 如何通过检查 轻松访问文件和/或确定其存在predictablename

shell-script tmp caching

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

在 Mac OS 上使用 dd:conv=f​​sync 等效?

我正在运行一个实验,在该实验中我对使用和不使用缓存的读写速度进行了基准测试。在 Linux 上,使用 'conv=f​​sync' 作为操作数可确保在 'dd' 退出之前完全物理写入输出文件(以获得更准确的时间)。

MacOS 没有 'conv' 的这个选项。当我寻找准确的基准时,这是我应该关注的事情吗?如果是这样,我该怎么办?

谢谢你的时间。

filesystems io dd benchmark caching

6
推荐指数
0
解决办法
3943
查看次数

bcache:写回策略

我正在使用 bcache 和大约 1 TByte 的 SSD 缓存来处理大约 40 TByte 的数据。回写并为 bcache 配置 10%,大约 100 GByte 的脏数据仅存在于缓存设备上。

我喜欢 bcache 继续使用缓存的配置百分比进行延迟写入,但我更喜欢 bcache 随着时间的推移清除它。换句话说,突然的写突发应该去SSD,并且这个堆积的“债务”应该在接下来的几秒/分钟/小时内被清除。

这可能吗?

相关的,写回策略究竟是什么样的?是否会发生旧数据永远保存在 SSD 上,而只有年轻数据被写回的情况?

ssd bcache caching

5
推荐指数
0
解决办法
619
查看次数

密钥密码和 sshd -- 缓存身份验证?

问一个更准确的问题:

似乎我可以使用需要密码短语的密钥完成rsync-over- ssh,而无需输入密码短语。例如,我可以从命令行运行rsync

rsync -qavz -e ssh -i /home/keshlam/.ssh/password_id_dsa.pub a.a password_id@192.168.122.47:/home/password_id/a.a
Run Code Online (Sandbox Code Playgroud)

并看到该a.a文件出现在远程机器上,而不会提示输入密码。

我最好的猜测是这是一个 ssh 缓存效果——我昨天输入了密码,两台机器仍然相互信任。

这个分析有意义吗?如果是这样,刷新缓存以进行测试的最简单可靠的方法是什么 - 重新启动?

ssh rsync session sshd caching

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

为什么 Linux 不会自动清理磁盘缓存和交换?

例如,当我归档一些文件(使用 tar)时,Linux 使用了相当多的磁盘缓存(和一些交换),但在操作完成后从不清理它。结果,因为没有可用内存,Linux 会尝试从内存中换出一些东西,这反过来又会给 CPU 带来额外的负载。

当然,我可以通过运行来清理缓存,echo 1 > /proc/sys/vm/drop_caches但我必须这样做是不是很愚蠢?

更糟糕的是交换,没有命令来清理未使用的交换,我必须完全禁用/启用它,我认为这根本不是一件安全的事情。

更新:

我进行了一些测试并发现了一些事情:

  1. 在归档命令期间换出的内存页面与归档文件无关,这似乎只是一个普通的换出过程,这是由于可用内存减少(因为磁盘缓存把它全部吃光了)根据swappiness

  2. 运行swapoff -a实际上是安全的,这意味着交换的页面将移回内存

我当前的解决方案是通过 cgroups 限制归档命令内存使用(我运行带有-m标志的docker 容器)。如果您不使用 docker,有一个项目https://github.com/Feh/nocache可能会有所帮助。

剩下的问题是Linux 什么时候会清理磁盘缓存,会不会呢?如果没有,手动清理磁盘缓存 ( echo 1 > /proc/sys/vm/drop_caches)是一个好习惯吗?

linux memory swap disk caching

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

标签 统计

caching ×5

bcache ×1

benchmark ×1

dd ×1

disk ×1

filesystems ×1

io ×1

linux ×1

memory ×1

rsync ×1

session ×1

shell-script ×1

ssd ×1

ssh ×1

sshd ×1

swap ×1

tmp ×1