AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-242307

Thomas Weller's questions

Martin Hope
Thomas Weller
Asked: 2020-02-21 04:08:22 +0800 CST

写入 stdout 和 stderr 的命令

  • 0

我们正在为解释 Bash 的实习举办研讨会。一个主题是重定向,因为它非常重要。

到目前为止,我们相互解释>并2>相互独立。我们的例子是

echo Hello world
echo Hello world > file.txt
let x=1/0
let x=1/0 2> file2.txt

对于了解 和 概念的程序员来说stdout,strerr这不是问题。

但是,对于实习生来说,这两种情况的唯一影响是:输出消失并被重定向到文件中。

我正在寻找的是一个同时产生常规输出(stdout)和错误输出(stderr)的命令。这样,我们可以使用>仅重定向输出的一部分,2>重定向另一部分或两者以获取 2 个文件。

命令应该比较简单,不需要过多的准备。准备得越多,他们出错的可能性就越大。

command-line bash redirect
  • 1 个回答
  • 516 Views
Martin Hope
Thomas Weller
Asked: 2018-01-15 13:59:36 +0800 CST

为了在两台服务器上获得相同的 SSH 密钥登录,要复制哪些文件?

  • 1

我有一台使用 SSH 登录的服务器,我使用基于密钥的身份验证。我现在设置了第二台服务器,我想使用相同的密钥进行登录。

~/.ssh/authorized_key因此,我将文件从旧服务器复制到新服务器。

在 Windows 客户端上,我在 Putty 中克隆了 SSH 配置,只交换了服务器的 IP 地址。

这似乎还不够。Windows 上 Putty 的错误信息是

腻子致命错误

断开连接:没有可用的受支持的身份验证方法(服务器发送:publickey)

在 SSH 控制台上我看到

服务器拒绝了我们的密钥

服务器配置是

AllowGroups sshlogin
Port 2233
PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no

即使我复制了其他密钥文件(id_rsa和id_rsa.pub),我仍然无法登录。

# ls -l
total 12
-rw------- 1 root root  411 Jan 14 22:39 authorized_keys
-rw------- 1 root root 1792 Jan 14 22:53 id_rsa
-rw------- 1 root root  411 Jan 14 22:39 id_rsa.pub

我需要复制哪些文件才能在两台机器上获得相同的 SSH 登录?


我努力了:

  • 无法进行第二次 ssh 密钥登录,但它在 1 台服务器上大约有 2 个不同的密钥。我需要 2 个服务器上的 1 个相同的密钥。
networking
  • 1 个回答
  • 73 Views
Martin Hope
Thomas Weller
Asked: 2018-01-12 13:13:42 +0800 CST

我不小心删除了仍在通过 SCP 传输的文件。怎么了?

  • 1

我.tar.gz为备份目的创建了一个文件。虽然它仍在通过 SCP 传输(它是一个 6 GB 的文件),但我不小心在 SSH 会话中删除了它。

SCP 传输仍在运行。在那种情况下会发生什么?文件会好吗?为什么?会坏吗?如果是这样,为什么文件传输不中断?

ssh
  • 2 个回答
  • 754 Views
Martin Hope
Thomas Weller
Asked: 2018-01-09 14:13:29 +0800 CST

SVN 不传输大于 ~512 MB 的文件(OOM Killer)

  • 1

我已将存储库从一台服务器移动到另一台服务器。在客户端上,我已经删除了存储库,现在我正在尝试再次从新服务器中签出。

这适用于小文件。我能够检查出数百个总大小超过 4000 MB 的小文件。但是每当涉及到一个大文件时,我都会收到错误消息

错误运行上下文:远程主机强制关闭现有连接。

目前我经常收到这个,客户端上的 TortoiseSVN 说:

在 2 分 55 秒内传输了 520,00 MBytes

看来我受到了OOM杀手的影响:

x:~$ sudo dmesg
[...]
[290354.745160] Out of memory: Kill process 19409 (apache2) score 843 or sacrifice child
[290354.745585] Killed process 19409 (apache2) total-vm:19200784kB, anon-rss:11311540kB, file-rss:692kB

我想知道为什么 Apache 被杀了。在它被杀死后,似乎还剩下 9 GB 的 RAM:

x:~$ free -m
             total       used       free     shared    buffers     cached
Mem:         12043       2103       9940         87         54        313

top在它被杀死之前不久,使用我看到以下内容:

阿帕奇即将被杀的截图

我几乎无法相信 Apache 为 692 MB 的文件消耗 17 GB 的内存是正常的(根据 Repo 浏览器,这是导致问题的原因)。

我该怎么做才能使文件传输?我不想全局禁用 OOM 杀手。我想弄清楚为什么 Apache 需要这么多 RAM 以及如何应对,例如通过 Apache 配置文件,升级到非内存泄漏版本或类似版本。

我努力了:

  • 关注这个博客,但在我/etc/apache2/apache2.conf没有这样的条目。
  • Ubuntu 形式提到了 1 GB RAM 的问题。升级到 2 GB 有所帮助。不幸的是,我无法升级 RAM。我无法获得超过 12 GB 的空间。我看起来足够了。我的旧服务器只有 2 GB 并且运行良好。

版本:

x:~$ sudo apache2ctl -V
Server version: Apache/2.4.10 (Debian)
Server built:   Sep 20 2017 04:37:43

x:~$ svn --version
svn, version 1.8.10 (r1615264)
   compiled Aug 10 2017, 03:35:22 on x86_64-pc-linux-gnu

x:~$ uname -a
Linux v2201506722726049 3.16.0-4-amd64 #1 SMP Debian 3.16.43-2+deb8u5 (2017-09-19) x86_64 GNU/Linux
server
  • 1 个回答
  • 688 Views
Martin Hope
Thomas Weller
Asked: 2016-08-29 13:33:26 +0800 CST

在 || 的情况下运行两个命令 或者 &&

  • 18

我读过关于 && 和 || 我想在错误的情况下运行两个命令。

我已经尝试过;,但它总是在运行。我试过把它放在花括号里{ command1; command2 },但这会导致语法错误。

我想做类似的事情

command && echo "Ok, continuing" || echo "Check internet connection"; exit 1

只有在没有 Internet 连接时才会退出。

command-line
  • 1 个回答
  • 12777 Views
Martin Hope
Thomas Weller
Asked: 2016-06-04 16:05:32 +0800 CST

以十六进制或base64获取文件名

  • 3

由于关于 Software Recommendations 的问题,我想我可以实现一个程序来解析输出ls -l并以类似 Explorer 的样式显示文件。这种方法是在 ServerFault 上提出的。同时,其他人不鼓励解析ls。

所以我想知道是否有办法以十六进制或 base64 格式列出文件名,这将绕过任何特殊字符,如\n和类似。

command-line
  • 2 个回答
  • 5009 Views
Martin Hope
Thomas Weller
Asked: 2016-03-08 13:15:17 +0800 CST

在 PHP 7 之上意外安装了 libphp-adodb - 如何安全卸载?

  • 0

在使用 PHP 7 的服务器上,我不小心安装了软件包 libphp-adodb

$ sudo apt-get install libphp-adodb

这似乎对 PHP 5 有很多依赖,这完全破坏了我的系统,并且没有网页可以再工作了。网站的错误信息是

连接被重置

在系统日志中,我看到了所有我不想要的 PHP 5 东西

Mar  7 22:02:57 myservername php5-common: php5_invoke: Enable module pdo for cli SAPI
Mar  7 22:02:57 myservername php5-common: php5_invoke: Enable module pdo for apache2 SAPI
Mar  7 22:02:57 myservername php5-common: php5_invoke: Enable module opcache for cli SAPI
Mar  7 22:02:57 myservername php5-common: php5_invoke: Enable module opcache for apache2 SAPI
Mar  7 22:02:57 myservername php5-json: php5_invoke: Enable module json for cli SAPI
Mar  7 22:02:57 myservername php5-json: php5_invoke: Enable module json for apache2 SAPI
Mar  7 22:02:57 myservername php5-cli: php5_invoke opcache: already enabled for cli SAPI
Mar  7 22:02:57 myservername php5-cli: php5_invoke json: already enabled for cli SAPI
Mar  7 22:02:57 myservername php5-cli: php5_invoke pdo: already enabled for cli SAPI
Mar  7 22:02:58 myservername libapache2-mod-php5: php5_invoke opcache: already enabled for apache2 SAPI
Mar  7 22:02:58 myservername libapache2-mod-php5: php5_invoke json: already enabled for apache2 SAPI
Mar  7 22:02:58 myservername libapache2-mod-php5: php5_invoke pdo: already enabled for apache2 SAPI
Mar  7 22:02:58 myservername libapache2-mod-php5: apache2_invoke: Enable module php5
Mar  7 22:02:59 myservername apache2[4266]: Stopping web server: apache2.
Mar  7 22:03:00 myservername apache2[4289]: Starting web server: apache2.
Mar  7 22:03:01 myservername php5-mysql: php5_invoke: Enable module mysql for cli SAPI
Mar  7 22:03:01 myservername php5-mysql: php5_invoke: Enable module mysql for apache2 SAPI
Mar  7 22:03:01 myservername php5-mysql: php5_invoke: Enable module mysqli for cli SAPI
Mar  7 22:03:01 myservername php5-mysql: php5_invoke: Enable module mysqli for apache2 SAPI
Mar  7 22:03:02 myservername php5-mysql: php5_invoke: Enable module pdo_mysql for cli SAPI
Mar  7 22:03:02 myservername php5-mysql: php5_invoke: Enable module pdo_mysql for apache2 SAPI
Mar  7 22:03:02 myservername php5-readline: php5_invoke: Enable module readline for cli SAPI
Mar  7 22:03:02 myservername php5-readline: php5_invoke: Enable module readline for apache2 SAPI
php
  • 1 个回答
  • 813 Views
Martin Hope
Thomas Weller
Asked: 2016-01-11 05:28:47 +0800 CST

在目标机器上使用 rsync 和 sudo

  • 85

遇到rsync 没有按预期设置 UID 和 GID 的问题,我的直觉是rsync应该root在目标机器上运行。

我无法root通过 SSH 登录,因为出于安全目的已禁用该功能。目标机器上的用户可以使用sudo.

可以rsync用sudo吗?

permissions
  • 6 个回答
  • 106557 Views
Martin Hope
Thomas Weller
Asked: 2016-01-10 16:43:12 +0800 CST

rsync 没有在目标文件上设置正确的 UID 和 GID

  • 0

我正在测试我是否使用了正确的选项,rsync因为我想将大量文件从旧服务器复制到新服务器并保持准确的权限。

在旧服务器上,文件存在如下:

$ ll -n
total 0
-rw-r--r-- 1 1002 1000 0 Jan  9 22:56 testfile

然后我用rsync这样复制文件:

$ rsync -e ssh -avP . 10.10.10.254:/home/someuser/test
Enter passphrase for key 'newserver.key':
sending incremental file list
./
testfile
           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/2)

sent 125 bytes  received 34 bytes  28.91 bytes/sec
total size is 0  speedup is 0.00

在新服务器上,没有 ID 为 1002 的用户,也没有同名用户。该文件是这样创建的:

$ ll -n
total 0
-rw-r--r-- 1 10001 10001 0 Jan  9 23:56 testfile

我想知道为什么文件不是用 ID 1002 1000 创建的,因为-a(archive) 选项包括-o(owner)、-g(group) 和-p(permissions) 并且手册页说

如果用户或组在源系统上没有名称,或者在目标系统上没有匹配项,则使用源系统中的数字 ID。

即使我手动添加--numeric-ids开关(我实际上不想要),结果也只是

$ ll -n
total 0
-rw-r--r-- 1 10001 1000 0 Jan  9 23:56 testfile

所以它只保留了 GID,而不是 UID

permissions
  • 1 个回答
  • 5159 Views
Martin Hope
Thomas Weller
Asked: 2016-01-10 12:49:40 +0800 CST

导入将由程序安装的用户

  • 2

我正在从旧的 Ubuntu 10.04 服务器迁移到另一台机器,同时升级到 14.04。

我的任务之一是迁移用户,因此我在旧机器上导出了 UID > 1000 的用户列表,然后将该列表附加到新机器上的列表中

cat userlist >> /etc/passwd

对/etc/shadow.

我注意到一些用户可能不是手动创建的,而是安装程序的结果。就我而言,这些用户是vmail和spamd。

现在我想知道,在安装程序之前导入这些用户是否会导致任何问题。我是不是该

  1. 首先安装dovecot和spamassassin,然后导入用户,检查结果pwck并删除重复项
  2. 导入用户,然后安装dovecot,spamassassin因为它将重用现有用户并且不会引起问题
  3. 完全不同的东西
passwd
  • 1 个回答
  • 48 Views
Martin Hope
Thomas Weller
Asked: 2015-12-14 03:15:02 +0800 CST

/etc/hostname 是否仅供内部使用?

  • 0

我已经阅读了“如何设置完全限定的域名”这个问题,我试图理解“the”主机名(似乎只有一个)和域名(通过 DNS,我可以有很多)之间的区别单个 IP 地址的名称)。

难道里面的hostname/etc/hostname只是一个公司内部名称,方便我区分不同的机器?这是人们根据星球大战头像、希腊哲学家等命名的名字吗?如果没有 DNS 条目,这个名称对公司外部的任何人有影响吗?

例子:

/etc/hostname 包含

alpha

我的 DNS 域是example.comDNS 知道www.example.com并且mail.example.com

networking
  • 1 个回答
  • 182 Views
Martin Hope
Thomas Weller
Asked: 2015-12-01 14:23:46 +0800 CST

我是否需要将 /etc/crontab 中的更改通知 cron?

  • 3

sudo nano /etc/crontab我已经根据我在网上找到的这个问题编辑了系统 crontab 表。这是否足以运行作业,或者我是否需要cron在编辑文件后使用命令“通知”或“刷新”?

此外,Oracle 网站说我应该使用 验证文件crontab -l,但该命令只列出 root 的 crontab,而不是系统 crontab。我将如何验证系统 crontab?

cron
  • 2 个回答
  • 2003 Views
Martin Hope
Thomas Weller
Asked: 2015-06-30 13:33:05 +0800 CST

通过脚本为具有不同静态IP地址的两个地方设置网络

  • 1

我有一个 Raspberry Pi 2,我想在家里和工作中使用它。在家里它可以获得 DHCP 地址或静态地址 192.168.2.x,但在工作中它必须获得静态 IP 地址 10.10.34.122。

我知道如何通过编辑手动分配静态 IP 地址,/etc/network/interfaces但一旦我这样做,如果我在另一个网络中,我将无法再访问该设备,因此它需要自动检测。

我的想法是创建两个文件(/etc/network/home.if和/etc/network/work.if)并根据需要复制它们。我将从 192 地址开始并尝试 ping 我的 DSL 路由器。如果它响应,则应使用home.if,如果没有,则使用work.if。

到目前为止,我认为这个脚本应该实现我想要的:

#!/bin/bash
# Start with my home setting
cp /etc/network/home.if /etc/network/interfaces
sudo /etc/init.d/networking restart

# If I can ping my router, I'm at home
ping=$(ping 192.168.2.1 -c 1)
#echo $ping
if [[ "$ping" =~ "1 received" ]]; then
        echo "home"
        cp /etc/network/home.if /etc/network/interfaces
else
        echo "work"
        cp /etc/network/work.if /etc/network/interfaces
fi

# Apply the detected settings
sudo /etc/init.d/networking restart

在启动序列期间,我需要将在正确位置执行的脚本放在哪里?

networking
  • 1 个回答
  • 187 Views
Martin Hope
Thomas Weller
Asked: 2015-06-20 14:33:05 +0800 CST

我多久可以键入 exit 而不注销?

  • 2

我通过 SSH 登录到 Debian 7,而不是root. 当一直写作sudo变得太多开销时,我做到了sudo su。由于 Debian 默认 shell ( dash?) 不支持Tab完成文件名的密钥,我运行了/bin/bash. 我添加了一些别名.bash_aliases并激活它们,我/bin/bash再次运行(可能再运行几次)直到所有别名都正确。

在进行了更多的系统设置之后,我已经不记得我必须输入多少次exit才能回到开始但没有从 SSH 注销。

其实这没什么大不了的,因为我可以通过 SSH 重新登录,所以这是一个更学术的问题。我想知道是否有办法找出

  1. 到底什么exit会退出,所以我至少可以在每次输入之前检查一下
  2. exit在用户完全注销之前我可以执行多少次

我试过man exit了,但似乎没有可用的手册。help exit也说不多。

我首先想到我可以找到一个可能的解决方案pstree,但恕我直言,它列出的sshd太频繁了,而且sudo su不见了。

:~$ pstree | grep ssh
     |-sshd---sshd---sshd---sh---bash---bash-+-grep
command-line
  • 2 个回答
  • 573 Views
Martin Hope
Thomas Weller
Asked: 2015-05-25 11:11:05 +0800 CST

什么是“apt-get install !!” 做什么以及如何让它发挥作用?

  • 54

我看到有人在打字

apt-get install !!

他这样做了几次,每次都安装了不同的程序。似乎它会自动找出下一步需要什么。

然而,当我在我的 Ubuntu 14.04.1 LTS 虚拟机上尝试时,它只是显示了一些使用说明。谷歌搜索apt-get install !!似乎效果不佳。许多搜索结果不包含双感叹号。

我的机器上有什么功能apt-get install !!和可能缺少什么它不工作?

command-line
  • 4 个回答
  • 5205 Views
Martin Hope
Thomas Weller
Asked: 2014-10-23 13:12:11 +0800 CST

提前询问 sudo 密码

  • 1

我有一些用于备份数据的脚本。其中一些需要 root 访问权限,所以我将它们与sudo. 然而,有时我会感到困惑,例如对于 mySQL 备份,它也需要一个 mySQL root 密码。

我现在已经在这样的 bash 脚本中实现了一个解决方法

echo "Please enter root password"
sudo echo "Ok"
sudo mysqldump --all-databases --opt -u root -p  > ~/backup.dump

这背后的想法是:sudo 密码将被缓存。如果一开始就输入,mySQL备份的时候就不会提示了,所以不能再和mySQL的root密码混淆了。

这种方法使用安全吗?它有什么问题吗?

password
  • 1 个回答
  • 356 Views
Martin Hope
Thomas Weller
Asked: 2014-09-28 13:30:05 +0800 CST

我可以使用 cd../.. 作为别名吗?

  • 12

我同时使用 Windows 和 Ubuntu,并在两者上执行控制台操作。

在 Windows 上我可以做一个

C:\Users\Thomas>cd..\..
C:\>

但是,在 Linux 上这不起作用,无论是反斜杠还是正斜杠。

21:17:10 $ cd../..
bash: cd../..: No such file or directory

因为我经常犯这个错误,所以我尝试.bash_aliases为这种情况定义一个别名:

alias cd../..='cd ../..'
alias cd..\..='cd ../..'

当我开始一个新的 bash 时,我得到

21:16:26 $ bash
bash: alias: `cd../..': invalid alias name

cd..\..我将如何为和cd../..正确设置别名?

cd..\..转义字符似乎有问题:

21:39:43 $ cd..\..
bash: cd....: command not found

它不起作用,即使我为cd.....

bash
  • 4 个回答
  • 6428 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve