Linux xargs 命令与深入分析

Linux 命令大全 Linux 命令大全

1.1 为什么需要xargs

管道实现的是将前面的stdout作为后面的stdin,但是有些命令不接受管道的传递方式,最常见的就是ls命令。有些时候命令希望管道传递的是参数,但是直接用管道有时无法传递到命令的参数位,这时候需要xargs,xargs实现的是将管道传输过来的stdin进行处理然后传递到命令的参数位上。也就是说xargs完成了两个行为:处理管道传输过来的stdin;将处理后的传递到正确的位置上。

可以试试运行下面的几条命令,应该能很好理解xargs的作用了:

[root@xuexi tmp]# echo “/etc/inittab” | cat   # 直接将标准输入的内容传递给cat
[root@xuexi tmp]# echo “/etc/inittab” | xargs cat   # 将标准输入的内容经过xargs处理后传递给cat[root@xuexi tmp]# find /etc -maxdepth 1 -name “*.conf” -print0 | xargs -0 -i grep “hostname” -l {} # 将搜索的文件传递给grep的参数位进行搜索,若不使用xargs,则grep将报错

xargs的作用不仅仅限于简单的stdin传递到命令的参数位,它还可以将stdin或者文件stdin分割成批,每个批中有很多分割片段,然后将这些片段按批交给xargs后面的命令进行处理。

通俗的讲就是原来只能一个一个传递,分批可以实现10个10个传递,每传递一次,xargs后面的命令处理这10个中的每一个,处理完了处理下一个传递过来的批,如下图。

但是应该注意的是,尽管实现了分批处理,但是默认情况下并没有提高任何效率,因为分批传递之后还是一次执行一个。而且有时候分批传递后是作为一个参数的整体,并不会将分批中的信息分段执行。这样看来,实现分批传递的目的仅仅是为了解决一些问题。但事实上,xargs提供了“-P”选项,用于指定并行执行的数量(默认只有一个处理进程,不会提升效率,可以指定为N个子进程,或者指定为0表示尽可能多地利用CPU),这样就能让分批操作更好地利用多核cpu,从而提升效率。例如上面分成了两批,指定”-P 2″可以并发执行这两个批,而非执行完第一批再执行第二批。关于并行处理的详细内容,见后文:高速并行处理之:xargs -P

剩下的就是处理xargs的细节问题了,比如如何分割(xargs、xargs -d、xargs -0),分割后如何划批(xargs -n、xargs -L),参数如何传递(xargs -i)。另外xargs还提供询问交互式处理(-p选项)和预先打印一遍命令的执行情况(-t选项),传递终止符(-E选项)等。

其实这里已经暗示了xargs处理的优先级或顺序了:先分割,再分批,然后传递到参数位。

分割有三种方法:独立的xargs、xargs -d和xargs -0。后两者可以配合起来使用,之所以不能配合独立的xargs使用,答案是显然的,指定了-d或-0选项意味着它不再是独立的。

分批方法从逻辑上说是两种:-n选项和-L选项。但我觉得还应该包含传递阶段的选项-i。假如-i不是分批选项,则它将接收分批的结果。然而事实并非如此,当-i选项指定在-n和-L选项之后,会覆盖-n或-L。后文中我将其当成分批选项来介绍和说明。

当然上述只是一个概括,更具体的还要看具体的选项介绍,而且很可能一个xargs中用不到这么多选项,但是理解这个很重要,否则在分割分批和传递上很容易出现疑惑。

1.2 文本意义上的符号和标记意义上的符号

在解释xargs和它的各种选项之前,我想先介绍一个贯穿xargs命令的符号分类:文本意义上的空格、制表符、反斜线、引号和非文本意义上的符号。我觉得理解它们是理解xargs分割和分批原理的关键。

文本意义上的空格、制表符、反斜线、引号:未经处理就已经存在的符号,例如文本的内容中出现这些符号以及在文件名上出现了这些符号都是文本意义上的。与之相对的是非文本意义的符号,由于在网上没找到类似的文章和解释,所以我个人称之为标记意义上的符号:处理后出现的符号,例如ls命令的结果中每个文件之间的制表符,它原本是不存在的,只是ls命令处理后的显示方式。还包括每个命令结果的最后的换行符,文件内容的最后一行结尾的换行符

如下图,属于标记意义上的符号都用红色圆圈标记出来了。

其实它们的关系有点类似于字面意义的符号和特殊符号之间的关系,就像有时候特殊符号需要进行转义才能表示为普通符号。

因为翻了百度、谷歌和一些书都没说这些方面的分类。但文本和非文本的符号在xargs分割的时候确实是区别对待的,所以我觉得有必要给个称呼好引用并说明它们,也就是说以上称呼完全是我个人的称呼。

1.3 分割行为之:xargs

[root@xuexi tmp]# cd /tmp
[root@xuexi tmp]# rm -fr *
[root@xuexi tmp]# mkdir a b c d test logdir shdir
[root@xuexi tmp]# touch “one space.log”
[root@xuexi tmp]# touch logdir/{1..10}.log
[root@xuexi tmp]# touch shdir/{1..5}.sh
[root@xuexi tmp]# echo “the second sh the second line” > shdir/2.sh
[root@xuexi tmp]# cat <<eof>shdir/1.sh
> the first sh
> the second line
> eof

对于xargs,它将接收到的stdout处理后传递到xargs后面的命令参数位,不写命令时默认的命令是echo。

[root@xuexi tmp]# cat shdir/1.sh | xargsthe first sh the second line
[root@xuexi tmp]# cat shdir/1.sh | xargs echothe first sh the second line

将分行处理掉不是echo实现的,而是管道传递过来的stdin经过xargs处理后的:将所有空格、制表符和分行符都替换为空格并压缩到一行上显示,这一整行将作为一个整体,这个整体的所有空格属性继承xargs处理前的符号属性,即原来是文本意义的或标记意义的在替换为空格后符号属性不变。这个整体可能直接交给命令或者作为stdout通过管道传递给管道右边的命令,这时结果将作为整体传递,也可能被xargs同时指定的分批选项分批处理。

如果想要保存制表符、空格等特殊符号,需要将它们用单引号或双引号包围起来,但是单双引号(和反斜线)都会被xargs去掉。

另外经过我的测试,单引号和双引号的存在让处理变的很不受控制,经常会影响正常的分割和处理。

如果不指定分批选项,xargs的一整行结果将作为一个整体输出,而不是分隔开的。也许看处理的结果感觉是分开处理的,例如下面的第一个命令,但是这是因为ls允许接受多个空格分开的参数,执行第二个命令,可以证明它确实是将整行作为整体传输给命令的。

[root@xuexi tmp]# find /tmp -maxdepth 1 | xargs ls

/tmp/sh.txt

/tmp:

a b c d logdir shdir sh.txt test

/tmp/a:

/tmp/b:

/tmp/c:

/tmp/d:

/tmp/.ICE-unix:

/tmp/logdir:

10.log 1.log 2.log 3.log 4.log 5.log 6.log 7.log 8.log 9.log

/tmp/shdir:

1.sh 2.sh 3.sh 4.sh 5.sh hell sh.txt

/tmp/test:

[root@xuexi tmp]# find /tmp -maxdepth 1 | xargs -p ls   # -p选项后面有解释

ls /tmp /tmp/x.txt /tmp/logdir /tmp/b /tmp/test /tmp/d /tmp/vmware-root /tmp/sh.txt /tmp/c /tmp/shdir /tmp/a /tmp/one space.log /tmp/.ICE-unix ?…

如果对独立的xargs指定分批选项,则有两种分批可能:指定-n时按空格分段,然后划批,不管是文本意义的空格还是标记意义的空格,只要是空格都是-n的操作对象;指定-L或者-i时按段划批,文本意义的符号不被处理。

[root@xuexi tmp]# ls   #one space.log是一个文件的文件名,只是包含了空格

a b c d logdir one space.log shdir sh.txt test vmware-root x.txt

[root@xuexi tmp]# ls | xargs -n 2

a b

c d

logdir one # one和space.log分割开了,说明-n是按空格分割的

space.log shdir

sh.txt test

vmware-root x.txt

[root@xuexi tmp]# ls | xargs -L 2

a b

c d

logdir one space.log # one space.log作为一个分段,文件名中的空格没有分割这个段

shdir sh.txt

test vmware-root

x.txt

[root@xuexi tmp]# ls | xargs -i -p echo {}

echo a ?…

echo b ?…

echo c ?…

echo d ?…

echo logdir ?…

echo one space.log ?… # one space.log也没有被文件名中的空格分割

echo shdir ?…

echo sh.txt ?…

echo test ?…

echo vmware-root ?…

echo x.txt ?…

1.4 使用xargs -pxargs -t观察命令的执行过程

使用-p选项是交互询问式的,只有每次询问的时候输入y(或yes)才会执行,直接按enter键是不会执行的。

使用-t选项是在每次执行xargs后面的命令都会先在stderr上打印一遍命令的执行过程然后才正式执行。

使用-p或-t选项就可以根据xargs后命令的执行顺序进行推测,xargs是如何分段、分批以及如何传递的,这通过它们有助于理解xargs的各种选项。

[root@xuexi tmp]# ls | xargs -n 2 -t

/bin/echo a b # 先打印一次命令,表示这一次只echo两个参数:a和b

a b

/bin/echo c d # 表示这次只打印c和d

c d

/bin/echo logdir one

logdir one

/bin/echo space.log shdir

space.log shdir

/bin/echo sh.txt test

sh.txt test

/bin/echo vmware-root

vmware-root

[root@xuexi tmp]# ls | xargs -n 2 -p

/bin/echo a b ?…y # 询问是否echo a b

/bin/echo c d ?…a b

y # 询问是否echo c d,后面的…a b指示了echo c d是在前一个结果的基础上接着执行的

/bin/echo logdir one ?…c d

y

/bin/echo space.log shdir ?…logdir one

y

/bin/echo sh.txt test ?…space.log shdir

y

/bin/echo vmware-root ?…sh.txt test

y

vmware-root

从上面的-t和-p的结果上都可以知道每次传递两个参数。

1.5 分割行为之:xargs -d

xargs -d有如下行为:

? xargs -d可以指定分段符,可以是单个符号、字母或数字。如指定字母o为分隔符:xargs -d”o”

? xargs -d是分割阶段的选项,所以它优先于分批选项(-n-L-i)。

? xargs -d不是先xargs-d处理的,它是区别于独立的xargs的另一个分割选项。

xargs -d整体执行有几个阶段:

? 替换:将接收stdin的所有的标记意义的符号替换为\n,替换完成后所有的符号(空格、制表符、分行符)变成字面意义上的普通符号,即文本意义的符号。

? 分段:根据-d指定的分隔符进行分段并用空格分开每段,由于分段前所有符号都是普通字面意义上的符号,所以有的分段中可能包含了空格、制表符、分行符。也就是说除了-d导致的分段空格,其余所有的符号都是分段中的一部分。

? 输出:最后根据指定的分批选项来输出。这里需要注意,分段前后有特殊符号时会完全按照符号输出。

从上面的阶段得出以下两结论:

(1)xargs -d会忽略文本意义上的符号。对于文本意义上的空格、制表符、分行符,除非是-d指定的符号,否则它们从来不会被处理,它们一直都是每个分段里的一部分;

(2)由于第一阶段标记意义的符号会替换为分行符号,所以传入的stdin的每个标记意义符号位都在最终的xargs -d结果上分行了,但是它们已经是分段中的普通符号了,除非它们是-d指定的符号。

例如对ls的结果指定”o”为分隔符。

[root@xuexi tmp]# ls

a b c d logdir one space.log shdir sh.txt test vmware-root

[root@xuexi tmp]# ls | xargs -d”o”  #指定字母”o”为分隔符

分段结果如图所示,图中每个封闭体都是一个分段,这些分段里可能包含了分行,可能包含了空格。

如果使用xargs -d时不指定分批选项,则整个结果将作为整体输出。

[root@xuexi tmp]# ls | xargs -d”o” -p

/bin/echo a

b

c

d

l gdir

ne space.l g

shdir

sh.txt

test

vmware-r t

x.txt

?…

如果指定了分批选项,则按照-d指定的分隔符分段后的段分批,这时使用-n、-L或-i的结果是一样的。例如使用-n选项来观察是如何分批的。

[root@xuexi tmp]# ls | xargs -d”o” -n 2 -t

/bin/echo a

b

c

d

l gdir # 每两段是一个批。

a

b

c

d

l gdir

# 注意这里有个空行。是因为段的分隔符处于下一段的行开头,它的前面有个\n符号会按符号输出。

/bin/echo ne space.l g

shdir

sh.txt

test

vmware-r # 打印中间两段

ne space.l g

shdir

sh.txt

test

vmware-r

/bin/echo t # 打印最后一段,

t # 注意t前面有空格,因为是两个分隔符o连在一起分割的,所以前面有个空格需要输出。

下面是最终显示结果。

[root@xuexi tmp]# ls | xargs -d”o” -n 2

a

b

c

d

l gdir

ne space.l g

shdir

sh.txt

test

vmware-r

t

再看看-n 1的输出。

[root@xuexi tmp]# ls | xargs -d”o” -n 1

a

b

c

d

l

gdir

ne space.l

g

shdir

sh.txt

test

vmware-r

t

[root@xuexi tmp]#

1.6 分割行为之:xargs -0

xargs -0的行为和xargs -d基本是一样的,只是-d是指定分隔符,-0是指定固定的\0作为分隔符。其实xargs -0就是特殊的xargs -d的一种,它等价于xargs -d”\0″。

xargs -0行为如下:

? xargs -0是分割阶段的选项,所以它优先于分批选项(-n-L-i)。

? xargs -0不是先xargs-0处理的,它是区别于独立的xargs的另一个分割选项。

? xargs -0可以处理接收的stdin中的null字符(\0)。如果不使用 -0选项或– -null选项,检测到\0后会给出警告提醒,并只向命令传递非\0段。xargs -0– -null是一样的效果。

xargs -0整体执行有几个阶段:

? 替换:将接收stdin的所有的标记意义的符号替换为\n,替换完成后所有的符号(空格、制表符、分行符)变成字面意义上的普通符号,即文本意义的符号。

? 分段:将检测到的null字符(\0)使用标记意义上的空格来分段,由于分段前所有符号都是普通字面意义上的符号,所以有的分段中可能包含了空格、制表符、分行符。也就是说除了-0导致的分段空格,其余所有的符号都是分段中的一部分。

如果没有检测到\0,则接收的整个stdin将成为一个不可分割的整体,任何分批选项都不会将其分割开,因为它只有一个段。

? 输出:最后根据指定的分批选项来输出。这里需要注意,分段前后有特殊符号时会完全按照符号输出。

根据上面的结论可知,xargs -0会忽略所有文本意义上的符号,它的主要目的是处理\0符号。

[root@xuexi tmp]# touch “one space.log”

[root@xuexi tmp]# ls | tr ” ” “\t” | xargs -0  #忽略文本意义上的制表符

a

b

c

d

logdir

one space.log

shdir

sh.txt

test

vmware-root

# 注意有空行,因为命令结尾是一个标记意义上换行符号

[root@xuexi tmp]# ls | tr ” ” ” ” | xargs -0   #忽略文本意义上的空格

a

b

c

d

logdir

one space.log

shdir

sh.txt

test

vmware-root

# 注意有空行

如果检测到\0而没有使用-0或–null处理则给出警告。注意警告后执行哪些文件。

[root@xuexi tmp]# ls | tr ” ” “\0″

a

b

c

d

logdir

onespace.log # 这里实际上是one\0space.log

shdir

sh.txt

test

vmware-root

[root@xuexi tmp]# ls | tr ” ” “\0” | xargs

xargs: Warning: a NUL character occurred in the input. It cannot be passed through in the argument list. Did you mean to use the –null option?

a b c d logdir one shdir sh.txt test vmware-root # 执行时将space.log忽略了,其余都执行

再例如,将所有的换行符换成null字符,结果中除了最前面的字母a和由于空格而不被\0影响的space.log,其余的由于全部有\0全部被忽略。

[root@xuexi tmp]#  ls | tr “\n” “\0”

a bcdlogdirone space.logshdirsh.txttestvmware-root # 只有a的前面和space.log的前面是没有\0的

[root@xuexi tmp]#  ls | tr “\n” “\0” | xargs

xargs: Warning: a NUL character occurred in the input. It cannot be passed through in the argument list. Did you mean to use the –null option?

a space.log # 所以只执行这两个

使用-0或–null来解决问题,也可以使用等价的xargs -d”\0″来解决。

[root@xuexi tmp]# ls | tr “\n” “\0” | xargs -0

或者

[root@xuexi tmp]# ls | tr “\n” “\0″ | xargs -d”\0”

a b c d logdir one space.log shdir sh.txt test vmware-root

如果使用xargs -0时不指定分批选项(-n、-L、-i),则处理后的结果将作为一个整体输出。

如果指定了分批选项,并且检测到了null字符,则以\0位的空格分段划批,这时使用-n、-L或-i的结果是一样的。例如使用-n选项来观察是如何分批的。

[root@xuexi tmp]# ls | tr “\n” “\0” | xargs -0 -n 3

a b c

d logdir one space.log

shdir sh.txt test

vmware-root x.txt

如果指定了分批选项,但没有检测到null字符,则整个结果将称为一个不可分割整体,这时使用分批选项是完全无意义的。

[root@xuexi tmp]# ls | xargs -0 -n 3 -p

/bin/echo a

b

c

d

logdir

one space.log

shdir

sh.txt

test

vmware-root

x.txt

?…

1.7 分批行为

分批用于指定每次传递多少个分段。有三种分批选项:-n,-L和-i。在本文的开头已经指明了为什么-i是分批选项,但是这里还是要介绍它逻辑上定义的功能:参数替换。

既然三种选项都是分批选项,如果在一个xargs中使用了多个分批选项,则它们之间必然会冲突,它们的规则是写在后面的生效,前面的分批选项被忽略

1.7.1 xargs -n

xargs -n分两种情况:和独立的xargs一起使用,这时按照每个空格分段划批;和xargs -d或xargs -0一起使用,这时按段分批,即不以空格、制表符和分行符分段划批。

[root@xuexi tmp]# ls | xargs -n 3 -p   #和独立的xargs一起使用,以空格分段划批

/bin/echo a b c ?…

/bin/echo d logdir one ?… # one和space.log被割开了

/bin/echo space.log shdir sh.txt ?…

/bin/echo test vmware-root x.txt ?…

/bin/echo ?…

[root@xuexi tmp]# ls | xargs -d”o” -n 3 -p  # 和xargs -d一起使用,按段分批

/bin/echo a

b

c

d

l gdir

ne space.l ?…

/bin/echo g

shdir

sh.txt

test

vmware-r t

x.txt

?…

/bin/echo ?…

1.7.2 xargs -L

和-n选项类似,唯一的区别是-L永远是按段划批,而-n在和独立的xargs一起使用时是按空格分段划批的。

该选项的一个同义词是-l,但是man推荐使用-L替代-l,因为-L符合POSIX标准,而-l不符合。使用–max-lines也可以。

也许你man xargs时发现-L选项是指定传递时最大传递行数量的,man的结果如下图。但是通过下面的实验可以验证其实-L是指定传递的最大段数,也就是分批。

[root@xuexi tmp]# ls | xargs -L 3 -p   #如果是指定传递的最大行数量,则一行就输出完了,这里却分了多行输出

/bin/echo a b c ?…

/bin/echo d logdir one space.log ?… # 这里可以证明-L和-n的区别

/bin/echo shdir sh.txt test ?…

/bin/echo vmware-root x.txt ?…

[root@xuexi tmp]# ls | xargs -d”o” -L 3 -p  # 这就更能证明是指定最大传递的段数量了

/bin/echo a

b

c

d

l gdir

ne space.l ?…

/bin/echo g

shdir

sh.txt

test

vmware-r t

x.txt

?…

1.7.3 xargs -ixargs -I

xargs -i选项在逻辑上用于接收传递的分批结果。

如果不使用-i,则默认是将分割后处理后的结果整体传递到命令的最尾部。但是有时候需要传递到多个位置,不使用-i就不知道传递到哪个位置了,例如重命名备份的时候在每个传递过来的文件名加上后缀.bak,这需要两个参数位。

使用xargs -i时以大括号{}作为替换符号,传递的时候看到{}就将被结果替换。可以将{}放在任意需要传递的参数位上,如果多个地方使用{}就实现了多个传递。

xargs -I(大写字母i)和xargs -i是一样的,只是-i默认使用大括号作为替换符号,-I则可以指定其他的符号、字母、数字作为替换符号,但是必须用引号包起来。man推荐使用-I代替-i,但是一般都使用-i图个简单,除非在命令中不能使用大括号,如touch {1..1000}.log时大括号就不能用来做替换符号。

例如下面的重命名备份过程。

[root@xuexi tmp]# ls logdir/

10.log 1.log 2.log 3.log 4.log 5.log 6.log 7.log 8.log 9.log

[root@xuexi tmp]# ls logdir/ | xargs -i mv ./logdir/{} ./logdir/{}.bak   # 将分段传递到多个参数位

[root@xuexi tmp]# ls logdir/

10.log.bak 1.log.bak 2.log.bak 3.log.bak 4.log.bak 5.log.bak 6.log.bak 7.log.bak 8.log.bak 9.log.bak

但是我将“-i”选项划分在分批选项里,它默认一个段为一个批,每次传递一个批也就是传递一个段到指定的大括号{}位上。在稍后的分批选项的生效规则部分我会给出我的理由。

由于-i选项是按分段来传递的。所以尽管看上去等价的xargs echo和xargs -i echo {}并不等价。

[root@xuexi tmp]# ls | xargs echo

a b c d logdir one space.log shdir sh.txt test vmware-root

[root@xuexi tmp]# ls | xargs -i echo {}

a

b

c

d

logdir

one space.log

shdir

sh.txt

test

vmware-root

既然使用-i后是分段传递的,这就意味着指定了它就无法实现按批传递多个参数了;并且如果使用多个大括号,意味着必须使用-i,那么也无法分批传递。

例如,想将数字1-10每3个数显示在start和end之间。效果如下:

start 1 2 3 end

start 4 5 6 end

start 7 8 9 end

start 10 end

由于指定了参数传递位置,所以必须使用-i,那么就无法一次传递3个数。要解决这个问题,就要想办法让每三个数分一次段然后使用-i传递,方法也就随之而来了。可以将每三个数分一次行写入一个文件。如:

[root@xuexi tmp]# cat <<eof>logdir/1.log

> 1 2 3

> 4 5 6

> 7 8 9

> 10

> eof

再使用xargs -i分批传递。

[root@xuexi tmp]# cat logdir/1.log | xargs -i echo “start {} end”

start 1 2 3 end

start 4 5 6 end

start 7 8 9 end

start 10 end

也可以使用多次xargs。很多时候无法解决分段的问题都可以通过多次使用xargs来解决。

[root@xuexi tmp]# echo {1..10} | xargs -n 3 | xargs -i echo “start {} end”

1.7.4 分批选项的生效规则

-i-L-n选项都是分批选项。它们的生效规则是,谁指定在后面,谁就生效。

下面给出证明。

下面-i放在-n、-L之后,结果是-n、-L被忽略。

[root@xuexi tmp]# ls | xargs -d”o” -n 2 -p -i echo {}

echo a

b

c

d

l ?… # 说明是一段一段输出,而不是两段一批输出,即-n选项被忽略

echo gdir

?…

echo ne space.l ?…

echo g

shdir

sh.txt

test

vmware-r ?…

echo ?…

echo t

x.txt

?…

[root@xuexi tmp]# ls | xargs -d”o” -L 3 -i -p echo {}   # 和上面的结果是一模一样的,说明-L选项被忽略

echo a

b

c

d

l ?…

echo gdir

?…

echo ne space.l ?…

echo g

shdir

sh.txt

test

vmware-r ?…

echo ?…

echo t

x.txt

?…

下面是-L放在-n后,结果是-n被忽略。

[root@xuexi tmp]# ls | xargs -d”o” -n 2 -p -L 1 echo  # 结果也是一段一段输出的,说明-n选项被忽略

echo a

b

c

d

l ?…

echo gdir

?…

echo ne space.l ?…

echo g

shdir

sh.txt

test

vmware-r ?…

echo ?…

echo t

x.txt

?…

根据上面的证明,其实也就给出了我认为-i选项是分批选项的理由,因为它覆盖了-n和-L,实际上在新的man xargs中已经给出了解释,它隐含”-L 1″。其实如果-i包含分批并传递这两个作用更严格一点

1.7.5 分批选项的一个典型应用

分批选项有时特别有用,例如脚本规定每次只能传输三个参数。有时候rm -rf的文件数量特别多的时候会提示参数列表太长而导致失败,这时就可以分批来按批删除,不仅rm -rf,其他很多本身就可以实现批量操作的命令都有可能出现这种参数列表过长的错误,如touch {1..10000000}也会提示错误。

假设目前在/tmp/longshuai/下有29W个.log文件,如果直接删除将会提示参数列表过长。

[root@xuexi tmp]# rm -fr /tmp/longshuai/*.log

-bash: /bin/rm: Argument list too long

这时如果使用xargs就可以分批丢给rm -fr处理了。下面一批10000个,删除29批。

[root@xuexi tmp]# cd /tmp/longshuai/ && ls | xargs -n 10000  rm -rf

如果不使用分批直接交给rm -rf也是一样可以执行成功的。如果想知道为什么可以请看后文xargs -s。

[root@xuexi tmp]# cd /tmp/longshuai/ && ls | xargs rm -rf

这里说下如何统计某个目录下的文件数量?ll后使用”-“开头来过滤出文件,然后使用wc统计行数。

[root@xuexi tmp]# ll /tmp/longshuai/ | grep “^-” | wc -l

1.8 终止行为之:xargs -E

指定终止符号,搜索到了指定的终止符就完全退出传递,命令也就到此结束。

-e选项也是,但是官方建议使用-E替代-e,因为-E是POSIX标准兼容的,而-e不是。

-E会将结果空格、制表符、分行符替换为空格并压缩到一行上显示。

据我测试,-E似乎只能和独立的xargs使用,和-0、-d配合使用时都会失效。那么稍后我就只测试和独立的xargs配合使用的情况了。

-E优先于-n、-L和-i执行。如果是分批选项先执行,则下面的第二个结果将压缩在一行上。

指定的终止符必须是完整的,例如想在遇到“xyz.txt”的符号终止时,只能指定完整的xyz.txt符号,不能指定.txt或者txt这样的符号。如何判断指定的终止符号是否完整,就-E与独立的xargs配合的情况而言分两种情况:如果没指定分批选项或者指定的分批选项是-n或者-L时,以空格为分割符,两个空格之间的段都是完整的;如果指定的分批选项是-i,则以段为分割符。

例如,下面的示例。观察实验结果中的one space.log分割的情况。

[root@xuexi tmp]# ls

a b c d logdir one space.log shdir sh.txt test vmware-root x.txt

[root@xuexi tmp]# ls | xargs -E one     #不指定分批选项

a b c d logdir

[root@xuexi tmp]# ls | xargs -n 2 -E one      #指定-n,one后面的所有的都终止传递

a b

c d

logdir

[root@xuexi tmp]# ls | xargs -L 2 -E”one”      #同-n 选项

a b

c d

logdir

[root@xuexi tmp]# ls | xargs -i -E”one space.log” echo {}         #和-i配合使用时指定完整的段才可以

a

b

c

d

logdir

[root@xuexi tmp]# ls | xargs -i -E”one”  -p echo {}          #非完整段终止失效

echo a ?…

echo b ?…

echo c ?…

echo d ?…

echo logdir ?…

echo one space.log ?…

echo shdir ?…

echo sh.txt ?…

echo test ?…

echo vmware-root ?…

echo x.txt ?…

1.9 xargs的处理总结

总结只有一张表。算是用来复习前面所述。

分割行为 特殊符号处理方式 分段方法 配合分批选项 分批方法
xargs 空格、制表符、分行符替换为空格,引号和反斜线删除。处理完后只有空格。如果空格、制表符和分行符使用引号包围则可以保留 结果继承处理前的符号性质(文本符号还是标记意义符号)。 -n 以分段结果中的每个空格分段,进而分批。不管是文本还是标记意义的空格,只要是空格
-L、-i 以标记意义上的空格分段,进而分批
不指定 结果作为整体输出
xargs -d xargs -d 不处理文本意义上的符号,所有标记意义上的符号替换为换行符\n,将-d指定的分割符替换为标记意义上的空格。结果中除了最后的空行和-d指定的分割符位的分段空格,其余全是文本意义上的符号 按照-d指定的符号进行分段,每个段中可能包含文本意义上的空格、制表符、甚至是分行符。 -n、-L、-i 以标记意义上的符号(即最后的空行和-d指定分隔符位的空格)分段,进而分批。分段结果中保留所有段中的符号,包括制表符和分行符。
不指定 结果作为整体输出
xargs -0 不处理文本意义上的符号,将非\0的标记意义上的符号替换为\n,将\0替换为空格。结果中除了最后空行和\0位的空格,其余都是文本意义上的符号 以替换\0位的空格分段,每个段中可能包含文本意义上的空格、制表符、甚至是分行符。如果没检测到\0,则只有一个不可分割的段。 -n、-L、-i 检测到\0时,以标记意义上的符号(即最后的空行和\0位的空格)分段,进而分批。分段结果中保留所有段中的符号,包括制表符和分行符。
未检测到\0时,整个结果作为不可分割整体,使用分批选项是无意义的
不指定 结果作为整体输出

1.10 xargsfind的结合

xargs和find同属于一个rpm包findutils,xargs原本就是为find而开发的,它们之间的配合应当是天衣无缝的。

一般情况下它们随意结合都无所谓,按正常方式进行即可。但是当删除文件时,特别需要将文件名含有空白字符的文件纳入考虑。

[root@xuexi tmp]# touch one;touch space.log

[root@xuexi tmp]# ls

a b c d logdir one one space.log shdir sh.txt space.log test vmware-root

现在假设通过find搜索到了one space.log。

[root@xuexi tmp]# find -name “* *.log”

./one space.log

如果直接交给xargs rm -rf,由于xargs处理后不指定分批选项时以空格分段,所以改名了的行为将是rm -rf ./one space.log,这表示要删除的是当前目录下的one和当前目录下的space.log,而不是one space.log。

有多种方法可以解决这个问题。思路是让找到的“one space.log”成为一个段,而不是两个段。我给出了常见的两种。

方法一:通过常用的find的-print0选项使用\0来分隔而不是\n分隔,再通过xargs -0来配对保证one space.log的整体性。因为-print0后one space.log的前后各有一个\0,但是文件名中间没有。

[root@xuexi tmp]# find -name “* *.log” -print0 | xargs -0 rm -rf

当然,能使用-0肯定也能使用-d了。

[root@xuexi tmp]# find -name “* *.log” -print0 | xargs -d “x” rm -rf     #随意指定非文件名中的字符都行,不一定非要\0

方法二:不在find上处理,在xargs上处理,只要通过配合-i选项,就能宣告它的整体性。

[root@xuexi tmp]# find -name “* *.log” | xargs -i rm -rf “{}”

相较而言,方法一使用的更广泛更为人所知,但是方法二更具有通用性,对于非find如ls命令也可以进行处理。

还可以使用tr将find的换行符换成其他符号再xargs分割配对也行。

除了find -print0可以输出\0字符,Linux中还有其他几个命令配合参数也可以实现:locate -0,grep -zgrep -Z,sort -z

1.11 xargs -s之为什么ls | xargs rm -rf能执行成功?

使用下面的示例配合图来解释。

[root@xuexi tmp]# cd logdir

[root@xuexi logdir]# touch {1..1000000}

-bash: /bin/touch: Argument list too long

[root@xuexi logdir]# echo {1..1000000} | xargs  touch      #执行的时候记得使用-p选项,否则慢慢等吧。

问题一:正常创建批量文件touch {1..1000000}是无法执行成功的,会提示参数列表过长。但是上面的最后一个命令为什么能执行成功?

问题二:xargs处理后如果不指定-n选项,那么它是整体传递的,如果这个整体非常非常大,如上面的100W个参数,按理说touch也是无法成功的。为什么成功了?

xargs有一个默认的选项-s,它指定每次传递的最大字节数,如果不显式指定-s,系统默认是128KB。也就是说如果一次传递的参数很多很大,那么将由系统自动分割为每128KB传递一次。这就是上面的命令能执行成功的原因。

上面的100W个参数,以差不多每个参数5个数字位加一个分段位空格共6个字节计算,128K有128*1024/6=21845个数字,这和我使用-p测试的询问位置是接近的,如下图,由于前10000个数字少于5个字节,所以比21845多一点。第二次停止的位置是45539,45539-23695=21844,这次传递的全是5个字节的,这和计算的结果几乎完全相同。

同理“ls | xargs rm -rf”也是一样的,如果参数列表非常大,则每次传递128K的参数给rm。

1.12 创建文件名包含分行符的文件

创建文件名包含空格的文件是一件很轻松的事情,但是想创建包含制表符、分行符甚至是其他特殊符号的文件呢?

因为xargs允许传递参数到命令的任意参数位,并且传递的参数还可以变换为包含各种形式的特殊符号,所以使用它可以轻松实现。例如创建包含分行符的文件。

[root@xuexi tmp]# ls

a b c d logdir one space.log shdir sh.txt test vmware-root

[root@xuexi tmp]# ls | xargs -0

a

b

c

d

logdir

one space.log

shdir

sh.txt

test

vmware-root

在此基础上创建一个.sh文件,这个文件将奇形怪状,因为文件名竟然包含了分行符(Linux中文件名除了“/”“\0”外所有字符都允许包含在内)

[root@xuexi tmp]# ls | xargs -0 -i touch {}.sh

[root@xuexi tmp]# ls

a b d one space.log sh.txt vmware-root

a?b?c?d?logdir?one space.log?shdir?sh.txt?test?vmware-root?.sh c logdir shdir test

看上去只是有几个问号,但是使用?是无法定位它的。

[root@xuexi tmp]# find -name “*[\?]*”        #搜索没结果

 

或者

 

[root@xuexi tmp]# rm -rf a     #按两次tab键

a/

a^Jb^Jc^Jd^Jlogdir^Jone space.log^Jshdir^Jsh.txt^Jtest^Jvmware-root^J.sh

现在使用xargs就可以轻松显示它的文件名。

[root@xuexi tmp]# ls | xargs -0

a

a

b

c

d

logdir

one space.log

shdir

sh.txt

test

vmware-root

.sh

b

c

d

logdir

one space.log

shdir

sh.txt

test

vmware-root

不能直接使用xargs显示,因为它会压缩空白符号成空格。

[root@xuexi tmp]# ls | xargs

a a b c d logdir one space.log shdir sh.txt test vmware-root .sh b c d logdir one space.log shdir sh.txt test vmware-root

删除它。

[root@xuexi tmp]# rm -f a*.sh

如果想创建文件名只包含下面结果的abcd前四行的.sh文件呢?

[root@xuexi tmp]# ls | xargs -0

a

b

c

d

logdir

one space.log

shdir

sh.txt

test

vmware-root

参考下面的。

[root@xuexi tmp]# ls | xargs -n 1 -e”logdir” | xargs -0 -i touch {}.sh

这就需要理解前面介绍的xargs的分割和传递方法了。

也可以使用下面更简单容易理解的:

[root@xuexi tmp]# ls | head -n 4 | xargs -0 -i touch {}.sh

[root@xuexi tmp]# echo -e “a\nb\nc\nd” | xargs -0 -i touch {}.log

那么以相同的方法创建文件名中包含制表符的文件就easy了。

[root@xuexi tmp]# echo  -e “a\tb\tc\td” | xargs -0 -i touch {}.log

1.13 高速并发处理之:xargs -P

使用xargs的分批行为,除了可以解决一些问题,还可以一次性将多个分批交给不同进程去处理,这些进程可以使用多个cpu执行,效率可谓大幅提高。

“-P N”选项可以指定并行处理的进程数量为N。不指定”-P”时,默认为1个处理进程,也就是串行执行。指定为0时,将尽可能多地开启进程数量。当xargs正在运行时(也就是还有分批正在处理),可以发送SIGUSR1信号给xargs进程,表示增加一个处理进程,同样,可以向xargs进程发送SIGUSR2进程,表示减少一个处理进程。但需要注意,即使发送SIGUSR2信号,xargs也不会中断正在执行任务的进程,也就是说,在某个进程处理当前分批任务结束之前,不会被中断,只有当前分批任务执行完毕,准备接下一个分批任务时,才会被xargs给杀掉。

例如,一个简单的sleep命令,在不使用”-P”的时候,默认是一个进程按批的先后进行处理:

[root@xuexi ~]# time echo {1..4} | xargs -n 1 sleep

 

real    0m10.011s

user    0m0.000s

sys     0m0.011s

总共用了10秒,因为每批传一个参数,第一批睡眠1秒,然后第二批睡眠2秒,依次类推,还有3秒、4秒,共1+2+3+4=10秒。

如果使用-P指定4个处理进程:

[root@xuexi ~]# time echo {1..4} | xargs -n 1 -P 4 sleep

 

real    0m4.005s

user    0m0.000s

sys     0m0.007s

结果总共才用了4秒,因为这4个分批同时交给了4个进程同时处理,所以取最长睡眠时间。

以下是一次并行执行过程中,CPU的使用情况:

[root@xuexi ~]# ps -eo pid,args,psr,pcpu | grep slee[p]

25566 xargs -n 1 -P 5 sleep         3  0.0

25567 sleep 20                      1  0.0

25568 sleep 21                      2  0.0

25569 sleep 22                      0  0.0

25570 sleep 23                      2  0.0

25571 sleep 24                      3  0.0

在上面的结果中,启动了5个sleep进程,这5个进程分别用了cpu0、cpu1、cpu2和cpu3共4个cpu,因为我的虚拟机只给分配了4核心cpu。

那么,xargs的哪些选项可以通过”-P”的并行能力来提升效率?其实,只要能分批的选项,都可以使用”-P”,包括”-n”、”-L”和”-i”。在man xagrs中,只提到了”-n”和”-L”可以结合”-P”,并没有提到”-i”,但我前面已经验证过了,”-i”其实也是分批行为,也能结合”-P”的并行功能使用。

下面的示例,可以验证”-i -P”结合:

[root@xuexi ~]# time echo -n {1..4} | xargs -d” ” -i -P 4 sleep {}

 

real    0m4.003s

user    0m0.000s

sys     0m0.005s

如果需要发送信号,来增、减并行进程数量,可以向xargs进程发送SIGUSR1和SIGUSR2信号,例如:

kill -USR1 `pgrep -f “xargs”`

虽然xargs提供了这样的并行处理能力,但说实话,用到的机会并不多,它毕竟只是一个参数传递工具。我也专门写了一篇关于xargs高效并行的文章,见shell高效处理文本:xargs并行处理。另一个gnu工具parallel(装上epel源,yum -y install parallel即可)在并行处理上用的比较多,比如对一个巨大的文件利用sort进行排序时,使用parallel并行排序,可以大幅提升效率,即使sort自身已经足够完美。非常幸运的是,在你把xargs学到了这里,使用parallel将非常简单,因为它的选项和行为模式和xargs是基本一致的。

1.14 xargs一次性传递多个参数

默认情况下,xargs每次只能传递一条分割的数据到命令行中作为参数。但有时候想要让xargs一次传递2个、3个参数到命令行中。

例如有一个文件保存了wget想要下载的大量链接和链接对应要保存的文件名,一行链接一行文件名。格式如下:

https://www.xxx.yyy/a1

filename1

https://www.xxx.yyy/a2

filename2

https://www.xxx.yyy/a3

filename3

现在想要通过读取这个文件,将每一个URL和对应的文件名传递给wget去下载:

wget ‘{URL}’ -O ‘{FILENAME}’

xargs自身的功能无法一次性传递多个参数(parallel命令可以,而且方式多种),只能寻求一些技巧来实现。

cat url.txt | xargs -n2 bash -c ‘wget “$1” -O “$2″‘

1.15 xargs的不足之处(此处必看)

其实是xargs的限制和缺点,但因为通过”-i”选项方便演示,所以此处使用”-i”选项。注意,不是”-i”选项的缺陷。

由于xargs -i传递数据时是在shell执行xargs命令的时候,根据shell解析命令行的流程 ,xargs后的命令如果有依赖于待传递数据的表达式,则无法正确执行。

例如,无法通过xargs传递数值做正确的算术扩展:

[root@xuexi logdir]# echo 1 | xargs -I “x” echo $((2*x))

0

无法将数据传递到命令替换中。

[root@xuexi ~]# echo /etc/fstab | xargs -i `cat {}`
cat: {}: No such file or directory

参考下图的shell命令行解析过程。

这时要通过xargs正确实现目标,只能改变方法或寻找一些小技巧,例如:

[root@xuexi ~]# echo 1 | xargs -i expr 2 \* {}   # 感谢楼下评论者提供的expr思路
2
[root@xuexi ~]# echo /etc/fstab | xargs -i cat $(echo {})

另外,xargs无法处理bash内置命令。例如:

[root@xuexi ~]# echo /etc | xargs -i cd {}
xargs: cd: No such file or directory

 

Linux 命令大全 Linux 命令大全

 

群晖NAS外网公开分享术之分享文件、分享照片、分享影片、分享音乐

       顾名思义,能施展群晖NAS之外网公开分享术的前提,是需要你的群晖接入的宽带可以外网访问,外网访问无非就是两种:

1、有公网IP,使用域名解析+端口映射进行外网访问;

2、没有公网IP,使用包括群晖官方的Quick Connect穿透、自建FRP内网穿透、组网ZeroTier穿透、利用花生壳或者蒲公英进行穿透等各种内网穿透;

在做以下操作之前,确认你的群晖已经可以正常外网访问。本文使用的是第1种,并且已经事先做好域名解析和端口映射,然后在群晖控制面板-外部访问-高级设置,把访问群晖的域名和端口设置好。(如果你已经登录QC的,共享链接会显示QC地址,我没有登录QC)

 


 

群晖NAS外网公开分享术之【分享文件】

一、在群晖桌面打开File Station,找到你想分享的文件,点右键,共享;

 

二、系统默认此共享长期有效。如果需要设置开始共享的时间和共享结束的时间,可以在弹出的窗口点“有效期”,设置相应的时间,点“保存”;

 

 

三、系统默认此共享链接公开分享。如果需要设置密码访问的,可以在“启用安全共享”处打勾,选“与他人共享”并设置密码,点“保存”;

 

四、共享链接显示的链接就是分享地址(类似百度网盘分享那种方式),复制出来就可以;

 

五、为了方便手机用户分享,群晖还提供了二维码分享,点“获取QR码”,就看到分享链接的二维码,把这个二维码发给朋友,用微信扫一扫的功能,就可以访问;

 

六、电脑访问共享的链接的效果;

 

 

七、手机用微信扫一扫二维码的访问效果;

 

 

八、如果想取消分享,在File Station的菜单“工具”—“共享链接管理器”,找到要取消分享的链接,点“删除”即可。

 


 

群晖NAS外网公开分享术之【分享照片】

 

一、打开群晖Moments,先勾选需要分享的照片,再点右上角工具栏的第一个工具“共享”;

 

二、系统默认是没有分享,我们需要把“已禁用共享链接”的开关点一下;

 

三、让它变成“已启用共享链接”,同时把链接复制出来,点确定,就可以分享了;

 

四、如果需要取消Moments的分享,在Moments点“相册”,再点“共享”;

 

 

五、就看到“与他人共享”的所有内容,找到你要取消共享的相册,在右边三个小点点一下,选“停止共享”;

 

六、系统会提示是否继续,选“停止共享”,就可以成功取消共享了;

 

 


 

群晖NAS外网公开分享术之【分享影片】

 

一、打开群晖Video Station,点你要分享的影片进去,找到“公开共享”这个按钮,系统默认是没有启用共享,图标是灰色的;

 

 

二、在弹出的窗口中,勾选“公共共享”,并把链接复现出来;

 

三、打开分享链接的效果,是可以直接在线播放影片的;

 

 

四、如果要取消共享,找到已经分享的影片,此时会看到共享的图标是绿色的,再次点进去;

 

 

五、把公开共享的打勾去掉,点“完成”;

 

 


 

群晖NAS外网公开分享术之【分享音乐】

 

一、打开群晖的Audio Station,在左边菜单点“按专辑分类”,找到你要分享的专辑,点右键选“公开共享”;

 

 

二、播放列表名称可以根据需要改名,可以用中文、英文和数字,但是不能使用符号,也可以根据自己的需要设置分享的有效期,确认无误后点“确定”;

 

 

三、在弹出的窗口中点前往链接;

 

 

四、打开分享链接的效果,可以直接在线听歌;

 

 

五、返回刚才的窗口,可以把当前分享的链接复制出来,再点完成;

 

六、取消分享的方法:我不知道这个是系统BUG还是我操作不对,反正在Audio  Station的共享歌曲里面没有显示我已经分享的音乐。如果你们知道怎么取消分享,欢迎在下方留言。

利用第三方FFMPEG解码器让群晖的Video Station完美支持DTS、EAC3、TrueHD

       群晖公司由于版权的原因,群晖自带的Video Station无法播放带有DTS、EAC3、TrueHD等编码格式的视频文件,严重影响使用效果。本文将利用第三方的ffmpeg替换VideoStation中自带的ffmpeg解码器,完美播放带有DTS、EAC3、TrueHD等编码格式的视频,实现对全视频格式的支持。

一、安装ffmpeg解码器

1、在群晖套件中心,设置,套件来源,新增,名称(任意写),位置:http://packages.synocommunity.com

 

 

如果按照上述方法不能正常安装ffmpeg套件的,可以到这个地址:https://github.com/th0ma7/synology/tree/master/packages
请根据自己的CPU架构下载对应的ffmpeg安装包,上传到群晖的套件中心安装,目前常见的构架有:

(1)DS918+的CPU架构是apollolake

(2)DS3617xs的CPU架构是broadwell

(3)DS3615xs的CPU架构是bromolow

其他的CPU架构与之对应的版本可以在这查询:https://github.com/SynoCommunity/spksrc/wiki/Architecture-per-Synology-modelffmpeg

 

二、安装VideoStation
在套件中心安装Video Station,本文安装的Video Station版本为2.4.7-1603。

 

 

三、我们先来测试一下没修改之前,用Video Station播放带有DTS和EAC3编码的视频文件,会是怎样的

这个是带EAC3编码的视频文件

 

 

用Video Station播放EAC3编码的界面提示

 

 

这个是带DTS编码的视频文件

 

 

用Video Station播放DTS编码的界面提示

 


四、用第三方的FFMEG代替

进群晖的控制面板,终端机和SNMP,勾选启动SSH功能,并调整对应的端口号。然后到电脑上打开XSheell软件,用root用户以SSH的方式登录到群晖(还没开启root的,请自己去开启:https://wp.gxnas.com/?s=root),执行以下命令:

1、调整文件权限

sudo chmod +s /var/packages/ffmpeg/target/bin/ffmpeg
sudo chmod +s /var/packages/ffmpeg/target/bin/ffprobe
sudo chmod +s /var/packages/ffmpeg/target/bin/vainfo

 

2、备份原文件

sudo sed -i'-BACKUP' -e 's/eac3/ZAAP/' -e 's/dts/ZAP/' -e 's/truehd/ZAPZAP/' /var/packages/VideoStation/target/lib/libsynovte.so
sudo mv /var/packages/VideoStation/target/bin/ffmpeg /var/packages/VideoStation/target/bin/ffmpeg-BACKUP
sudo mv /var/packages/VideoStation/target/bin/ffprobe /var/packages/VideoStation/target/bin/ffprobe-BACKUP
sudo mv /var/packages/VideoStation/target/bin/vainfo /var/packages/VideoStation/target/bin/vainfo-BACKUP

 

3、更改/var/packages/VideoStation/target/ffmpeg为自定义脚本,调用第三方的ffmpeg解码器(命令已经更新,下图为之前的截图,命令有区别请忽略)

echo "H4sICJ6oBF8AA2ZmbXBlZy13cmFwcGVyAO1abXPbNhL+LP4KhKVf5Jimybn7ogwz8dlKqklcayzHnU7ioyASlFhTJEtQVFzH/70LAqT4KjltrzO9qWeSSMCziwfAg8Vine9eaDMv0GaYLiQpJqkp64YsSZYfzg/7j1KP2IsQycqhgxOCDl7u/aTuLdU9B+19P9i7HOxNDvpIRcojTWKCl57zxL7pMnr9GmnJMtJcdxmR+Ql4k564VyvCMS67BvRX5Ia+g9Q10o1T+EaJg2Sq/ffkSNG+aejix0T7WieLhMTLjEG8LPerJV8nNHFIHEs9RhnJR0dH6P3ow4fz70cfLhB8k6Xevef7SL0ZXl/CJOyF5zuR58jIeK05JNWCle+zwZIYRygbEU1G7xhaknBsL8zpKsBLglQs5ntAtZMj+hCEMOCDpWkH0G6vEqRCl3WAVBfpUynA9HcYGlMJqJmKIrG1X6bUVN5IfKqmrDy+GSBVf5KlfPKm/PbtpcImI4E0dFNLcaxF2L7Hc0LFWmkJjuckybTDWxjWqGFvPYeEkwQnXhg0LdT/nJ2//ziG5ZhT87AvSakdOsQ25fdXoMA1rChBnz4h5TukzhN0iu7uJCeUbEwJV40XSD3V60u9Hl14bgL/LsPUIybrhC/M7UvzUFY9OcMD8NUrsFissW0Tv2wnmhqWor1qTzOWZXMqeNeseXPV2C3bue12btVkiaOyUQGD9gLY8xz4ak6zI6XoGwUMxP4DwkWfAJ4KUiZiy4zuXqFkQWAhez2x+tPd2x3F4QwEmCI4IWGMVEp8YicW1w9FSkYGmhfh2iJBEnuEIiG3bAyLCzh0kUNcvPITMwij2AsSaw2nJSIxNfVBEN6TB1MHytmusiCxIBiCRMAOQsEXuLgglP8xbTHKH+VMfEoYdfz3WmrX41I86pf0VyiUUGxLXJ1OGBAe5XnIHF9fnQ8nEzS5Obu+QdfDW6TAFYMuJgoEMnSosEDYR+PRBWLhhsdVEYYcLzan8FfGX1Z4ozyVILZ6Nmy3jZMi9gPsSUtZrLGWJMFwX7DY+PMvSI3RwQm3OJgKXhfD29H5MLsiFN4li57Lq9vRkF8eYiGADIFjpAKBRzbvT2/uIE5mASsgaxaz2EedpvlHY/NRT2nRyj8+N6RRWj/vMBiPKHRz4sXIW9uDEOLXKob706KE3G/6U9puJ9q77AzhFwfYf/iVOAwCoR2c6Kf8ZwMVrrZDswDndU3Xa59VrdkoNUdeRAan8EFEx9PG1OrGpeZW44xhWgnbIpIWlwOE0hTjCFzcof39UpQVUSNDXGIPTtNpJeJSG/vEWouwDRqDW1hc6irh97q5NjVtflBpHSzMkyPWOt04WWxzAgYFHMj7JDs6fPAndPbDRaVp8bRhWNmOlF1MHJPNF7ht3MAYGwcDN4yXGGJNqhvHi/Uq8kPsHMNZojg22R++AUU83D7MM52xKLWJsHWHYs8zUFk15c6yTtLaLZw2bv3KENWrviLXos8Oo4eGalstcw4tfUa9L/eascQNlkKseiZC35u5GNsVEZangXOnDNTPe/OJtPcWB73e27YVuDajdv/lzob7ro3Ercus182ryzXr2lA8a9/MentBb1aVC+6UCu6QSb19M/EtGWTZcV3Iwi9rZnlFQhva65B+m0XamppSMl9C1mHxE9p5a1VQ7bPcislvuXZMhYnv0cRKHiKyi0wB3M6nC1aj1ITxp4ZPswvUSrxlJ6MKqJ3NNohg0g6prM02EmXM9hXpptCKaDCwHOIn+Dk8OHI3m1ZcC6carsKMQtadWMFqOSPxLm5l7HZ2W5A1fq1Inh0Fjge57Qr7FkvKSWwlMYasopNmp0FH5vNMeJ5l7YTz+JeGnmMFZA5ZX0qspDOlbQA7ouAOWB5EO2EZqxm8Fu6tIAwsePC4MTwtOnm1QNuZ7QYKbtuA4qH/xVquvnjB3PplRVaQe3u/Ng5sPmwruH3g7dCuGkO+EJUyQ/liaXakzcJE5dkoXOYlC56ZiJcdS09YllLLTPLBZitXsNZPjX/d59l6OVHgyEpikW/RbuO09KatZC7dbkuJSNsrOEvAPZaDy1R7/CzDK/ezPFAe4aH7dPxZXuDYWeOYsOMTZJUi6E3iFTl+LtjFQPNYk3kJs1JqIwGe+cRhb2kIK+QLsVn8g/c0q6S+3KNTScpXf1MOoqtZ7EXFDvSkvPj59u3lePiOv4tZkU/OO86vLobn4sEsHOVd47Prs8vbCXSJpqzsCwOKCiS0Sr3MW+VtjfZf76jIon1JIr5g727YL38G/O8l7/6l5EFc+Ui3OQsgwTN6dFh9PPYLVmclLP5mwnmJ42Io6uM/Xp+N5Y5V0quefxxzz5k33eRThsPMZt0yHljz5dHz5RHYZ64QnCgpr6ebygtRnclK76xUBBSLaru0xl6y+Z7Jeh6TCOBhkJKYwmlALrufnBfyrqG/fhW2w6zWFkYkgJiJYBcS8PQN9h+DmNjhPICY44AbXvd4rvEoSLHvOSirYrnhKnDQGhSNQA82oZQx8oJolezyKOJo+TcY/LcXwx/y32B0RgdhM7m5uPp4gxqymiawoll18N87SEzblDcejYdoclsTn94UH+8wmmc3U6WOWlQJ90W3KsvWRtnaENZGp7XR0LQYidVaKqHAyNufpfVeWei9bUrv1aXOjsk/cv+byP120iV3o0vu+nPkntI/IvdO60LuhazFSLnci2NgpN9y+f0j9/97uV9dj9515RVNWf112qEJbHnLaoCmEkIBfnhYhqiV5ev3keonSD/NXyd/4hIycp272PxdWtEl7f7fC78BTGYfI90hAAA=" | base64 -d | gunzip > /var/packages/VideoStation/target/bin/ffmpeg

 

4、更新ffprobe vainfo

sudo ln -s /var/packages/ffmpeg/target/bin/ffprobe /var/packages/VideoStation/target/bin/ffprobe
sudo ln -s /var/packages/ffmpeg/target/bin/vainfo /var/packages/VideoStation/target/bin/vainfo

 

5、解除对EAC3、DTS、TrueHD的屏蔽

sudo sed -i'-BACKUP' -e 's/eac3/ZAAP/' -e 's/dts/ZAP/' -e 's/truehd/ZAPZAP/' /var/packages/VideoStation/target/lib/libsynovte.so

 

6、调整文件权限

sudo chmod +x /var/packages/VideoStation/target/bin/ffmpeg
sudo chmod +s /var/packages/VideoStation/target/bin/ffmpeg
sudo chown root:VideoStation /var/packages/VideoStation/target/bin/ffmpeg

 

 

五、接下来我们再用Video Station来播放刚才未能播放的文件做一下测试

1、DTS播放正常

 

2、EAC3播放正常

六、非常完美!

 


如果DSM7.X版本要解决同样的问题,请参考《利用第三方解码器FFMPEG让群晖DSM7.X版本的Video Station支持DTS视频编码和EAC3音频编码》。

地下塌陷预防措施

龙华街道大浪南路地下空洞应急处置

  2021年4月,龙华街道大浪南路301号路段发现地下空洞。
险情!就是命令!龙华排水立即组织技术人员火速赶赴现场,做好安全封闭围挡后立即进行排查并上报现场相关情况。经核实,道路坍塌原因为旁边深约5.5米污水干管井的井底局部破损,水流冲刷掏空周边土体形成空洞,空洞区域长约7米、宽约6米、深约4米,空洞体积达170多立方米,空洞内一条DN600雨水管及24条高压电缆排管失稳塌落。
  险情发生后,相关部门高度重视,区水务局、龙华街道领导及相关专家相继赶赴现场指导抢修,在核实现场情况并准确分析了坍塌原因后,龙华排水结合领导专家的指导意见制定了应急抢修方案,并立即组织实施。
4月25日出现险情以来,在各级部门、龙华排水领导的高度重视及实地指导下,在交警部门的全力支持下,经过连续5天全力奋战抢修,期间克服了恶劣天气及DN1200干管水量大、流速急的不利影响,先后保质保量完成了坍塌区域污水干管工作井加固、干管检查井破损修复、雨水管修复、电缆排管修复、砂石夯填、水稳层、混凝土路面浇筑、沥青摊铺等环节施工,至4月30日15时提前完工。现安全隐患已彻底消除、排水设施恢复正常,交通通行恢复正常。
 
  总结:
该处地下空洞位于市政主干道大浪南路,路段车流密集,下方存在如此大体量的空洞,但路面并未出现下沉、开裂等表征迹象,因发现及时,未酿成事故造成损失。
注:以上内容转载至《龙华排水管理站》

行业现状
地面坍塌隐患是威胁人民群众生命财产安全的重大隐患,其排查与应急处置一直都是排水行业的重难点工作,随着城市的发展地下管线种类及数量激增,地下隐患的排查、分析、判断将更困难更复杂。
探地雷达技术主要是基于道路下方介质电性差异,利用高频电磁波进行探测。在城市道路塌陷时有发生的当下,实施常规化的地下空洞探测,减少道路塌陷事故是非常有必要的。

  雷达探测技术
(1)、BigMole-GPR管中地质雷达:
可主动探查地下管道周边存在的地质空洞、地质疏松和富水体等缺陷的具体分布情况以及新管周边回填密实度,为维护城市地下安全、管线管理、基建施工等提供有效依据,为预防城市路面塌陷提供真实检测数据。
  产品突出优势
①可探测埋深较大管道外部地质情况;
②多管径自适应调节功能;
③高精准设备定位;
④管道360°全方位检测;
⑤天线可速拆快装;
⑥设备自带动力行进。
(2)、BMW-Radar——AI智能探地雷达系统:
BMW-Radar探地雷达工作时,从地表往下探测,向地下介质发射高频电磁脉冲(几十兆赫至上千兆赫),电磁脉冲遇到不同电性介质的分界面时即产生反射或散射,探地雷达接收并记录这些信号,再通过进一步的信号处理和解释即可了解地下病害分布情况。
  产品突出优势:
①一体化设计,体积小、功耗低;
②系统运行稳定、速度快;
③实时滤波、背景消除处理,降低图像辨别难度;
④控制终端操作简便、易上手。

市政管网检测云平台介绍

平台介绍

       管网云平台结合GIS技术、管网检测设备在线技术、管网数据智能分析技术、数据库技术、网络通信技术、在线监测技术,能够对排水管网(污水、雨水)运行情况实时监控、管网检测设备在线查看、管网检测视频在线访问、防汛应急指挥调度为一体的智慧化管理平台,实现对排水管网(污水、雨水)数据的统一管理,实现对日常巡查、养护、防汛应急指挥的全流程精细化管理;为管网新建、升级、改建规划方案提供数据基础;
云平台对于提高排水管网(污水、雨水)系统管理水平,解决目前问题和未来风险,保障居民日常生产生活具有重要意义。

视频介绍(2分18秒)

平台特点

1、实时远程监控:实时远程巡查检测现场视频数据实时上传存储,可对位置进行实时定位,查看过去检测轨迹,对设备状态和现场工作量进行统计;
2、管网数据分析:对管道内窥影像数据、管网地理信息、检测信息、缺陷分布、统计及评估和修复前后对比进行大数据分析;
3、管网实时监测:对监测点的液位、流量与水质等实时监测,并进行报警设置提供隐患解决办法参考意见,同时可以翻阅监测点的历史信息,提高效率;
4、智能识别缺陷:对管网检测视频进行缺陷识别,通过人工智能图像算法、统计大数据系统自主识别检测视频中正常和异常管段,并对管段缺陷进行分类、等级标识;
管网智能管理系统包括以下子系统:
第一,管网检测在线子系统
第二,管网信息子系统
第三,管网监测子系统
第四,缺陷智能识别子系统
各个子系统采集记录的大量数据,为分析工作提供了数据基础,在此基础上系统实现了相关的数据分析功能,避免了传统信息系统单纯记录查询统计的应用模式,消除了信息孤岛现象。子系统采集的数据可以在各个子系统之间进行数据共享,提供更多的分析功能,为排水系统管理提供综合科学的决策数据和分析报告。

1、排水管网检测在线子系统
普通管网视频检测设备,只能采集完视频保存在控制终端上,然后导入到电脑中进行查看检测视频,无法通过管理平台,在线查看检测设备实时采集的检测视频,无法达到实时获取检测视频的目的,对远程查看以及远程指挥现场作业造成影响。
该子系统具备设备定位、远程检测视频预览、工作轨迹查看与设备详情查询等功能。

设备定位:远端用户通过平台可以掌握户外作业人员当前作业地点,便于远程协调户外工作。

远程检测视频预览:用户可以远程查看现场管道实际图像信息,当遇到突发事件,远端用户可以远程协助户外作业人员现场作业,快速做出应急方案。

工作轨迹查看:远端用户通过平台可以查看当天户外作业人员的检测路线,便于考核户外作业人员的工作。

设备详情查询:远端用户通过平台可以查询正在使用的检测设备情况,便于设备的维护工作。

2、管网信息子系统
管网信息子系统可显示管辖区域内排水管网的分布与检测成果,包括管网地理分布情况、管道基础信息、井口信息、检测信息、缺陷分布、缺陷统计与评估等。

管网地理分布情况:平台在地图上绘制整个管辖区域的管道,并使用不同的颜色区分污水管、雨水管、合流管。
管道基础信息:通过平台用户可以查看管道的起始井与结束井的编号、起始井与结束井的经纬度,管材、管径、管长、管类型、所在道路等信息;
井口信息:通过平台用户可以查看井口的编号、经纬度、高程、井深等信息;
检测信息:通过平台用户可以查看过往检测的视频、缺陷等信息,并可以上传管道的检测视频与缺陷信息。
缺陷分布:通过平台用户可以查看整个管网一到四级缺陷在地图上的分布情况,并可以通过选择道路、缺陷类型、级别、缺陷名称对缺陷进行筛选查看,通过导出功能,用户可以把缺陷信息保存到本地。  缺陷统计与评估:缺陷统计分为总体统计与详细统计,总体统计实现了管网全部缺陷的汇总。详细统计为不同的区、不同的街道、不同的道路进行单独的缺陷统计。通过详细统计功能,用户查看最小单位为道路的缺陷信息统计表与评估报告表,并可以导出到本地。

图 管网信息子系统管网分布界面面

图 管道基础信息与检测信息界面

图 井口信息界面

图 缺陷分布界面

图 缺陷统计-总体统计界面

图 缺陷统计-详细统计界面

3、管网监测子系统
传统的靠人工巡视、人工报警的监控模式响应滞后,不能进行及时的判断报警,极大的影响应急处理的响应速度和可靠性,另外由于监测过程未实现数字化流程,事后分析决策、手动计算的分析方式已经与现代化监测管理的要求脱节,使得传统监控预警模式无法达到监测管理科学客观的信息化水平。

在线监测系统取代传统、繁琐的人工巡检,可以弥补传统人工巡检方式在即时性、全局性、连续性、人为误差等方面存在的弊端,做到对监测点的24h连续监测,使管理人员能够准确掌握监测点的液位、流量、雨量等监测设备的在线监测数据,并通过在线监测的警报功能,及时发现监测点的溢流、淤积、堵塞等风险,克服监测数据汇报时间周期长导致的信息滞后问题,充分发挥排水设施的作用,从而实现整个排水系统的优化调度。

在线监测系统以GIS技术为基础,将在线监测功能与报警功能进行集成,实现监测点的实时监测、实时监测数据管理、历史监测数据管理以及监测报警信息管理等。通过在线监测系统可以有效提高在线监控工作的信息化程度,进而实现在线监控和预警机制的高效调度,科学决策。

该系统功能主要为在线监测点的地图显示、监测点实时运行状态显示、监测点历史信息统计、监测点历史信息导出、当前报警情况显示及报警历史统计。

图 管网监测子系统主页面

  4、智能识别子系统
传统的管道缺陷识别,是通过人工判断,通过对检测设备采集的检测视频进行人工判别,分析是否存在缺陷,缺陷的类型等信息,不仅工作量大,而且效率低,影响了管网数据智能化管理。

智能识别子系统通过依托人工智能技术,结合深度学习以及图像算法技术,可以对平台上传的视频、图片进行大数据分析运算,实现对上传的检测视频进行自动分析,识别出管道存在缺陷及类型,遇重大隐患可自动报警,并提供隐患解决办法参考意见,可大大提高视频分析效率,达到智能化、高效化管理数据的目的。

图 缺陷识别子系统主页面

水平定向钻工艺及施工中出现的问题关键技术

一 、使用水平定向钻机进行管线穿越施工

1、 水平定向钻穿越施工工艺:
使用水平定向钻机进行管线穿越施工,一般分为二个阶段:第一阶段是按照设计曲线尽可能准确的钻一个导向孔;第二阶段是将导向孔进行扩孔,并将产品管线(一般为PE管道,光缆套管,钢管)沿着扩大了的导向孔回拖到导向孔中,完成管线穿越工作.
1.1 钻导向孔:

要根据穿越的地质情况,选择合适的钻头和导向板或地下泥浆马达,开动泥浆泵对准入土点进行钻进,钻头在钻机的推力作用下由钻机驱动旋转(或使用泥浆马达带
动钻头旋转)切削地层,不断前进,每钻完一根钻杆要测量一次钻头的实际位置,以便及时调整钻头的钻进方向,保证所完成的导向孔曲线符合设计要求,如此反
复,直到钻头在预定位置出土,完成整个导向孔的钻孔作业.见示意图一:钻导向孔.

钻机被安装在入土点一侧,从入土点开始,沿着设计好的线路,钻一条从入土点到出土点的曲线,作为预扩孔和回拖管线的引导曲线.
1.2 预扩孔和回拖产品管线:
一般情况下,使用小型钻机时,直经大于200毫米时,就要进行予扩孔,使用大型钻机时,当产品管线直径大于Dn350mm时,就需进行预扩孔,预扩孔的直径和次数,视具体的钻机型号和地质情况而定.

回拖产品管线时,先将扩孔工具和管线连接好,然后,开始回拖作业,并由钻机转盘带动钻杆旋转后退,进行扩孔回拖,产品管线在回拖过程中是不旋转的,由于扩
好的孔中充满泥浆,所以产品管线在扩好的孔中是处于悬浮状态,管壁四周与孔洞之间由泥浆润滑,这样即减少了回拖阻力,又保护了管线防腐层,经过钻机多次预
扩孔,最终成孔直径一般比管子直径大200mm,所以不会损伤防腐层.见示意图二:预扩孔和示意图三:回拖管线.

在钻导向孔阶段,钻出的孔往往小于回拖管线的直径,为了使钻出的孔径达到回拖管线直径的1.3~1.5倍,需要用扩孔器从出土点开始向入土点将导向孔扩大至要求的直径.

地下孔经过预扩孔,达到了回拖要求之后,将钻杆、扩孔器、回拖活节和被安装管线依次连接好,从出土点开始,一边扩孔一边将管线回拖至入土点为止.
2、 水平定向钻施工的特点:
2.1 定向钻穿越施工具有不会阻碍交通,不会破坏绿地,植被,不会影响商店,医院,学校和居民的正常生活和工作秩序,解决了传统开挖施工对居民生活的干扰,对交通,环境,周边建筑物基础的破坏和不良影响.
2.2 现代化的穿越设备的穿越精度高,易于调整敷设方向和埋深,管线弧形敷设距离长,完全可以满足设计要求埋深,并且可以使管线绕过地下的障碍物.
2.3 城市管网埋深一般达到三米以下,穿越河流时,一般埋深在河床下 9—18米,所以采用水平定向钻机穿越,对周围环境没有影响,不破坏地貌和环境,适应环保的各项要求.
2.4 采用水平定向钻机穿越施工时,没有水上、水下作业,不影响江河通航,不损坏江河两侧堤坝及河床结构,施工不受季节限制,具有施工周期短人员少、成功率高施工安全可靠等特点.
2.5 与其它施工方法比较,进出场地速度快,施工场地可以灵活调整,尤其在城市施工时可以充分显示出其优越性,并且施工占地少工程造价低, 施工速度快.
2.6 大型河流穿越时,由于管线埋在地层以下 9—18mm,地层内部的氧及其他腐蚀性物质很少,所以起到自然防腐和保温的功用,可以保证管线运行时间更长.
3、 水平定向钻机系统简介:
各种规格的水平定向钻机都是由钻机系统、动力系统、控向系统、泥浆系统、钻具及附助机具组成,它们的结构及功能介绍如下:
3.1 钻机系统:是穿越设备钻进作业及回拖作业的主体,它由钻机主机、转盘等组成,钻机主机放置在钻机架上,用以完成钻进作业和回拖作业.转盘装在钻机主机前端,连接钻杆,并通过改变转盘转向和输出转速及扭矩大小,达到不同作业状态的要求.
3.2 动力系统:由液压动力源和发电机组成动力源是为钻机系统提供高压液压油作为钻机的动力,发电机为配套的电气设备及施工现场照明提供电力.
3.3 控向系统:控向系统是通过计算机监测和控制钻头在地下的具体位置和其它参数,引导钻头正确钻进的方向性工具,由于有该系统的控制,钻头才能按设计曲线钻进,现经常采用的有手提无线式和有线式两种形式的控向系统.
3.4 泥浆系统:泥浆系统由泥浆混合搅拌罐和泥浆泵及泥浆管路组成,为钻机系统提供适合钻进工况的泥浆.
3.5 钻具及辅助机具:是钻机钻进中钻孔和扩孔时所使用的各种机具.钻具主要有适合各种地质的钻杆,钻头、泥浆马达、扩孔器,切割刀等机具.辅助机具包括卡环、旋转活接头和各种管径的拖拉头.
穿越施工现场布置图

1. 入土点是定向钻施工的主要场所,钻机就布置在该侧,所以施工占地比较大,DD330钻机的最小占地为30×30M,当然也可以根据现场的实际情况作相应调整,DD60、DD-5的占地相应要小得多.

2.出土点一侧主要作为管道焊接场地,在出土点应有一块20×20M的场地作为预扩孔、回拖时接钻杆和安装其他设备时使用;在出土点之后有一条长度与穿越长度相等的管线焊接作业带.
穿越实例

大沽沙穿越钻机场地布置
1998年9月到10月之间,在天津塘沽大沽沙海河,我公司仅用45天时间完成了两条Φ219×8,一条Φ426×9,长度为960米的管道穿越.

大沽沙穿越焊接场地(只显示了两条管道)
水平定向钻穿越施工工艺流程图

使用水平定向钻技术穿越河流和其它障碍物的施工方法在世界范围内得到了广泛的运用.水平定向钻穿越承包商协会认为:在工程项目招投标过程中,水平定向钻承
包商应设法获取尽可能多的相关信息以提出完整并具竞争力的报价,承包商在开工前应该获得以下信息,以保证日后的工作可以顺利进行,并在此条件下完成工程项
目的施工,同时足够的施工前的各类信息还可以保证施工过程更安全,减少对周围环境的破坏,使工程进行的更顺利.
一、概 述
A、发展与使用

水平定向钻技术最早出现在70年代,是传统的公路打孔和油田定向钻井技术的结合,这已成为目前广受欢迎的施工方法,可用于输送石油、天然气、石化产品、
水、污水等物质和电力、光缆各类管道的施工.不仅应用于河流和水道的穿越,同时还广泛应用于高速公路、铁路、机场、海岸、岛屿以及密布建筑物、管道密集区
等.
B、技术限制
定向钻施工技术首先应用于美国海岸地区的冲积层穿越,现在已经能够开始在粗沙、卵石、冰碛和岩石地区等复杂地质条件下进行穿越施工.最长的穿越施工已达6000英尺、管道直径为18英寸.
C、优势
事实证明:水平定向钻穿越是对环境影响最小的施工方法.这项技术同时还可以为管道提供最的保护层,并相应减少了维护费用,同时不会影响河流运输并缩短施工期,证明是目前效率最高,成本最低的穿越施工方法.
D、施工过程和技术

1、导向孔:导向孔是在水平方向按预定角度并沿预定截面钻进的孔,包括一段直斜线和一段大半径弧线.在钻导向孔的同时,承包商也许会选择并使用更大口径的
钻杆(即冲洗管)来屏蔽导向钻杆.冲洗管可以起到类似导管的作用,还可以方便导向钻杆的抽回和更换钻头等工作.导向孔的方向控制由位于钻头后端的钻杆内的
控制器(称为弯外壳)完成.钻进过程中钻杆是不做旋转的,需要变换方向时若将弯外壳向右定位,钻进路线即向右沿平滑曲线前进.钻孔曲线由放置在钻头后端钻
杆内的电子测向仪进行测量并将测量结果传导到地面的接收仪,这些数据经过处理和计算后,以数字的形式显示在显示屏上,该电子装置主要用来监测钻杆与地球磁
场的关系和倾角(钻头在地下的三维坐标),将测量到的数据与设计的数据进行对比,以便确定钻头的实际位置与设计位置的偏差,并将偏差值控制在允许的范围之
内,如此循环直到钻头按照预定的导向孔曲线在预定位置出土.
2、预扩孔:
导向孔完成后,要将该钻孔进行扩大到合适的直径以方便安装成品管道,此过程称为预扩孔,(依最终成孔尺寸决定扩孔次数).例如,如需安装36英寸管线,钻
孔必须扩大到48英寸或更大.通常,在钻机对岸将扩孔器连接到钻杆上,然后由钻机旋转回拖入导向孔,将导向孔扩大,同时要将大量的泥浆泵入钻孔,以保证钻
孔的完整性和不塌方,并将切削下的岩屑带回到地面.

3、回拖管道:预扩孔完成以后,成品管道即可拖入钻孔.管道预制应在钻机对面的一侧完成.扩孔器一端接上钻杆另一端通过旋转接头接到成品管道上.旋转接头
可以避免成品管道跟着扩孔器旋转,以保证将其顺利拖入钻孔.回拖由钻机完成,这一过程同样需要大量泥浆配合,回拖过程要连续进行直到扩孔器和成品管道自钻
机一侧破土而出.
二、现场布局和设计
A、道 路
施工现场两侧都需要重型设备,为缩减成本,通往两侧施工现场的道路应尽可能利用现有道路以减少新修道路距离,或利用管道线路的施工便道,所有相关道路使用权的协议都应由业主提供,在投标阶段再来讨论这些问题为时已晚.
B、工作场地

1、钻机一侧——钻机施工场地至少需要30M(100FT)宽,长45M(150FT)的面积.该面积从入土点算起,入土点应位于规定的区域内至少
3M(10FT)处,同时由于许多钻机配套的设备或配件没有规定的存放地点,所以钻机一侧施工现场可由许多不规则的小块组成,以便节省占地面积,现场尽量
要平整,坚硬,清洁,以便有利于进行施工.由于穿越施工时需要大量的淡水供搅拌泥浆用,所以施工现场要尽量靠近水源或便于连接自来水管道的地方.

2、管道一侧—-为便于预制成品管道,管道一侧要有足够长度的施工现场,这也是要重点考虑的事情.现场宽度应满足管道施工的需要(一般为
12—-18米).同样在出土点一侧也需要30米(100FT)宽乘以45米(150FT)长的施工现场.总长度以能够摆放下所预制的管道为准,(场
地的总长度一般为穿越管道长度再加上30米,)在回拖前,要将管道预制完成,包括焊接,通球,试压防腐等工序,在回拖过程中,不能再进行管道的连接工作,
因为回拖过程是要连续进行的,若此时进行管道连接将可能造成地下孔洞的塌方,极可能造成整个工程施工的失败.
C、施工现场勘察
一旦施工地点确定,应对相应区域进行勘测并绘制详细准确的地质地貌图纸.最终施工的精度取决于这一勘测结果的精度.
D、施工设计参数

1、覆盖层厚度—-考虑的因素包括所穿越河流的流量特征,季节性洪水冲刷深度,未来河道的加宽和加深,现有管道和电缆的位置等因素.一旦确定了施工地
点并完成地质调查,穿越层的厚度也就确定了,一般来说,覆盖层应至少是6米(20FT)厚.以上仅是针对河流穿越而言的,对于其它障碍物的穿越会有另外的
要求.

2、钻进角和曲率半径—-在大多数穿越施工中,入土角通常选择在8–12度之间,多数施工应首先钻一段斜直线,然后再钻一段大半径曲线.此曲线的曲
率半径由成品管线的弯曲特性决定,随直径增大而增大,钢管道曲率半径的拇指法则是100FT/IN(一般取管道直径的1000—1200倍).斜直线将导
向孔曲线按照预定的走向引导到设计的深度,然后是一段在此深度上的长长的水平直线,然后到达向上的弯曲点再到出土点.出土角应控制在5-12度之间,以便
于成品管道的回拖.
E、钻孔施工
所有的测向控向工具都包括地下测量电子设备和地面接收设备,可以测得钻头所在位置的磁方位角(用于左/右控制)和倾斜角(上/下控制)以及钻头的钻进方向.
1、精度:穿越施工精度很大程度上取决于磁场的变化.例如,大型钢结构(桥梁,桩基,其它管道)和电力线路会影响磁场读数.而穿越出土点的导向孔目标偏差值应控制在左右3米(10FT),长度——3米~10米(-10~30FT)的范围内.
2、完工图纸:一般来说,导向孔的测量和控制应在钻导向孔时每钻进一根钻杆或隔9米(30FT)测量计算一次.以上测量计算完成的导向孔施工图纸承包商应向业主提供.也有采用替代方法如陀螺仪,穿地雷达和智能清管球用来做定位工作.
三、地质调查
A、探孔数量

探孔数量取决于计划穿越地点的地层情况及穿越长度.如果穿越长度为300米(1000FT),在两侧的穿越工地各钻一个钻孔就足够了,如果钻孔结果表明该
地区地质状况比较单一,就不必进行进一步的钻探取样.如果勘探报告表明该地区地质条件比较复杂,或者发现有岩石或有粗沙层存在,这时就需要做进一步的详细
的地质调查.长距离大口径穿越施工时,如出现粗砂,卵石,风化岩或硬岩应每隔180米—-240米(600–800FT)取样一次,若有明显迹象表
明地质结构异常复杂,这时就需要打更多的地质探孔进行更多的采样工作.所有采样探孔都应沿穿越断面方向,采样深度以计划的穿越深度为准.如有可能,取样探
孔最好选在穿越中线一侧约8米(25FT)处.勘探任务完成后,探孔必须封好以防止在施工过程中的泥浆泄漏.
B、探孔深度

所有的探孔深度都应至少达到穿越点以下12米(40FT)或预定的穿越深度以下6米(20FT),两者之中取其大者.有时将穿越深度定的深一些或实际穿越
曲线比设计的位置深一些,无论对承包商还是对业主来说都是很有益的,关键是穿越位置要选在地层结构一致的利于成孔的地层中进行,这样才利于穿越的成功.
C、土壤的标准分类

一名合格的地质技师或地质学者,应能依据统一土壤分类系统或ASTM设计书D-2487和D2488对材料进行分类.能够拥有一份由现场技师或钻探公司提
供的现场钻探记录,对以后的施工将是非常有益的,此记录会包括对材料的目测分类以及由钻探公司根据取样结果对地层结构所做的解释和评价.
D、标准穿刺测试

SPT为了更好地确定颗粒材料的密度,地质工程师通常会依据ASTM规范D1586做标准穿刺测试SPT.这是一种现场测试方法,利用标准重量的重锤将勺
形取样器打入土层中的一定深度,记录下进入到12寸深时的击打次数.所获数据即为标准穿刺阻力值并可用于估算试验地点非聚合土壤的相对密度.也有些钻探公
司会选择在结合性土壤或岩石地区进行小范围的这项试验,以此来确认密实土壤的一致性及岩石的硬度.
E、取芯取样法

多数地质勘探公司更喜欢使用取芯取样器来获取地下岩心的样本,这些测试一般根据ASTM规范D-1587进行.除取样器为液压驱动的有锋利切割刃的薄壁无
逢钢筒外,此类测试类似上述标准穿刺测试.需要的液压数值可在现场记录中找到,这种方法可取到相对完整的样本以便对其进行更详细的试验室分析.样本可在现
场利用手持式穿刺仪分析,对于定向穿越来说,通常使用上述切割式勺状取样器即可满足施工需要.
F、颗粒度分析
将样品进行颗粒度筛网分析,是对于用切割式勺状取样器在施工现场取得的颗粒状物质所进行的一种机械试验,这些样品被送到试验室,在通过一系列的筛网后,根据其颗粒的大小和重量得出不同粒径的百分比,这是最重要的试验之一.
G、岩石情况

如果在土壤勘测中发现岩层的存在,必须确定岩层类型,相对硬度和非限定性压缩强度,要由专业勘探公司利用金刚石钻头取芯桶进行取样,典型的岩心样本直径为
50毫米(2英寸).岩石类型由地质专家根据岩心与总取心长度关系对岩石进行质量分类,岩石硬度依据岩石与以知硬度的十种材料相比较得知,压缩强度通过精
确测量岩心然后进行压缩实验取得.这些数据属于岩石的物理参数,以便于确定采用什么类型的穿越设备和钻头,并且穿越进尺也可以估计到.

二、水平定向钻(HDD)出现的问题从以下几方面采用关键技术将其解决

二 、水平定向钻(HDD)出现的问题从以下几方面采用关键技术将其解决

2 钻机锚固钻机在施工中如锚固不好,钻进拖管过程中发生事故的情况非常多。在钻机锚固前,对锚固区域用仪器进行地下管线检测,防止将锚杆打在地下管线上。合理钻机锚固是顺利完成钻进及回拖管的前提,钻机锚固能力反映了钻机在钻进和回拖施工时利用本身功率的能力。一台钻机推力再大,钻机在定向中发生了移动,也会导致钻机无法按预定的计划完成钻进工作。在回拖管时,如锚固不好,钻机移动,需进一步锚固,从而导致了管道有可能拖不动,进一步加大钻机拖力,会出现钻机的全部功率作用在钻机机身上,容易发生设备破坏和人员伤亡。

3 信号接收

信号在钻进过程中,由于地磁信号强(建筑物、高架桥屏蔽作用),使定向信号无法接收。依靠在信号消失之前的钻进斜率与点数在钻杆上作标记进行盲钻,在盲钻过程中,由钻杆上的标记及计算钻杆的斜率来完成造斜及整个钻进,直至信号出现(例如泰安阿吉斯在施工过程盲钻150m,直至收到信号,从而完成整个工程施工)。

4 钻具选择

钻头是定向的重要工具之一,对于不同的土层,采用不同的钻头,这样才能防止卡钻的出现。
(1)淤泥质粘土:必需采用较大的钻头,要想向前推进0.9m就实现钻孔变向,狗腿度为10的钻头或大钻头。
(2)干燥的软粘土:采用中等尺寸钻头效果最佳。
(3)硬土层:较小的钻头效果最佳,要保证钻头至少比探头外筒的尺寸大12.5mm。
(4)钙质层:最小钻头效果最佳,采用特殊的切削破碎技术来实现钻孔方向改变。
(5)糖粒砂:中等尺寸狗腿度钻头效果最佳,镶焊硬质合金钻头耐磨性最好,钻机的锚固和钻进液是成败的关键。
(6)砂质淤泥:中等到大尺寸钻头效果较好。有时需要高扭矩来驱动钻头。
(7)致密砂层:小尺寸锥形钻头效果最好,但钻头的尺寸必须大于探头外筒的尺寸,这种土质中,向前推进较难,可较快实现控向,钻机锚固是钻孔成功的关键。
(8)砾石层:镶焊小尺寸硬质合金的钻头效果最佳,对于大颗粒卵石层,钻进难度大,不过若卵石层间有足够的胶结性土,钻进还是可行的。在砾石层中,回扩难度最大。
(9)固结的岩层:使用孔内动力钻具钻进效果最佳。采用标准钻头钻到硬质岩时,钻机可在无明显方向改变的条件下完成施工。

5 设计轨迹与穿越地层的合理选择

水平定向钻可承担各类材质管线的穿越任务,钻机性能的很好发挥,依赖于理想的地质条件和合理的轨迹设计,如果地质条件理想,穿越曲线位于粘土、亚粘土或淤泥等造浆能力好的地层,就可以适当加长穿越长度,而实际拖拉力不会增加太多,如果穿越曲线所在地层不理想时(流沙、钙质层、砾石层),就会降低穿越成功的可能性,甚至导向孔无法完成。
5.1地质要求
对穿越工程,必须先勘察穿越处的地质情况,不同地层(淤泥、粘土、亚粘土、粉土层、砂土、流沙穿越),需选用不同的钻具及其结构。
穿越段地质必须详勘,一般按要求在穿越中心线两边各25m,沿中心线方向间距打勘察孔,复杂的地段勘察孔必须加密。穿越段地质勘探应提供以下参数,取样深度、含水量、颗粒度、液性指数、塑性指数、液限、塑限、标贯击数、承载力等、并提供水质报告,提供穿越地段地形图和地质钻探剖面图供设计及施工单位参考。
5.2轨迹设计
根据铺管设计标高、地层及地形情况,根据钻杆曲率半径、工作场地、地下管线分布情况,甲方图纸来设计钢管埋深,钢管的弯曲曲率半径,确定定向钻进过程中钻头的顶角、方位角、工具面向角、计算出测定空间坐标,设计出定向钻进的轨迹图及对特殊地层、地段制订特殊施工方案,并且要把常用和应急材料准备一定的库存量,以防特殊情况的发生,保证施工各阶段的顺利进行。

6 导向孔工艺及卡钻出现的解决方法

6.1导向钻孔
采用射流辅助钻进方式。导向孔钻进是通过定向钻的高压泥浆射流冲蚀破碎旋转切削成孔的,以15(斜面钻头来控制钻头方向。钻头内的发射器,发射钻头的位置、顶角、深度、钻头的温度、面向角、发射器内电池的状态等参数,这些参数由地面手提定位示踪仪接收,供操作人员能及时准确确定钻头的具体位置、深度,并随时通过钻机调整钻进参数,以控制钻头按设计轨迹钻进。
6.2斜面纠偏
地面示踪仪测量精度一般为3%~5%,测量深度为21m,当发现定向钻进偏离设计轨迹时,通过调整钻头斜面的方向,进行造斜纠偏。纠偏不能太急,应按照钢管的曲率半径在几根钻杆内完成纠偏,不能在一根钻杆内就完成所有纠偏工作,防止拖管过程中,出现拖不动的问题。
6.3卡钻的出现及解决方法
在(砾石、糖粒砂、钙质层)钻进中,会出现卡钻的现象。应及时调整泥浆配比,使用最大泥浆泵排量,与挖掘机配合,将钻杆撤出卡钻区。总结卡钻出现的原因,调整泥浆配比,使用进口澎润土,增加泥浆切力与粘度,使用扭矩大、推力大的钻机及相匹配的钻头,完成导向孔的钻进。

7 扩孔器及扩孔工艺

当先导孔钻至出钻区需用一个扩孔器来扩大钻孔,以便安装成品管线,一般将钻孔扩大至成品管尺寸的1.2~1.5倍,扩孔器的拉力或推力一般要求为每毫米孔径175.1N,根据成品管和钻机的规格可采用多级扩孔。对于不同的地层,采用不同的扩孔器,这是保证回扩成孔的关键。
(1)快速切削型扩孔器:这种类型的扩孔器,对粘性大及砂土层较有效,但这种扩孔器无法破碎坚硬的岩石。
(2)拼合型钻头通孔器:它由剖开的牙轮锥形体制造,并将其焊接到金属板和短的间接构件上。拼合型钻头通孔器是一种通用的,经济的扩孔工具。易定做,有多种切削具类型和规格,制造时必须特别焊接、热处理以及其他的保护措施,以免损坏后牙轮失落于孔内。
(3)锥形牙轮扩孔器:这种扩孔器现在广泛应用,应用于除岩石以外,硬度在40MPa以内的各种地层。
(4)YO—YO型扩孔器:这种扩孔器非常适应于非开挖施工,它在岩石崩落的地层中可以向前或向后钻进。这种平衡式的牙轮是稳定的,而且能够自动跟踪先导孔。大型牙轮和密封式轴承的应用延长了其在孔内的寿命。
扩孔工艺:是将导向孔孔径扩大至所铺设的管径以上,减少铺管时的阻力。

8 钻井液性能与钻孔、回拖的关系

定向钻穿越施工,由于钻孔处于地表(一般位于地表层以下3m~20m),地质松软,所以不易形成孔洞,钻孔易塌方,这就要求所用泥浆的护壁性要好,泥饼质量高,控制失水性要好,以保证钻机性能的很好发挥。由于地层结构不同所需泥浆性能也不相同。
泥浆作为钻进冲洗液,使用优质的膨润土和添加剂,严格按照比例经搅拌系统搅拌成泥浆注入洞内,具有润滑钻具、稳定孔壁、降低回转扭矩和回拉力,降低拖管时钢管和洞壁的摩擦系数、冷却钻头和发射器、携带土屑、减少腐蚀、固孔护管等作用。
长距离穿越,泥浆的作用尤其重要,孔内缺少泥浆往往是钻孔失败的重要原因。保持整个过程中有反浆,对工程顺利进行至关重要,为改善泥浆性能,需加入适量地添加剂来配制成不同性能的泥浆。纯碱,可增粘,增静切力,调节pH值,投入纯碱量一般为钠土量的2%。为成孔良好,增加孔内润滑,可加入适量的Drispac。为提高泥浆携带土屑的能力,将孔内的土屑带出,可在钻孔过程中的某一段加入一定量的Flowzen,能够达到很好的使用效果。
为了保证穿越工程的顺利进行,切实保证泥浆的性能才能保证穿越管线的成功。
(1)认真研究地质构造图,制定完善的的泥浆配比方案,并认真实施,对特殊地段应提前采取特殊措施,及时加入添加剂,调节好泥浆性能,尽量保证孔内状况良好,形成良好的孔壁。
(2)在易塌方的地段,一方面改进泥浆的性能,另一方面,改变钻孔和回拖工艺等,尽量缩短停钻时间,加快钻进速度,保证钻孔不塌方。
(3)加强泥浆循环。停止钻进时,仍要注入适量泥浆,保证孔内始终存在正压,使泥浆把孔内切削物尽量多的携带出来,防止沉积于孔内。

9 在拖管过程中出现管拖不动的情况

拖管途中出现管道拖不动,应及时将钻机移到管道入地端,与挖掘机配合,使拖力达到原来拖力的两倍,将管道拖出地面。总结拖不动的原因,审查各个工程环节及相关保障措施,并加以改善,如采用更大的回扩头、使用进口粘土和添加剂,更大动力的钻机,完成穿越。

 

phpmyadmin 配置文件中的密文(blowfish_secret)太短

phpmyadmin 配置文件中的密文(blowfish_secret)太短?凑够32个字符!

配置文件中的密文(blowfish_secret)太短。

解决方法:

1.打开phpMyAdmin目录下的config.sample.inc.php文件(或是config.inc.php)

  1. vim phpMyAdmin/config.sample.inc.php

修改

  1. cfg [ ‘blowfish_secret’ ] = ;

在单引号中写入密文
只写字母或数字 不能字母数字混用
2.打开phpMyAdmin/libraries/目录下config.default.php文件

  1.  vim phpMyAdmin/libraries/config.default.php

修改

  1. cfg [ ‘blowfish_secret’ ] = ;

同上
配置文件中的密文(blowfish_secret)太短。一定要凑够32个字符

哪些手机型号外接便携显示器能实现PC电脑模式

手机支持PC模式,这个不同于一般的手机投屏功能,基本上实现了手机可以当电脑主机的功能。很多人都要疑问,自己的手机是否支持手机PC模式呢?奥斯曼小编为大家整理了一些支持PC模式手机型号,快来看看你的手机是否有第二系统模式!

哪些厂家手机支持外接便携显示器能实现PC电脑功能:

1、坚果手机TNT系统

将坚果手机通过Type-C一线连接奥斯曼便携显示器,即可在便携显示器上看到TNT系统界面,用户可以像使用Windows电脑一样,轻松使用办公软件制作PPT、表格、浏览网页、看视频、玩游戏等,支持同时打开多个窗口;手机可独立使用,也可变身成为触控键鼠。

支持PC模式的坚果手机型号:坚果R1、坚果Pro 2S

2、三星手机DEX系统

将三星手机通过Type-C一线连接奥斯曼便携显示器,三星DEX模式能满足基本浏览网页、文件、照片、简单办公、邮件处理等需求,常用的视频、微信、QQ、微博等都可以正常无压力的运行,三星DEX模式能够很好的提高手机的实用性,有着不错的办公效率与娱乐;手机可单独使用,也可以当触控板操作,方便演示文稿时进行切换幻灯片。

支持PC模式的坚果手机型号:S8、S8+、S9、S9+、S10、S10+、Note 8、Note 9、S10等…

3、华为手机EMUI系统

将将华为手机通过Type-C一线连接奥斯曼便携显示器,便携显示器即可显示电脑模式,手机可以充当鼠键,华为EMUI系统配备了日常实用的WPS、浏览器、文件管理器、备忘录、图片查看、查收邮件、华为视频以及其他第三方app等常用软件;手机可单独使用,也可以当触控板操作。

支持PC模式的华为手机型号:Mate10、Mate10 Pro、Mate 20、Mate 20 Pro、Mate RS、Mate 30、P20、P20 Pro、P20 RS、P30、P30 Pro、荣耀Note 10、荣耀V20等…

4、其他更多手机支持PC模式型号可查阅下图表格

未来的电脑,你们觉得会不会采用手机+便携显示器?期待更多手机厂家嵌入PC模式给消费者,手机扩展PC功能将会成为旗舰机的标配。

Windows设置多用户同时远程登录

Windows7设置多用户同时远程登录

有时候服务器是Win7系统的时候,远程登录桌面时,即使登录的是不同的管理账号,还是会把远程登录的人给踢下来。即不同的账号只能同时存在一个会话窗。下面教大家如果设置Win7让两个账号的两会话同时存在,且相互之间不冲突。

设置步骤

1、创建需要远程的两个用户账号。点击桌面计算机,右键—>管理—>本地用户和组—>用户—>新建用户。假设创建一个用户UserTable

 

2、开启计算机远程。点击桌面计算机,右键—>属性—>远程设置—>勾上允许任意版本远程桌面的计算机连接。

 

3、将新建用户添加到远程桌面组。在远程设置里面,点击用户—>添加。

 

4、在选择用户里面,点击高级–立即查找,找到刚刚我创建的需要远程的用户,依次点击确定。一般管理员账号的不需要再添加的。管理员账号本来就属于远程账号组。

 

5、防火墙如果是开着的,就需要确认是否开启远程桌面服务。控制面板—>系统和安全—>Windows 防火墙—>高级设置—>入站规则。确认远程桌面是服务是启用状态。

 

6、点击开始菜单—>运行—>输入“gpedit.msc”进入本地组策略编辑器。

 

7、在本地组策略编辑器里面,依次展开计算机配置—>管理模板—>Windows组件—>远程桌面服务—>远程桌面会话主机—>连接—>限制连接的数量。

 

8、打开限制连接数,这里未配置时,默认的最大连接数是1.点击已启用—>允许的RD最大连接数为该为2—>确定。

 

9、打开“远程桌面服务用户限制到单独的远程桌面服务会话”,点击已禁用,然后确定。

10、下载一个universal termsrv.dll patch。

链接:http://pan.baidu.com/s/1kV9hirt 密码:jqg2

第三方工具。解压到文件夹。打开UniversalTermsrvPatch文件夹—>管理员身份运行UniversalTermsrvPatch-x86.exe文件。

 

win服务器版默认是支持多用户登陆的,甚至可以在主机上用不同用户自己远程登陆自己,如window server 2016。

Win10 正常情况下是不允许用户同时远程的,即一个用户远程进来会把另一个用户踢掉,因此需要破解才能使得多个用户同时登陆远程桌面。

主要有以下两个步骤:

  1. 主机修改远程登录相关配置;

  2. 破解远程登录用户限制;

 

主机修改远程登录相关配置。

  • 新建用户:

右键“此电脑—>管理—>本地用户和组“,右键”用户—>新用户“,添加用户名,设置密码(勾选密码永不过期)。然后点击创建即可。

  • 添加远程桌面用户

右键“此电脑—>属性—>远程设置“

勾选“允许远程协助连接这台计算机“。然后点击”选择用户—>添加—>高级—>立即查找“找到刚刚创建的用户,点击确定。

  • 配置本地组策略

运行 gpedit.msc 打开本地组策略编辑器。

选择“【管理模板】—>【Windows组件】—>【远程桌面服务】—>【远程桌面会话主机】—>【连接】。

  • 配置【限制连接的数量】,点击“已启用”,其中允许的RD最大连接数可以自己视情况而定。

  • 配置【将远程桌面服务用户限制到单独的远程桌面服务会话】

这个配置很重要,我最开始没配置,导致断开一个远程登录连接后,再重新连接,会重新打开一个新的桌面。但是打开新的应用程序时,系统提示系统后台正在运行,之前断开前的应用程序一个也找不到。后来发现是因为这部分设置没配置时,同一个用户先后登陆远程系统,系统会分配不同的会话,从而导致你在一个远程桌面的操作都不见了,虽然你运行的一些程序并没有被系统关闭,但是你无法对他们进行管理。

  • 配置【允许用户通过使用远程桌面服务进行远程连接】,启用即可。

 

 

  • 破解远程登录用户限制

  • 下载解除远程桌面多用户连接限制补丁  下载地址:

https://download.csdn.net/download/qyy_nice/10924112

解压其中的RDP压缩包,然后以管理员身份运行install.bat安装,安装完成后,运行RDPConf.exe,查看各个组件运行状态,状态全部为绿色就可以使用多用户远程桌面了。

如果端口监听为Nothing listening, 或者出现Listening [not supported], 则需要运行一下update.bat。

对于大部分计算机以上方法是完全可行的,但是我的控制台版本是1809系列,操作系统为17763,以上方法不行.

 

那么根据RDP补丁的原理是修改termsrv.dll和termsrv.dll.mui这两个远程服务文件达到多用户登陆目的。我把本系统的termsrv.dll和termsrv.dll.mui两个文件提取出来,并且覆盖了本机的文件,发现已经可以远程多用户登陆了。

破解文件在上面下载文件中的第二个压缩包内。

termsrv.dll文件在C:\Windows\System32内

termsrv.dll.mui文件在C:\Windows\System32\zh-CN内

覆盖完成后,运行RDPConf.exe。效果如下:

  • 远程登录

在另外一台电脑上,打开远程桌面连接(找不到可以在小娜中搜索),填写服务器的Ip地址,账号,点击连接后输入密码,效果如下。打开一些应用后,断开连接,过一段时间再次登录时发现界面保持不变。