我在 Unix 系统上有一个 shell。
是否有一个命令可以告诉我我正在使用哪个 shell?(bash、zsh 等)
我在 Unix 系统上有一个 shell。
是否有一个命令可以告诉我我正在使用哪个 shell?(bash、zsh 等)
我正在尝试使用基本身份验证关闭端口(对于普罗米修斯的推送网关),所以不是 nginx 的大专家,所以有人可以给我和建议我哪里错了吗?
我有 9091 端口,应该在 auth 前面从外部关闭。此端口正在被 pushgateway 使用
我当前的 nginx 配置:
events { }
http {
upstream prometheus {
server 127.0.0.1:9090;
keepalive 64;
}
upstream pushgateway {
server 127.0.0.1:9091;
keepalive 64;
}
server {
root /var/www/example;
listen 0.0.0.0:80;
server_name __;
location / {
auth_basic "Prometheus server authentication2";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://prometheus;
}
}
server {
root /var/www/example;
listen 0.0.0.0:3001;
server_name __;
location / {
auth_basic "Pushgateway server authentication";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://pushgateway;
}
}
}
所以基本身份验证适用于:3001,但 9091 仍然打开。我试图改变它的下一个方式:
server {
root /var/www/example;
listen 0.0.0.0:3001;
listen 0.0.0.0:9091;
server_name __;
location / {
auth_basic "Pushgateway server authentication";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://pushgateway;
}
}
并且工作正常,但是...... pushgateway 无法开始尝试监听:9091 并抛出“bind:address is already in use”。我怎样才能避免它并将pushgateway隐藏在nginx前面?
Pushgatewa 的配置:
ExecStart=/usr/local/bin/pushgateway --web.listen-address=":9091" --web.telemetry-path="/metrics" --persistence.file="/tmp/metric.store" --persistence.interval=5m --log.level="info" --log.format="logger:stdout?json=true"
我有一个本地开发工具 ( LocalWP ),它通过修改/etc/hosts
.
例如,如果我将我的站点设置为 Local www.foo.com
,它会将以下内容附加到 hosts 文件中:
127.0.0.1 www.foo.com
这很好,但我需要在这个域中排除一个子目录(不是子域),所以它解析到另一个(原始)IP。
当然,这是不可能的,etc/hosts
因为它只是一个 DNS 指针,除了域之外不解析任何内容。但是,我想知道是否有另一个工具可以用来从当前hosts
文件中排除子目录,并将其指向一个新的 IP。
我想知道像 dnsmasq 这样的东西是否可以实现这一点,或者是否有另一个工具可以用于基于路径解析的一些条件 DNS 行为,而不仅仅是域。
ssh user@host "umask"
给 0174
ssh user@host
服务器外壳的 umask 给出 0002
你能解释一下它是怎么发生的吗?
UPD:实际上,是 /etc/passwd 覆盖了 umask。
我正在尝试实现一个作业编排器,其代理/工作程序通过 SSH 会话/shell 连接到机器。我想将(可能是二进制)文件传输到这些代理(任何类型的任务都可能需要)。
显然,如果可以以任何方式配置端口,则nc
可以执行一些指令。但是,我正在尝试获得适用于最严格设置的东西。
在这种设置中(手动)工作时,我经常做的事情是将文件序列化为 Base64 或类似文件,然后将数据“粘贴”到控制台会话中,例如:
echo -n "BINARY_BASE64_DATA" | base64 --decode > file_destination.file
我想为我上面描述的代理/工作人员实现类似的东西。
问题的关键在于使用什么工具来获得最大的兼容性表面。大多数 Linux 机器(甚至是最基本的 Docker/Vagrant 映像)似乎都已base64
安装。然而,FreeBSD 似乎没有预装这个命令。我知道我可以使用或 Ports 安装它pkg
,但我想尽可能多地使用开箱即用的东西。
我寻找了更多 POSIX/Unix-y 的东西,发现了这个:https ://en.wikipedia.org/wiki/List_of_Unix_commands它说:
这是 IEEE Std 1003.1-2008 指定的 Unix 命令列表,它是单一 UNIX 规范 (SUS) 的一部分。这些命令可以在 Unix 操作系统和大多数类 Unix 操作系统上找到。
并且有一个长长的命令表,其中相关的命令uuencode
都uudecode
被列为“强制”。
在 FreeBSD 上,我可以看到它是开箱即用的。
在我的 Ubuntu 桌面上,它也存在,虽然我不知道它是开箱即用的,还是作为我安装的其他东西的依赖项安装的。但是,在 Ubuntu Vagrant 框(generic/ubuntu2004
特别是 )中,调用uuencode
会显示以下消息:
$ uuencode
Command 'uuencode' not found, but can be installed with:
apt install sharutils
Please ask your administrator.
在我基于 Ubuntu 14.04 的 Docker 映像上,我得到:
# uuencode
bash: uuencode: command not found
uuencode
/uudecode
开箱即用?这是否使其不符合 POSIX/Unix 标准?base64
安装二进制文件以与协调器一起使用?Apache "proxy:unix:..." 处理程序是做什么的,它记录在哪里?我看到它在这里和那里使用,例如:
SetHandler "proxy:unix:..."
例如在这个最近的问题中,或者在SetHandler和mod_fcgi文档中。
我可以猜测它可能会通过管道连接到 Unix 套接字,但是mod_fcgi 示例中的语法呢?文档在哪里?
我希望我的服务器上的fox
用户可以是/更改用户并以user42
无密码方式(fox
用户没有密码,他们使用 SSH 密钥登录)::
srv6:/etc# grep user42 /etc/sudoers
fox ALL=(ALL:ALL) NOPASSWD: /bin/su user42
srv6:/etc#
如果他们这样做,它会很好地工作sudo su user42
:
fox@srv6:~$ sudo su user42
user42@akd6:/home/fox$
但是,如果我尝试使用sudo su - user42
NOPASSWD 清除外壳并不起作用
fox@srv6:~$ sudo su - akd
[sudo] password for fox:
我正在使用 AWS Linux 2 AMI 目前我有AWS EC2
最近mysql不再工作了,但它以前工作过。
当我试图这样做时
sudo service mysql start
或者
sudo service mysqld start
它说service mysql
找不到单位
我也尝试过sudo service httpd start
并启动mysql
但仍然无法正常工作
我还尝试检查我的 ec2 的磁盘使用情况
使用这个命令:df
这给了我这样的输出
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 2000788 0 2000788 0% /dev
tmpfs 2018800 0 2018800 0% /dev/shm
tmpfs 2018800 480 2018320 1% /run
tmpfs 2018800 0 2018800 0% /sys/fs/cgroup
/dev/xvda1 8376300 5880760 2495540 71% /
tmpfs 403764 0 403764 0% /run/user/1000
/dev/xvdal 这里有71%
使用的存储空间
这甚至与为什么mysql
不想开始有关吗?