标签: shell

用于保留过去 3 天、过去 3 周和过去 3 个月备份的 Shell 脚本

由于我缺乏 shell 知识,我不完全确定如何做到这一点。

NOW=$(date +"%Y.%m.%d.%T")

tar czf /backups/web_backup_$NOW.tgz /web/
Run Code Online (Sandbox Code Playgroud)

您能否帮我删除旧备份,以便它只保留:

  1. 过去 3 天
  2. 过去 3 周各一份备份
  3. 过去 3 个月各备份一份

shell command-line-interface

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

如何跟踪不断增长的目录?

我的系统经常出现磁盘空间不足的情况。我将编写一个脚本来清理变大的目录。通常这些是日志目录。鉴于机器的性质,我不需要保留日志。

我想编写一个脚本来显示所有大小不断增加的目录,这样我就可以确保该列表变为 0。

我在想这样的事情

1. du /
2. wait 24 hrs
3. du /
4. find all instances where the file size increased
Run Code Online (Sandbox Code Playgroud)

它看起来很简单,但我的问题是 du 适用于文件和目录,你不能仅适用于目录。我怎样才能克服这个问题?

scripting linux unix shell bash

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

无法停止mysql太多连接

跑步

mysqladmin shotdown
Run Code Online (Sandbox Code Playgroud)

mysqladmin: connect to server at 'localhost' failed
error: 'Too many connections'
Run Code Online (Sandbox Code Playgroud)

找不到重启mysql的解决方案

mysql shell

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

在 shell 脚本中使用记录器

如何在 shell 脚本中使用记录器?

如果我跑

ntpd -qnp pool.ntp.org 2> >(logger)
Run Code Online (Sandbox Code Playgroud)

在控制台中,它按预期工作。

如果我把它放到一个shell脚本中

#!/bin/sh
ntpd -qnp pool.ntp.org 2> >(logger)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

line 2: syntax error: unexpected redirection
exited with code 2
Run Code Online (Sandbox Code Playgroud)

shell 脚本有什么问题?

linux shell bash logging

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

在本地安装所有被管理的远程服务器的根文件系统会消除共享点文件的需要吗?

我通过 SSH 管理了大约 10 个远程服务器,我通常只是通过 SSH 连接到每个服务器来执行远程管理任务。这要求我在每台服务器上复制我的许多点文件(如 .zshrc、.vimrc),以便我在每个服务器上都有统一的体验。因此,对这些文件之一进行更改意味着将其分发到所有服务器(最坏的情况是手动,最好的情况是使用诸如 Ansible 之类的配置工具)。

但是,如果我要使用 NFS、SSHFS、Samba 或其他东西将所有这些服务器的根文件系统挂载到我的本地工作站上(例如 /mnt/servers/server1/、/mnt/servers/server2/ 等) ,那么这会消除在这些服务器中的每一个之间共享和复制点文件的需要吗?

因为我使用的是本地 shell 和 Vim,所以只使用了本地 .zshrc 和 .vimrc。如果我需要在 server3 上编辑 /etc/hosts,我会从我的本地工作站 'vi /mnt/servers/server3/etc/hosts' 编辑主机文件。

这会消除在我管理的所有服务器之间同步我的点文件的需要吗?

ssh configuration shell nfs samba

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

Bash:美元括号中的两个命令没有相同的行为

我不明白为什么,在 Bash 中:

  • echo $(hostname --fqdn) 作品,
  • echo $(id -un)没有(id: –un: No such user)。

反引号给出相同的结果。

使用这种表示法有什么好的做法吗?id 命令以这种方式使用它有什么特别之处吗?

下面,一些细节似乎适用于其他系统:

  • lsb_release -a:SUSE Linux Enterprise Server 11 (x86_64),
  • which id: /usr/bin/id,
  • id -un 单独工作。

linux shell bash command

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

关闭文件描述符的危险

在堆栈溢出问题检查程序是否存在于 bash 脚本中接受的答案指出关闭 stderr 是危险的:

(次要注意事项:有些人会建议 2>&- 是相同的 2>/dev/null 但更短 - 这是不正确的。2>&- 关闭 FD 2,这会在程序尝试写入 stderr 时导致错误,这与成功写入并丢弃输出非常不同(并且危险!))

  • 除了编写程序出错,还有什么危险的事情会发生?
  • 使用 2>&- 是否可能破坏编写程序(即停止其执行并且不允许清理)?

unix shell file-descriptors

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

用于从日志文件中删除 6 个月前的日志的 shell 脚本

我有一个大小为 6.2 GB 的日志文件,它正在被进程使用,并且它不断地将日志写入这个文件。现在我不想轮换日志,但是我想清理这个日志文件。我想从这个文件中删除超过 6 个月的日志。是否可以使用 shell 脚本读取日志文件并删除超过 6 个月的日志?

下面是日志格式

10.0.3.xx - - [17/Jun/2016:14:21:59 +0000] "GET /visible_topics HTTP/1.1" 200 581 "-" "help/97a1dd7eb981421b9719adde381560a78bed0b66 (ip-10-0-3-xxx; user1; 4411) ruby/2.3.0 (0; x86_64-linux)" 
Run Code Online (Sandbox Code Playgroud)

linux ubuntu shell shell-scripting ubuntu-14.04

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

sed: -e 表达式未知选项到`s'

我知道以前有人问过这个问题,但我正在努力确定我的脚本错误的根本原因。我已经解决了其他问题并尝试转换它(将 /\ 切换为 @),但它对我不起作用,我仍然遇到相同的错误???

一旦我添加了最后 4 个(从底部开始)表达式,我就开始出现错误,..

当我运行这个

clustername="'XXXCluster'"  
seed=xx.xxx.xxx.xx  
ip=xx.xxx.xxx.xx  
hint="/opt/cassandra/data/hints"  
data="/opt/cassandra/data/data"  
commitlog="/opt/cassandra/data/commitlog"  
cache="/opt/cassandra/data/saved_caches"  

sed -i -e "s/\(cluster_name:\).*/\1$clustername/" \  
-e "s/\(- seeds:\).*/\1$seed/" \  
-e "s/\(listen_address:\).*/\1$ip/" \  
-e "s/\(rpc_address:\).*/\1$ip/" \  
-e "s/\(broadcast_rpc_address:\).*/\1$ip/" \  
-e "s/\(hints_directory:\).*/\1$hint/" \  
-e "s/\(data_file_directory:\).*/\1$data/" \  
-e "s/\(commitlog_directory:\).*/\1$commitlog/" \  
-e "s/\(saved_caches_directory:\).*/\1$cache/" /opt/cassandra.yaml  
Run Code Online (Sandbox Code Playgroud)

我得到了这个 sed:-e 表达式 #6,字符 29:`s' 的未知选项

但我看不到如何解决这个问题,有人可以帮我吗??

提前致谢..

linux shell bash

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

shell 中的超级用户访问

如何从 shell 获得 root 访问权限?当我尝试使用时,su我得到:

    default@default-laptop:~/home/default$ su
    Password: 
    su: Authentication error
    default@default-laptop:~/home/default$
Run Code Online (Sandbox Code Playgroud)

linux ubuntu shell root

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