我想为我的服务器做一些简单的日志记录,这是一个在 Docker 容器中运行的小型 Flask 应用程序。
这是 Dockerfile
# Dockerfile
FROM dreen/flask
MAINTAINER dreen
WORKDIR /srv
# Get source
RUN mkdir -p /srv
COPY perfektimprezy.tar.gz /srv/perfektimprezy.tar.gz
RUN tar x -f perfektimprezy.tar.gz
RUN rm perfektimprezy.tar.gz
# Run server
EXPOSE 80
CMD ["python", "index.py", "1>server.log", "2>server.log"]
Run Code Online (Sandbox Code Playgroud)
正如你在最后一行看到的,我将 stderr 和 stdout 重定向到一个文件。现在我运行这个容器和 shell
docker run -d -p 80:80 perfektimprezy
docker exec -it "... id of container ..." bash
Run Code Online (Sandbox Code Playgroud)
并注意以下事项:
服务器正在运行,网站正在运行
没有 /srv/server.log
ps aux | grep python 产量:
root 1 1.6 3.2 54172 16240 …Run Code Online (Sandbox Code Playgroud) || :在 shell 脚本的上下文中是什么意思?
我刚刚遇到了这条线:
eval "/usr/bin/mybinary aparameter" || :
Run Code Online (Sandbox Code Playgroud) 我是新手。我在 .bashrc 文件中设置了一个别名,如下所示。
alias myrm='mv /home/user/Trash/*'
Run Code Online (Sandbox Code Playgroud)
目的是当我使用 myrm 注释时,例如 $myrm foo,文件“foo”必须移动到我的主文件夹 (/home/user/Trash) 中的垃圾文件夹。
然后我做了
$source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
在此之后,当我尝试通过键入 $myrm foo 来使用 myrm 时,我收到以下错误消息。
mv: 无法统计 '/home/user/Trash/*': 没有那个文件或目录
如何解决这个问题?
标题样的说,这一切:我想获得的东西,如输出的那些整齐的彩色列ls -al,也就是说,在10basetom的回答到这个问题。
我想生成两个子进程,但是要等到第一个子进程到达执行中的某个点(可以通过检查 stdout 来确定),然后再生成第二个子进程。我不确定哪些 unix 命令会参与完成这个任务,并且由于 unix 命令名称的简洁和有时神秘的性质,很难通过谷歌找到任何东西。
我不是在寻求解决我正在尝试解决的特定问题的解决方案(尽管任何额外的指针都会受到赞赏),我主要关心的是知道我想要查找和学习使用哪些 unix 命令。
TMUX 默认启动 shell 作为登录 shell。我正在寻找一种方法来否定文件中的这种行为(以便它启动非登录 shell).tmux.conf。
目前我可以tmux set-option -g default-command "/bin/bash"在 tmux 之外使用。但这只能在 tmux 已经启动时才能完成,我似乎找不到将它集成到 conf 文件的方法。
我正在了解 docker-compose.yaml 的工作原理。我正在尝试在撰写文件中定义一个卷并将其挂载在本地的挂载点。我尝试运行一个基本的 .yaml 来挂载我的卷:
version: '3.2'
services:
mydb:
image: postgres
volumes:
- db-data:var/lib/postgres/data
ports:
- "5432:5432"
volumes:
- db-data:
- driver: local
Run Code Online (Sandbox Code Playgroud)
但是当我运行时docker-compose down,我收到一个错误:
$ docker-compose down
The Compose file '.\docker-compose.yml' is invalid because:
services.mydb.volumes 'type' is a required property
services.mydb.volumes 'type' is a required property
Run Code Online (Sandbox Code Playgroud)
我对此很陌生,并且仍然了解使用 Docker 的所有细微差别。我认为我的问题是缩进错误或我如何使用扩展名调用版本号,但我似乎无法理解错误。
我创建了一个 Windows 快捷方式,其目标看起来像
"C:\Windows\System32\bash.exe" php /c/script.php
(我知道我可以使用我的 php cli 的 Windows 版本来运行它,但出于好奇)
当我单击我的快捷方式时,它只是弹出一个 cmd 窗口并关闭(脚本应该需要几分钟才能运行。
有没有办法将命令通过管道传输到 Windows 上的 bash.exe?
在 Ubuntu 18.04 LT .bashrc 文件中有以下内容:
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color) color_prompt=yes;;
esac
Run Code Online (Sandbox Code Playgroud)
xterm-color) 不是不平衡括号的实例吗?为什么该行以两个分号结尾?
需要说明的是,这不是我写的。它在原始文件中,不是我编辑的。
如果有语法错误,我应该向谁报告?
我有自定义脚本来挂载谷歌驱动器。
此脚本的一部分是以下代码:
if [ ! "$(which google-drive-ocamlfuse)" ]
then
echo "Install google-drive-ocamlfuse first!"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
从终端执行,就像魅力一样。
因此,我将其配置为服务:
[Unit]
Description=Mount and umount google drives
[Service]
User=<usernamehere>
Type=oneshot
RemainAfterExit=true
ExecStart=/home/<usernamehere>/mybscripts/gdrivemounter.sh -m
ExecStop=/home/<usernamehere>/mybscripts/gdrivemounter.sh -u
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/home/<usernamehere>/.Xauthority"
[Install]
WantedBy=graphical.target
Run Code Online (Sandbox Code Playgroud)
不幸的是,我看到退出代码:“首先安装 google-drive-ocamlfuse!” 当我检查服务状态时。
命令which google-drive-ocamlfuse在用户和 root 下为我提供了有效路径:
$ which google-drive-ocamlfuse
/home/<usernamehere>/.opam/default/bin/google-drive-ocamlfuse
Run Code Online (Sandbox Code Playgroud)
问题出在哪儿?