如何以编程方式(使用 BASH)将 AllowOverride<Directory /var/www/>从 'None' 更改为 'All' ?
而不必手动编辑/etc/apache2/sites-enabled/000-default
通常我可以使用
sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/sites-enabled/000-default
但是我的 000-default 文件还有其他我不想更改的 AllowOverride 指令:
NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, …Run Code Online (Sandbox Code Playgroud) 我在 CentOS 机器上编译一个软件时遇到了困难,下面列出的问题是具体的,但我希望由此得出的正确方法可以应用于类似的问题,因为这似乎不是这个软件特有的问题。不过进入正题...
在 CentOS 5.4 上构建标准化虚拟机时,我一直遇到编译问题,并且我对 a)为什么会发生此错误以及 b)如何修复它一无所知,并希望其他人也偶然发现了这个问题,我希望有人可以帮助我在这里找到解决方案。
当我尝试运行安装程序时,我在尝试编译 Ruby Enterprise 时遇到configure: error: newly created file is older than distributed files!错误,如下所示,并且论坛上提供的解决方案(检查齿,并触摸文件以更新与它们相关的时间)不会似乎没有在这里帮忙。
我可以采取哪些步骤来找出此问题的原因?
[vagrant@vagrant-centos-5 ruby-enterprise-1.8.7-2009.10]$ sudo ./installer
Welcome to the Ruby Enterprise Edition installer
This installer will help you install Ruby Enterprise Edition 1.8.7-2009.10.
Don't worry, none of your system files will be touched if you don't want them
to, so there is no risk that things will screw up.
You can expect this from the installation process: …Run Code Online (Sandbox Code Playgroud) 我有网络项目/var/www/projects/some/long/path/strange-project-name
现在我想在终端输入:
webs str{TAB}
Run Code Online (Sandbox Code Playgroud)
它应该自动完成webs strange-project-name(基于ls /var/www/projects/some/long/path/),并且在执行命令后,pwd应该指向项目路径。cd strange-project-name自动完成功能有点智能
您将如何实现此功能?一些智能别名?函数在.bashrc? 脚本?
一些智能别名?
当我有一个像这样的暴发户脚本时..
exec start-stop-daemon --exec /tmp/test.sh --background --start
Run Code Online (Sandbox Code Playgroud)
我想将pid文件保存在某个地方,然后将其用于stopor restart,对吧?
那么默认创建的pid文件在哪里呢?
我需要 sed 删除该行的第一个和最后一个字符,例如源
(192.168.3.0)
Run Code Online (Sandbox Code Playgroud)
结果
192.168.3.0
Run Code Online (Sandbox Code Playgroud)
尝试这样:
sed 's/^.\(.*\).$/\1/'
Run Code Online (Sandbox Code Playgroud)
但它也会删除 0 个字符
如何避免这种行为?
我想在系统启动时使用systemd. 我试图通过添加上面的脚本来做到这一点。但服务没有启动。
我的启动服务
[Unit]
Description=Startup
[Service]
ExecStart=/usr/local/sbin/my-startup.sh
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
我的启动.sh
cd /var/www/test.com
nohup java -jar *.jar>test.out 2>test.err &
Run Code Online (Sandbox Code Playgroud)
但是服务器启动时应用程序没有启动。
? my-startup.service - Startup
Loaded: loaded (/etc/systemd/system/my-startup.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Wed 2018-12-12 16:22:52 +0530; 27s ago
Process: 650 ExecStart=/usr/local/sbin/my-startup.sh (code=exited, status=0/SUCCESS)
Main PID: 650 (code=exited, status=0/SUCCESS)
Dec 12 16:22:52 localhost.localdomain systemd[1]: Started Startup.
Dec 12 16:22:52 localhost.localdomain systemd[1]: Starting Startup...
Run Code Online (Sandbox Code Playgroud) 我的 Linux 托管服务器上运行着一个节点应用程序。
有时应用程序崩溃,我需要重新启动它,所以我登录并键入以下命令:
pkill node
cd public_html/n49900_dpndev
node server.js &
Run Code Online (Sandbox Code Playgroud)
然后应用程序再次运行。
现在我想把它放到一个脚本中,所以我只需要启动脚本(或者可以从一个 PHP 脚本执行它,例如)。
我创建了一个名为“startnode”的文件:
#!/bin/bash
pkill node
cd public_html/n49900_dpndev
node server.js &
Run Code Online (Sandbox Code Playgroud)
我用chmod 755 startnode.
但是当我用./startnode它执行它时,它会响应:
已终止
我需要做什么才能让我手动输入的命令也能在 bash 脚本中工作?
我创建了一个脚本来将二进制文件作为服务执行。但是该服务不会启动该服务,但是当我停止该服务时,它会显示多个 pid。
我正在使用 RHEL 7.Here 是完整的细节
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
Run Code Online (Sandbox Code Playgroud)
通常我们运行脚本如下 ./pipeline --config pipeline.conf
[Unit]
Description=Pipeline service
[Service]
Type=simple
User=cisco
ExecStart=/hfqp/bin/pipeline --config /hfqp/bin/pipeline.conf
Run Code Online (Sandbox Code Playgroud)
并且做了以下事情
systemctl daemon-reload
systemctl start pipeline.service
Run Code Online (Sandbox Code Playgroud)
即使这样也行不通。
这是错误日志
? pipeline.service - Pipeline service
Loaded: loaded (/etc/systemd/system/pipeline.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Tue 2019-04-16 06:29:34 GMT; 19s ago
Process: 10195 ExecStart=/home/cisco/bigmuddy-network-telemetry-pipeline/bin/executePipeline.sh --daemon (code=exited, status=1/FAILURE)
Main PID: 9962 (code=exited, …Run Code Online (Sandbox Code Playgroud) 我已经从共享主机转移到 VPS,并在我的 HyperVM 中看到我分配的20 GB磁盘空间中有11 GB正在使用。
根据我上传之前这些文件在 Windows 上的大小,我所有的文件占用的空间不到 100 MB。
我有 11 个网站在 11 个目录中运行。Linux 上可以准确显示每个目录占用多少空间的最佳命令/方式是什么,例如Windows 上的TreeSize工具?
我有一个标准的 apache 错误日志文件。我想看看是什么 URL 导致了 404,因为我已经移动了这个网站,我想找到坏链接。任何人都可以推荐一个 bash 片段,它会使用 awk 或其他东西来解析这个日志来向我展示流行的 404s 吗?
我知道有针对此类事情的高级程序。我只是在寻找一些简单的东西。