对于 bash,环境变量的路径分隔符$PATH
是":"
所以出于好奇:
如果有一个名为的目录
$HOME/with:character
有什么办法可以将它添加到搜索路径中?
请注意,我认为添加:
到文件名不是一个非常聪明的主意,但我想知道如果我遇到过这样的目录,是否可以将这样的目录添加到搜索路径中
我尝试使用反斜杠,但这似乎不起作用:
export PATH="$PATH:$HOME/with\\:character"
双:
( ::
) 也不起作用
对于 bash,环境变量的路径分隔符$PATH
是":"
所以出于好奇:
如果有一个名为的目录
$HOME/with:character
有什么办法可以将它添加到搜索路径中?
请注意,我认为添加:
到文件名不是一个非常聪明的主意,但我想知道如果我遇到过这样的目录,是否可以将这样的目录添加到搜索路径中
我尝试使用反斜杠,但这似乎不起作用:
export PATH="$PATH:$HOME/with\\:character"
双:
( ::
) 也不起作用
/dev/sdb
我有一个带有大小为 10G的虚拟磁盘(显示为 )的 VM
管理员将虚拟磁盘的大小增加到 60G。
我重新启动了机器,现在看到磁盘更大了。
root@DMZMHLX3:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
...
sdb 8:16 0 60G 0 disk
└─sdb1 8:17 0 10G 0 part /app
...
现在我想添加另一个分区:
gdisk 告诉我磁盘大小为 60G,但最后一个可用扇区是对应于旧的 10G 磁盘映像大小的扇区:
root@DMZMHLX3:~# gdisk -l /dev/sdb
GPT fdisk (gdisk) version 1.0.1
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sdb: 125829120 sectors, 60.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): FCE659D1-3690-4C3C-93EC-79B51EE8556D
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 20971486
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 20969471 10.0 GiB 8300
最后一个可用扇区应该是 125829120 而不是 20971486。
因此,尽管磁盘映像大小增加并且 VM 看到了变化,但我不知道如何使用新的可用空间。
fdisk 向我展示:
root@DMZMHLX3:~# fdisk -l /dev/sdb
GPT PMBR size mismatch (20971519 != 125829119) will be corrected by w(rite).
Disk /dev/sdb: 60 GiB, 64424509440 bytes, 125829120 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: FCE659D1-3690-4C3C-93EC-79B51EE8556D
Device Start End Sectors Size Type
/dev/sdb1 2048 20969471 20967424 10G Linux filesystem
它识别不匹配:
GPT PMBR 大小不匹配 (20971519 != 125829119) 将由 w(rite) 纠正。但是当尝试写入 fdisk 失败时:
Command (m for help): w
GPT PMBR size mismatch (20971519 != 125829119) will be corrected by w(rite).
fdisk: failed to write disklabel: Invalid argument
root@xxx:~#
我该如何解决这个问题?
最终目标是增加现有分区的大小,但即使我可以添加新分区,我也已经很高兴了
我正在寻找找出远程跟踪分支是否与当前分支不同的最快方法。
上下文:我想运行一个 cron 作业,这将找出本地分支的当前 HEAD 是否与其远程跟踪分支相同。可能有数百台主机在运行此 cron 作业(每个主机可能位于不同的分支/HEAD)。所以我想尽可能快速高效地实现这一点。(最小可能的网络负载和 git 服务器上的 CPU 负载)
目前我执行 agit fetch
然后git status
。但是,即使远程主机上的其他分支发生变化,git fetch
也会忙碌一段时间git status
,效率也不高。
存储库托管在 gitlab 服务器上(仅限 https 访问,存储库需要身份验证)
因此,纯 git 解决方案与 gitlab 解决方案一样受欢迎。
我想将解决方案实现为bash
脚本或python
脚本。pip install
任何有用的依赖都不是问题。
事实上,我想对主机上的几个存储库执行此检查(都可以使用相同的凭据访问)。我想,如果我可以优化一项检查,那么我会尽可能好,并且我将为每个存储库执行此检查。
但是,如果有一个技巧可以通过使用一个脚本查询多个存储库来提高性能,那么这也是一种选择。(例如只验证一次,查询多个存储库)
我有一个行为大致的 bash 脚本。
#!/bin/bash
if some_condition ; then
echo please enter some integer
read a
else
a=3
fi
# here 'd like to switch in the background
while true ; do
echo beep
sleep $a
done
所以脚本会提示输入,然后执行一些后台任务。
在我启动脚本的那一刻,回答所有可能出现的问题/提示,按下CTRL-Z
并输入bg
。
然后每当我想让脚本停止时,我都会输入
fg ; CTRL-C
我可以在同一个脚本中以编程方式(将其置于后台)执行此操作吗?
停止将始终是手动步骤
我想做的是运行命令,将所有输出写入文件并显示前 n 行。
在这个例子中 n=10
我不太喜欢的一种解决方案是:
./program > tempfile ; cat tempfile >> thefile ; head -n 10 tempfile
我尝试的是
./program | tee -a thefile | head -n 10
但是这里的问题是 ./program 过早终止
没有创建中间临时文件有什么技巧吗?(就像一个 head 命令只显示前 n 行,但继续默默地阅读其余部分)
重现管道和头部问题的一种方法是:
n=0 ; while [[ $n -lt 200 ]] ; do echo ======================== $n ; n=$((n + 1)) ; done | tee -a toto | head -n 3 ; echo "-" ; tail -n 200 toto
事实上,对我来说,文件的最后一行toto
是随机的并且会发生变化,但几乎从来不是第 199 行。