标签: shell

移动文件和文件夹,除了少数

将一台服务器的站点移动到另一台服务器时,我犯了一个可怕的错误。我们使用 virtualmin 在新服务器中创建了虚拟主机。但是在将文件从旧服务器恢复到新服务器时,我错误地复制了“/home/VIRTUALHOSTS-NAME/”而不是“/home/VIRTUALHOSTS-NAME/public_html”中的所有文件。现在我必须将所有文件从虚拟主机的主目录移动到 public_html 目录,除了几个默认文件夹,如:fcgi-bin、public_html、awstats、cgi-bin 等。这可以用 shell 脚本或任何带有管道的命令自动化吗?

scripting shell

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

允许开发者访问 linux 服务器上的命令行

有没有办法为开发人员创建一个shell用户登录到服务器并执行命令行php脚本以查看输出?它们必须被限制在一个文件夹中。

换句话说,我不想通过登录并运行 >php phpfile.php 来为开发人员提供 root 访问权限,只是一个基本的访问权限来查看某些命令行 php 脚本的输出

shell centos users

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

Bash:从历史中执行一系列命令

如何从我的 bash 历史记录中执行一系列命令?例如,如果我想在我的 bash 历史记录中执行编号为 34 到 42 的命令,我尝试过以下操作:

for n in $(seq 34 42); do
   exec \!$n;
done
Run Code Online (Sandbox Code Playgroud)

但这并不能解决问题,是吗。有任何想法吗?

谢谢!

linux shell bash

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

在 bash 脚本中回答交互式问题

我有一个支持奇怪的“ssh”的设备。它不支持密钥身份验证,我的问题是我不知道如何提供用户名和密码(-l 或 user@host 不起作用)。它在连接后要求输入登录名和密码,如下所示:

zeratul@antioch:~$ ssh 1.2.3.4

Please login: user
password : 
Login incorrect
Run Code Online (Sandbox Code Playgroud)

甚至可以从shell脚本中做到这一点还是我可以忘记它?

提前致谢。

ssh shell bash

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

从任何位置运行已编译的 c 程序

快速提问。编译程序后,我总是必须通过在名称前加上 ./ 来明确告诉它从当前目录运行。例如$ ./testprog -argument1

有没有办法设置某种别名,允许我简单地通过说来调用它$ testprog -argument1,基本上允许我从任何位置运行程序?

shell bash path

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

暂时将 STDOUT 重定向到另一个文件描述符,但仍会重定向到屏幕

我正在制作一个在内部执行一些命令的脚本,这些命令显示一些输出STDOUTSTDERR以及,但这没问题)。我需要我的脚本生成一个 .tar.gz 文件到STDOUT,所以脚本中执行的一些命令的输出也会转到STDOUT,这以输出中无效的 .tar.gz 文件结束。

因此,简而言之,可以将第一个命令输出到屏幕(因为我仍然想看到输出)但不能通过STDOUT? 此外,我想保持STDERR原样,以便那里只显示错误消息。

我的意思的一个简单例子。这将是我的脚本:

#!/bin/bash

# the output of these commands shouldn't go to STDOUT, but still appear on screen
some_cmd foo bar
other_cmd baz

#the following command creates a tar.gz of the "whatever" folder,
#and outputs the result to STDOUT
tar zc whatever/
Run Code Online (Sandbox Code Playgroud)

我试过搞乱exec文件描述符,但我仍然无法让它工作:

#!/bin/bash

# save STDOUT to #3
exec 3>&1

# the output of these commands should go to …
Run Code Online (Sandbox Code Playgroud)

linux shell bash redirection stdout

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

如何在不创建文件的情况下执行 shell 脚本

如何在不创建文件的情况下执行 shell 脚本?例如,假设我有以下脚本 ( testscript):

#!/bin/bash
function run_free() {
   free -m
}

run_free
Run Code Online (Sandbox Code Playgroud)

然后我当然可以执行此操作: sh testscript

不过,我想避免创建文件。我试过:

sh echo '#!/bin/bash function run_free() { free -m } run_free'

哪个不起作用。有任何想法吗?

shell bash sh shell-scripting

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

如何使用 MEgaRaid 了解任何虚拟磁盘 LSI RAID 的硬盘成员

我得到一台带有 LSI MEgarad 卡的机器。我知道虚拟磁盘有什么:

Adapter: 0
Product Name: LSI MegaRAID SAS 9260-4i
Memory: 512MB
BBU: Absent
Serial No: SV11807006
==============================================================================
Number of DISK GROUPS: 3
Run Code Online (Sandbox Code Playgroud)

但我不知道每个虚拟磁盘(0、1、2)上都有哪些磁盘,哪些磁盘是 HotSpare ......

 MegaCli -LDInfo -Lall -aAll


 Adapter 0 -- Virtual Drive Information:
 Virtual Disk: 0 (Target Id: 0)
 Name:
 RAID Level: Primary-5, Secondary-0, RAID Level Qualifier-3
 Size:16.371 TB
 State: Optimal
 Stripe Size: 64 KB
 Number Of Drives per span:3
 Span Depth:3
 ....
 Check Consistency        : Completed 46%, Taken 254 min.

 Virtual Disk: 1 (Target …
Run Code Online (Sandbox Code Playgroud)

raid shell megacli

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

新贵脚本与命令行:为什么会有这种行为差异?

我正在尝试设置 Tomcat 以从新贵开始。我发现以下作品:

  description "Tomcat Server"

  start on runlevel [2345]
  stop on runlevel [!2345]
  respawn
  respawn limit 10 5

  setuid tomcat

  env JAVA_HOME=/usr/lib/jvm/default-java
  env CATALINA_HOME=/opt/apache-tomcat-7.0.34

  script
    chdir $CATALINA_HOME
    exec $CATALINA_HOME/bin/catalina.sh run
  end script
Run Code Online (Sandbox Code Playgroud)

但是如果我删除chdir,tomcat 会启动,但是FileNotFound当我.wars加载时有很多例外。(也就是说:.wars它们自己确实加载了但它们在加载时抛出异常。)

请注意,此行为我从命令行调用时所看到的不同catalina.sh。从命令行调用,我可以/opt/apache-tomcat-7.0.34/bin/catalina.sh run 从任何目录(没有 chdiring)运行,一切都很好。

那么为什么chdir在我的新贵脚本中是必要的呢? (新贵环境与我的命令行环境有何不同?)


我不使用 chdir 时看到的错误示例:

Feb 22, 2013 3:00:11 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive my-war.war
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: my-war.log …
Run Code Online (Sandbox Code Playgroud)

scripting tomcat shell upstart

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

更改shell后ssh root访问被拒绝

在我尝试更改服务器外壳后,我无法再以 root 身份登录。

首先,我以 root 身份安装了 z-shell (zsh),然后我想将其更改为我的默认 shell。因此我使用了“chsh”。我的错是,我输入了错误的路径。通过 Putty 注销并重新登录后,我收到消息“拒绝访问”。

当 shell 的路径不存在时,这是可以预见的。所以我登录到我的控制面板,并通过文件管理器更改了 /etc/passwd 文件:我更正了第一行的最后一部分 - root 用户:

root:x:0:0:root:/root:/usr/bin/zsh

即使我将其更改为旧的 shell /bin/bash 或 /bin/sh 它也不起作用。我读到 passwd 和 shadow 不是实时文件,所以我重新启动了服务器,但仍然存在同样的问题

任何想法,我还能做什么?

操作系统:Debian 5 + Parallels Plesk 11

debian shell root passwd

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

标签 统计

shell ×10

bash ×5

linux ×2

scripting ×2

centos ×1

debian ×1

megacli ×1

passwd ×1

path ×1

raid ×1

redirection ×1

root ×1

sh ×1

shell-scripting ×1

ssh ×1

stdout ×1

tomcat ×1

upstart ×1

users ×1