Linux 当使用锁文件来避免一个脚本同时运行的两个实例时,如何避免竞争条件?

避免同一脚本的两个实例同时运行的典型方法如下所示: [ -f ".lock" ] && exit 1 touch .lock # do something rm .lock 有没有更好的方法来锁定shell脚本中的文件,从而避免竞争条件?必须使用目录吗?是的,示例脚本中确实存在竞争条件。您可以使用bash的noclobber选项,以便在比赛中,当-f测试和触摸之间潜入不同的脚本时获得失败 以下是一个示例代码段(受启发),说明了该机制: if (set -o noclobber;

Linux ld找不到现有的库

我试图在这个Debian lenny系统上用g++链接一个应用程序。ld抱怨找不到指定的库。这里的具体示例是ImageMagick,但我在其他一些库中也遇到了类似的问题 我通过以下方式呼叫链接器: g++ -w (..lots of .o files/include directories/etc..) \ -L/usr/lib -lmagic 劳工处投诉: /usr/bin/ld: cannot find -lmagic 但是,libmagic存在: $ locate libmagic.s

Linux Subversion web界面

我最近在Linux服务器()上安装了Subversion,一切都很好 我想知道是否有任何web界面可用于管理存储库,即创建/删除存储库、管理用户和权限、查看修订历史记录等 我的想法是,我可以通过web界面而不是使用SSH来做任何事情 顺便说一句,我在这个服务器上有/virtuozzo(在另一个测试服务器上有Webmin),所以如果有什么东西可以直接集成到这些服务器上,那就更好了 可能符合您的目的,但我不确定它对实际的日常SVN命令有多大的控制权。不过,它确实有一个非常好的界面来查看SVN修订版。

如何使用LinuxFlock命令防止另一个根进程删除文件?

我想阻止我的一个根进程删除某个文件。所以我遇到了flock命令,它似乎适合我的需要,但我没有得到它的语法 如果我仅指示共享锁,则它不起作用: flock -s "./file.xml" 如果我添加超时参数,它仍然不起作用: flock -s -w5 "./file.xml" 似乎是这样,它适合于flock[-sxun][w#fd方式。 (这是什么fd#参数?) 所以,我试着: flock [-sxon][-w #] file [-c] command 使用flock-s-w5./file.

Linux 如何通过管道将只能写入文件(而不能写入标准输出)的程序输出?

我试图写一些类似的东西,所以我需要能够将每个相关的音频格式解码为wav(PCM),然后将wav编码为每个相关的音频格式。我想通过将解码器的输出直接传输到编码器的输入,并行地完成这项工作。大多数解码器都有解码到标准输出的选项,但并非所有解码器都有。有些人坚持要输出到文件 所以我的问题是,我如何欺骗一个只会输出到指定文件的程序,让它改用标准输出呢?还有一个补充问题:我怎样才能欺骗一个需要输入文件的程序从stdin读取数据 这是否不可能,因为程序可能希望在输出中来回搜索 顺便说一句,Perl Audi

Linux 使用libpcap加入/离开多播组

我需要接收多播流,但在CentOS 5.5上按源MAC地址过滤传入的数据包。 我计划使用libpcap库。 是否可以使用libpcap加入/退出多播组? 如果是,怎么做 谢谢当然,只需构造并发送适当的IGMP数据包。1.创建虚拟套接字:sd=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP) 2.绑定它:rc=Bind(sd,(sockaddr*)&addr,sizeof(sockaddr_in)) 3.加入多播组: ip_mreq mreq; mreq.imr_int

Linux 如何替换两点之间的所有行,并用sed中的一些文本替换它

假设我有以下文本: BEGIN hello world how are you END 如何在linux中使用sed命令将其转换为以下文本: BEGIN fine, thanks END /BEGIN/,/END/选择以BEGIN开头,以END结尾的文本范围。然后使用c\命令将所选范围替换为BEGIN\n行,谢谢\nEND您好,谢谢您的回答,但我的问题出错了。。。如果源是多行,我的意思是像line1:BEGIN、line2:hello、line3:world、line4:how、line4:

Linux 在Vim中有没有复制括号内文本的好方法?

我想复制以下代码中的参数foo(bar).baz: function(foo(bar).baz) 第一次尝试:将光标放在其中一个括号上,然后y%。这给了我一些额外的参数: (foo(bar).baz) 第二次尝试:将光标放在左括号上。设置标记ma,用 %然后y`a复制回标记。这给了我: (foo(bar).baz 在终点设一个标记,然后往另一个方向走,我也会得到完全相同的结果。设定 在f上做标记,然后键入mah%y`a确实会给我提供我想要的foo(bar).baz,但可能还有更简洁的内容。

是什么导致Linux 64位上的backtrace()崩溃(SIGSEGV)

我正在linux上开发一个应用程序,希望以特定的频率对所有正在运行的线程进行回溯。因此,我的用户定义的信号处理程序SIGUSR1(用于所有线程)调用backtrace() 我的信号处理程序中出现了崩溃(SIGSEGV),它源自backtrace()调用。我已将正确的参数传递给大多数站点上指定的函数。 在这种情况下,什么会使backtrace()崩溃 要添加更多详细信息,请执行以下操作: 下面的第14帧让我得出结论,崩溃在回溯中。onMySignal是信号处理程序SIGUSR1,它调用backt

Linux 无效命令‘;订单’;,服务器配置中未包含的模块可能拼写错误或定义失败

当我尝试启动或重新启动apache服务器时,会收到以下消息: /etc/apache2/apache2.conf的第162行出现语法错误: 命令“Order”无效,可能拼写错误或由服务器配置中未包含的模块定义 操作“configtest”失败。 Apache错误日志可能包含更多信息。 失败了 我试着在谷歌上找到这个错误并修复它: 我得到一个错误: 模块authz_主机不存在 有人帮我修吗 谢谢! 您需要启用authz_主机模块 我不确定您使用的是什么Linux发行版,但这里有一些示例 Ubun

创建虚拟接口Linux

我的目标是仅使用一个物理接口来模拟多个IP接口,为此我尝试使用此别名 Ifconfing ethX:1 <IP> Ifconfing ethX:1 但当我试图通过该接口发送数据包时,我看到的IP源与原始的、真实的以太网接口相同。然后我尝试使用TAP接口,但我无法将它们与我的物理接口“链接”,我注意到它们可以相互通信,但无法ping(ping-I tap0)原始接口。 如果我用它们创建一个桥,它仍然有效 我希望避免根据需要安装许多虚拟机,但我想要的正是它的功能:构建一个新的虚拟接口

Linux Postfix邮件发送问题?

我在后缀中遇到了一些问题。我没有收到任何来自postfix的邮件。日志文件也不显示任何错误日志。日志文件正常。经过进一步分析,我发现邮件将发送到传入文件夹,但不在postfix的活动文件夹中。我在邮件日志文件中只找到一件事: postfix/cleanup[30369]:警告:数据库/etc/postfix/virtual.db早于源文件/etc/postfix/virtual 邮件日志文件的其余部分正常 我能够找到问题所在。任何人都可以在这方面提供帮助。运行: postmap /etc/pos

如何在linux系统上获取可在.Xresources配置中使用的有效字体名?

我感兴趣的是如何获得在.Xresources文件中使用的有效字体名。我已经安装了ttf ms fonts,想将我的终端切换到courier字体。但这样设置是行不通的 urxvt*font: cour urxvt*boldFont: courbd 如何指定有效名称?我想您可以使用该程序 xfontsel 获取字体的完整名称。字体名称如下所示: -*-courier-bold-*-*-*-*-*-*-*-*-*-*-* 致以最良好的祝愿, Matthias首先,您必须决定是使用核心协议

Linux 解码base64:输入无效

尝试在GNU/Linux上解码base64文件时,我得到“base64:无效输入” 我试着指挥,但没用 我的base64版本: $ base64 --version base64 (GNU coreutils) 5.97 Copyright (C) 2006 Free Software Foundation, Inc. This is free software. You may redistribute copies of it under the terms of the GNU Gene

Linux 创建按状态排序的流程列表

我需要创建一个shell脚本来按状态类型列出进程。 输出必须类似于: 进程运行: [过程] 进程睡眠: [过程] 等 我这样做了,但没有执行ps aux | awk“8美元”流程: 因为脚本输出所有进程,而不是按进程过滤 有什么帮助吗?一个简单的解决方案是使用ps和sort: ps u | sort -rk 8 -r反转排序(使列表标题保持在上方),并且-k 8选择第8个字段(STAT) 然后,您可以使用任何形式的head到awk选择处于特定状态的进程,并打印出您喜欢的任何内容。您还可以在非交

Linux pmap输出中的零(已删除)是什么?

从Linux中的pmap-x pid命令的输出来看,Mapping列下的zero(deleted)意味着什么?它与anon有什么不同?我在手册页上找不到任何东西 Address Kbytes RSS Dirty Mode Mapping adf00000 132 36 36 rw--- [ anon ] adf21000 892 0 0 ----- [ anon ] ae0ff000 4

Linux 在没有root权限的情况下更新ldconfig缓存

我正在本地安装几个二进制文件和库,因为我没有根访问权限 一些程序需要在运行时动态链接到非标准位置的共享库 执行时,程序返回: $ uname -a Linux xhost10.bcgsc.ca 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux $ /sbin/ldconfig --version ldconfig (GNU libc) 2.5 我已将路径添加到库$LD\u LIBR

Linux SHA-256测试向量

我正在尝试复制这里找到的值 SHA-256应将“abc”散列到 但是在使用sha256 sum的linux下,我得到了这个 edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb adam@adam-desktop:~/code/android-casual/trunk/CASUALcore$ echo "abc">./test.tmp adam@adam-desktop:~/code/android-casual

Linux sed将带空格的行插入到特定行

我在开头有一行空格,例如“Hello world”。 我想将此行插入文件中的特定行。 例如 在下一个文件中插入“hello world” hello world 结果: hello hello world world 我正在使用此sed脚本: sed -i "${line} i ${text}" $file 问题是我的新线没有空格: hello hello world world 您可以转义空格字符,例如添加两个空格: sed -i "${line} i \ \ ${text}"

Linux内核中wait_事件和wake_事件之间的竞争条件

我是内核新手。我在阅读源代码时遇到了这个问题 在wait_event()的实现中,内核执行如下操作: ... prepare_to_wait(); /* enqueue current thread to the wait queue */ ... schedule(); /* invoke deactivate_task() inside, which will dequeue current thread from the runqueue */ ... 在“wake_up()”的实现中

在puppet中管理linux的用户密码

我需要使用puppet创建一个带有密码的测试用户 我读到puppet不能以通用的跨平台方式管理用户密码,这是一个遗憾。 我为Red Hat Enterprise Linux Server 6.3版做这项工作 我的工作如下: user { 'test_user': ensure => present, password => sha1('hello'), } puppet更新用户的密码, 但是当我尝试登录时,Linux说登录/pwd不正确 如果我在Linux中使用sud

Linux 给定列表外壳中最新编辑的文件

我有一些问题-我有一个带有目录的文件列表(在.txt文件中),即:/student/2012/my/Video/hello.php。我需要做的事情是获取该列表的最后一个编辑文件,但我不知道如何做 谢谢你可以说: ls -1tr $(cat filename.txt) | tail -1 为了从中包含的filename.txt中获取最近编辑的文件,我在bash中演示了一个快速排序算法。以下是片段: quicksort_files_by_mod_date() { if ((!$#)); t

在Linux中,`cd/`中的双斜杠//是什么意思?

我输入了一个命令cd/,而不是错误地输入了cd/,并且shell(Bash)显示了一个提示,好像我在/目录中一样:- <username>@<hostname>://$ <username>@<hostname>://$ pwd // @://$ @://$pwd // 列出目录的内容表明它与/相同 那么cd/到底做了什么,与cd/有什么区别呢?实际上它没有任何意义,被忽略了 从: E10)为什么“cd/”将$PWD保留为“/” POSIX.2

Linux 需要对一个或另一个参数使用getopts

我知道这是写错了。我想这样写,这样可以显示我需要它做什么 带有g、p、d或r选项的脚本。关键是这一点 我试着用谷歌搜索它,阅读手册,找到许多简单的例子。 问题是是否有办法这样做,或者getopts不支持这种行为。解析-g、-p、-r或-d中的第一个选项后,以下选项将停止处理。如果需要,可以在if语句中采取更有力的操作(发出警告、退出脚本等) 就其本身而言,getopts不会对所使用的选项强制执行任何形式的相互排他性。我会这样做: while getopts gpr:d: name do i

Linux 是为32位还是64位机器编译共享对象?

Linux中是否有命令可以在/usr/lib中编译的共享对象(.so)上运行,并知道它是为64位还是32位系统编译的?(我的意思是了解ELF类,比如ELFCLASS32)您可以使用该命令。例如: [myuser@mycomputer]$ file /usr/lib/libcurl.so.4.1.1 /usr/lib/libcurl.so.4.1.1: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically

Linux Git-致命:无法获取当前工作目录?

当我从回购中克隆git时 致命:无法获取当前工作目录:没有此类文件或目录 我该怎么办?我检查了服务器,发现.git文件存在。服务器正在运行Gitlab实例。我已经用密钥正确地配置了ssh,并且我已经提交和克隆了一段时间,没有任何错误,这是突然发生的 FWIW,我正在用bash脚本进行git克隆 更新 这是我的bash脚本 for repo in $repos do git clone $repo /tmp/tmpdir/ # do stuff with /tmp/tmpdir/

Linux 如何卸载从源代码安装的gcc?

如何卸载从源代码安装的gcc版本。我使用的是GCC4.9,我使用的是ubuntu 12.04 或者有没有办法通过ubuntu存储库升级到最新的gcc版本?在12.04存储库中,gcc的最高可用版本是4.6。您可以使用软件包管理器安装新版本,但必须添加PPA。链接应该会有所帮助,尽管它适用于稍旧的GCC版本(但可以用于最新版本) 正如一位评论员所指出的,如果您自己构建的GCC版本是使用--prefix参数编译的,那么整个安装应该在/usr/local下的目录中,或者您安装它的任何地方,并且可以删除

Linux Bourne shell构建字符串并将其用作参数

我正在使用bourne shell并希望执行以下操作: COUNTER=0 CIRCLEPART1="|" CIRCLEPART2="/" CIRCLEPART3="--" CIRCLEPART4='\' while [ $COUNTER -lt 3 ]; do ACT_CIRCLEPART=CIRCLEPART$COUNTER echo "Hello `eval \${ACT_CIRCLEPART}`" COUNTER=`expr $COUNTER + 1` done

Linux 零信号是什么?

我在查看nagios插件时发现了以下代码: killall -0 $1 我尝试了这个方法,对于一个正在运行的进程,它返回了0,但没有终止进程 请解释此0值的含义以及它没有终止进程的原因。信号-0只是检查指定的进程是否正在运行。它不会杀死它。如果要终止进程,请使用作为终止信号的-9 虽然此处未列出-0,但此链接解释了其他一些信号: 来自《人类2号杀手》: 如果sig为0,则不会发送任何信号,但仍会进行错误检查 表演;这可用于检查是否存在进程ID 或进程组ID kill(2)成功返回0,否则返回-

Linux 无法在fedora22上启动nginx服务器

我正在使用fedora22,我已经在上面安装了nginx服务器。它运行得很好,工作得很好,但不管怎样,它都停止了。 现在我正试图启动它,但它没有启动 我试着用逗号 # service nginx restart Redirecting to /bin/systemctl restart nginx.service Job for nginx.service failed. See "systemctl status nginx.service" and "journalctl -xe" for

linux命令中的转义空间

我想用其他东西替换linux命令中的空间。 例如: echo "test" ---> echo\040"test" cmd="echo,foo" IFS=, eval $cmd 我知道\040不起作用,但我正在寻找合适的替代品。由于chepner的洞察力,我现在确信只要您需要传递一个参数就不可能了(因为您必须将命令与参数分隔一个空格)。但是,如果您不这样做(即,如果参数始终相同),您可以创建一个脚本或函数,该脚本或函数将执行包含空格的代码,这些代码可以在不使用空格的情

Linux 如何使用nmcli连接到隐藏的wifi网络

我必须编写一个linux桌面软件,连接到隐藏的wifi网络。 如果网络未隐藏,则我的代码可以通过调用nmcli进行连接,但如果网络隐藏,则无法添加连接。但是,我可以使用网络管理器的GUI创建一个新网络,因此我认为这并非不可能。你有什么想法吗?好的,我有解决办法。我们知道ssid和密码 nmcli c add type wifi con-name <connect name> ifname wlan0 ssid <ssid> nmcli con modify <con

Linux 从共享库调用ALSA时出现意外结果

ALSA库包含两个API版本,通过定义用于访问旧版本的ALSA_PCM_OLD_HW_PARAMS_API来启用。它采用了一些高级技巧(使用.symverassembly指令)使单个C库能够包含不同的函数,具有相同的名称但参数不同(对于旧API和新API)。这一切都很好,但在某些情况下会造成麻烦 例如,让我们创建两个源文件。第一个是main.cpp: #include <alsa/asoundlib.h> void lib_func(); void local_func() {

Linux 在Docker Alpine容器中启动外壳

要启动Ubuntu映像的交互式shell,我们可以运行: ole@T:~$ docker run -it --rm ubuntu root@1a6721e1fb64:/# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var 但当为运行时,会出现以下结果: ole@T:~$ docker run -it --rm alpine Error

Linux 如何将cuDNN更新到新版本?

cuDNN安装手册上说 所有平台 将cuDNN归档文件解压缩到您选择的目录中,以下称为。 然后按照以下特定于平台的说明进行操作 LINUX 光盘 导出LD\u LIBRARY\u PATH=`pwd`:$LD\u LIBRARY\u PATH 通过在编译中添加-I来添加到构建和链接过程中 行和-L-lcudnn到您的链接行 它似乎只是简单地将pwd添加到LD\u LIBRARY\u路径,因此我想只需替换pwd中的文件即可完成更新 但这似乎并不像我做了这件事后收到Theano Say的投诉那么简单

Linux 进程虚拟地址空间中其他线程的堆栈在哪里?

下图显示了进程的各个部分在进程的虚拟地址空间中的布局(在Linux中): 您可以看到只有一个堆栈部分(因为我假设这个进程只有一个线程) 但是,如果这个进程有另一个线程,那么第二个线程的堆栈将位于哪里呢?它是否位于第一个堆栈的正下方?据我所知,用于处理堆栈的空间被划分为更小的部分,每个部分由给定的线程使用。中间还有一些保护页,以防止意外粉碎。是的,堆栈比其他堆栈低一个…新线程的堆栈空间是由具有的父线程创建的。因此,它们位于“内存映射段”中,如图所示。它可以在大型malloc()可以去的任何地方结

Linux 在Ubuntu上不使用终端命令打开Jupyter笔记本?

我经常使用Jupyter笔记本,所以我希望尽可能地使打开它变得简短和简单。有没有办法通过在终端中键入“Jupiter notebook”来避免打开它?有短钥匙吗?(我在Ubuntu 16.04上使用它)别名如何?编辑bash配置文件并为jupyter notebook设置别名,例如alias jpy=“jupyter notebook”。我认为,您甚至可以指定笔记本电脑直接打开特定文件。如果您确实需要,可以将其放入~/.bashrc文件中 jupyter notebook 每次打开终端时,该命

Linux GNU parallel:对文件夹中的所有文件并行执行一个命令

我正在尝试用不同的参数来并行粒子模拟,以节省一些时间。因此,我想使用GNUparallel为不同的参数运行bash脚本。脚本读取一个文件,然后执行模拟,例如: $bash script您可以在~/parameter\u文件的每个文件目录中使用类似的parallel: find ~/parameter_files -maxdepth 1 -type f -print0 | parallel -0 bash ../script find命令查找~/parameter\u files目录中的所有文

使用python捕获Linux中运行程序的屏幕截图

是否有任何可能的方法可以使用python的PID捕获运行桌面应用程序的屏幕截图。 应用程序是从python程序中启动的 我熟悉windows中的win32gui,但不知道它在Linux中是否是替代品。Win32gui可以通过名称找到运行程序的窗口。如果PID解决方案不可行,在Linux中是否有任何方法可以实现同样的效果。最后,我得到了它。实际上,有一个名为Xlib(python的X11API)的库,但它的文档非常差。因此,在这上面浪费时间是不值得的。如果您使用的是Linux,那么可以使用简单的b

Linux 在Ubuntu的conda/anaconda中将默认环境从(base)更改为(env)

我的问题不是将.bashrc文件更改为appendsource activate env,因为它执行相同的任务。每次使用该环境时,我都可以额外编写一行代码,但问题是当我停用时,它会再次将其切换回(base)。我如何停止切换,使(env)成为我的默认环境,而不是(base),这样当我停用时,它直接进入我的常规工作 我现在使用的是Ubuntu 18目前似乎没有conda的“默认环境”设置,但我认为通过嵌套激活conda环境或“堆叠”环境,您可以获得想要的行为 您可以通过更改conda配置显式或隐式地

Linux 如何使用gsutil在谷歌云中的文件上激活dos2unix?

我的GCP存储桶中有文件,我正试图在这些文件上激活dos2unix。 我找不到(搜索1小时后)任何允许我这样做的命令。 我尝试: gsutil dos2unix gs://my google bucket/short_1000rows.csv 但它不起作用。 提前感谢您的帮助GCS对象是不可变的(它们的字节,而不是元数据);如果不完全替换对象,则无法更改对象的任何部分。除了重写或撰写等操作外,如果要更改对象的内容,还必须重新上载对象。因此,您基本上需要下载所有对象,在它们上运行dos2unix,

Linux 如何回显包含双引号的文本

我需要回复一些文字。像文本“嘿” 如果我尝试使用codeecho“text”hey”“将输出设置为text hey 那么,如何显示双引号呢。有人能帮我吗。你可以用 echo 'text "hey"' 或 简言之: 双引号(“quote”)保护两个双引号之间的所有内容,除了$、'、”和\。如果只需要变量和命令替换,请使用双引号 变量-是 通配符-否 命令替换-是 单引号(‘quote’)保护两个单引号之间的所有内容。它用于关闭所有字符的特殊含义 变量-否 通配符-否

Linux 在expect脚本中通过ssh/telnet(甚至shell)传输二进制数据时出错

似乎没有人在维护,也没有人在维护 假设我想用user/passwordauth自动在expect脚本中从远程获取数据,如下所示: ps:我使用sh来表示ssh/telnet连接 $expect-v 期待vesion 5.45.4 $cat expect.sh #!/usr/bin/expect-f spawn-noecho sh-c./download.sh 互动 $cat下载.sh #!/垃圾箱/垃圾箱 sh-c'cat/bin/ls'#cat一个二进制文件 $./expect.sh>a.ou

Linux &引用;libz.so.1:无法打开共享对象文件:没有这样的文件或目录";

我得到的错误是: apt-get: error while loading shared librarie: libz.so.1:cannot open shared object file: No such file or directory 尝试时: sudo apt-get zlib1g 我使用的是Ubuntu 16.04操作系统,无法登录到图形界面,启动后,我只能在屏幕左上角看到闪烁的下划线,所以我按下“alt+f4”打开终端会话 在我的命令历史记录中,我找到了以下命令: rm -r

指定Docker在Linux VM上存储/放置文件的位置

对Docker来说比较新,所以我试图理解如何完成我的任务 在本地,我: 树立形象 将图像推送到某个URL SSH到Linux虚拟机 docker从URL中提取图像 docker run image\u name 运行此图像时,将下载2个相当大的csv.gz。解压后,两个CSV的容量分别约为15GB 我在Linux虚拟机上设置了/app,使其具有200GB的可用空间。所以,简而言之,我需要让Docker镜像下载那里的2个CSV。然而,无论我在我的Dockerfile中尝试了什么,我都明白了 当到达

MMC SPI问题无法在Linux中设置MMC/SD卡

我目前正在为一个定制的SPI IP编写一个SPI驱动程序,用于接口MMC/SD卡。SPI驱动程序正在被探测,MMC驱动程序也正在被探测。最后的MMC驱动程序打印此语句 [61.219787]mmc_spi spi0.0:SD/mmc主机mmc0,无DMA,无WP,无断电,cd轮询 当有29个字节的0xFF时,我试图打印发送到缓冲区的值。发送这29个字节的0xFF之后,将从中发送18和10,并从传输函数中读取0x00 传输函数中的写入和读取次数是否相同 MMC SPI驱动程序在这个序列中尝试做什么

上一页 1 2 ...  2965   2966   2967   2968   2969   2970   ... 共 2970 页