• 关于

    vim的命令模式

    的搜索结果

回答

一.vim的简单介绍 vim是一个由vi增强版的编辑工具,是一个开源免费的软件,它功能丰富,使用快捷,应用广泛,。vim也是大多数linux系统上的默认编辑器,用于对文本文件进行建立,显示,编辑,删除,复制等操作,需要用命令进行控制。 二.vim帮助信息 在命令行输入vim --help 或 vimtutor 可以查看vim的用法和信息。 三.vim工作模式 vim工作模式可分为三种,即——命令模式,编辑模式,末行模式 命令模式:可以用vim加上任意一个已经存在或是想创建的文件名,如果系统还不存在该文件,就意味着创建文件,如果系统存在该文件,就意味着编辑该文件。此时就可以进入vim的默认模式—命令模式。此时vim等待输入正确的命令,键入的每一个字符都会当作命令来处理。 [root@localhost Desktop]#vim file 插入模式:在进入命令模式之后,按下a, i o等键可进入插入模式。进入插入模式后可以对文件进行编辑,左下角出现INSERT a 在光标所在字符后插入 A在光标所在行尾插入 i 在光标所在字符前插入 I 在光标所在行行首插入 o 在光标下插入新行 O在光标上插入新行 末行模式:在进入末行模式前先按下【Esc】确认处于命令模式后,按下冒号【:】,即可进入末行模式

景凌凯 2020-03-25 22:17:31 0 浏览量 回答数 0

回答

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。 打开文件并跳到第 10 行:vim +10 filename.txt 。 打开文件跳到第一个匹配的行:vim +/search-term filename.txt 。 以只读模式打开文件:vim -R /etc/passwd 。 基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 简单的说,我们可以将这三个模式想成底下的图标来表示:

黄二刀 2020-03-12 18:06:13 0 浏览量 回答数 0

回答

tmux 或者 screen 可以给你多个 shell;Vim 插入模式 Ctrl-x Ctrl-f 可以进行(命名不太奇葩的)文件名补全,详见手册。如果可以装插件就更好了;普通模式(vi 中叫命令模式)按 Ctrl-Z 可挂起 vi / Vim。Vim 命令 :shell 可以给你一个 shell 用用。

a123456678 2019-12-02 02:53:15 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

回答

vim -y进入easy mode, 相当于直接执行evim, 是为初学者准备的模式, 最大的特点是保持在insert模式. 可通过Ctrl + L暂时进入普通模式, 再输入:q来退出. 换句话说, -y被作为命令行选项来解释. 因为vim的启动可以不指定文件名. 要编辑-y这个文件, 执行vim -- -y来打开. 事实上, 无论是创建还是编辑还是删除-y文件, 都需要加--, 在命令和-y之间. touch -- -y #创建rm -- -y #删除echo "" > -y #创建和全半角没有关系, 事实上, 所有全角字符, 都不会被当作选项来解析. 至于, 为什么优先将-y作为选项, 而不是文件? 这是命令行参数解析的问题. 基本上所有的参数解析库, 先解析选项, 再解析剩余的参数. 更何况, -开头的都被默认作为选项. 也就是说, 无论程序是否支持-y选项, 支持就像vim这样, 不支持则提示非法选项, -y都不会作为文件名提供给程序, 至少Linux系统下是这样的, 因为Windows默认的选项前缀是/, 但也支持-.

a123456678 2019-12-02 02:59:54 0 浏览量 回答数 0

回答

ubuntu 下安装 vim 出现该问题: 1.输入vim时,显示:kiya@kiya-PC:/etc/apt$ vim程序 'vim' 已包含在下列软件包中: * vim * vim-gnome * vim-tiny * vim-athena * vim-gtk * vim-nox请尝试:sudo apt-get install <选定的软件包>kiya@kiya-PC:/etc/apt$ sudo apt-get install vim正在读取软件包列表... 完成正在分析软件包的依赖关系树 正在读取状态信息... 完成 有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件包尚未被创建或是它们已被从新到(Incoming)目录移出。下列信息可能会对解决问题有所帮助:下列软件包有未满足的依赖关系: vim : 依赖: vim-common (= 2:7.3.035+hg~8fdc12103333-1ubuntu7) 但是 2:7.3.547-6ubuntu5 正要被安装E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。此时输入以下命令:kiya@kiya-PC:/etc/apt$ sudo apt-get remove vim-common正在读取软件包列表... 完成正在分析软件包的依赖关系树 正在读取状态信息... 完成 下列软件包将被【卸载】: ubuntu-minimal vim-common vim-tiny升级了 0 个软件包,新安装了 0 个软件包,要卸载 3 个软件包,有 0 个软件包未被升级。解压缩后将会空出 1,161 kB 的空间。您希望继续执行吗?[Y/n]y(正在读取数据库 ... 系统当前共安装有 158905 个文件和目录。)正在卸载 ubuntu-minimal ...正在卸载 vim-tiny ...update-alternatives: using /usr/bin/see to provide /usr/bin/view (view) in 自动模式正在卸载 vim-common ...正在处理用于 mime-support 的触发器...正在处理用于 man-db 的触发器...现在即可正常安装kiya@kiya-PC:/etc/apt$ sudo apt-get install vim正在读取软件包列表... 完成正在分析软件包的依赖关系树 正在读取状态信息... 完成 将会安装下列额外的软件包: vim-common vim-runtime建议安装的软件包: ctags vim-doc vim-scripts下列【新】软件包将被安装: vim vim-common vim-runtime升级了 0 个软件包,新安装了 3 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。需要下载 6,913 kB 的软件包。解压缩后会消耗掉 28.6 MB 的额外空间。您希望继续执行吗?[Y/n]y获取:`1 http://old-releases.ubuntu.com/ubuntu/ natty/main vim-common i386 2:7.3.035+hg~8fdc12103333-1ubuntu7 [85.9 kB]获取:2 http://old-releases.ubuntu.com/ubuntu/ natty/main vim-runtime all 2:7.3.035+hg~8fdc12103333-1ubuntu7 [5,974 kB]获取:3 http://old-releases.ubuntu.com/ubuntu/ natty/main vim i386 2:7.3.035+hg~8fdc12103333-1ubuntu7 [853 kB]下载 6,913 kB,耗时 2分 24秒 (47.9 kB/s) ` Selecting previously unselected package vim-common.(正在读取数据库 ... 系统当前共安装有 158850 个文件和目录。)正在解压缩 vim-common (从 .../vim-common_2%3a7.3.035+hg~8fdc12103333-1ubuntu7_i386.deb) ...Selecting previously unselected package vim-runtime.正在解压缩 vim-runtime (从 .../vim-runtime_2%3a7.3.035+hg~8fdc12103333-1ubuntu7_all.deb) ...正在添加 vim-runtime 导致 /usr/share/vim/vim73/doc/help.txt 本地修改至 /usr/share/vim/vim73/doc/help.txt.vim-tiny正在添加 vim-runtime 导致 /usr/share/vim/vim73/doc/tags 本地修改至 /usr/share/vim/vim73/doc/tags.vim-tinySelecting previously unselected package vim.正在解压缩 vim (从 .../vim_2%3a7.3.035+hg~8fdc12103333-1ubuntu7_i386.deb) ...正在处理用于 man-db 的触发器...正在处理用于 mime-support 的触发器...正在设置 vim-common (2:7.3.035+hg~8fdc12103333-1ubuntu7) ...正在设置 vim-runtime (2:7.3.035+hg~8fdc12103333-1ubuntu7) ...Processing /usr/share/vim/addons/doc正在设置 vim (2:7.3.035+hg~8fdc12103333-1ubuntu7) ...update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vim (vim) in 自动模式 update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vimdiff (vimdiff) in 自动模式 update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rvim (rvim) in 自动模式 update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rview (rview) in 自动模式 update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vi (vi) in 自动模式 update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/view (view) in 自动模式 update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/ex (ex) in 自动模式 安装成功~

云栖技术 2019-12-02 02:35:51 0 浏览量 回答数 0

回答

Vim是从vi发展而来的文本编辑器,可以用颜色或底线等方式来显示一些特殊的信息。Vim是Linux中必不可少的工具,搭建网站修改配置文件时经常用到。本教程介绍Vim的模式和常用操作。 背景信息 Vim的各个模式介绍如下表所示: 模式 作用 模式转换 普通模式 (Normal Mode) 在该模式下,您可以复制、粘贴、删除字符或行。 运行vim <文件名>打开文件时,即进入普通模式。 在其他四个模式下,按Esc键即进入普通模式。 插入模式 (Insert Mode) 在该模式下,您可以插入字符。 在普通模式下,按i,I,a,A,o,O中任一字符即进入插入模式。 说明 进入插入模式后,编辑器左下角会显示-- INSERT --。 替换模式 (Replace Mode) 在该模式下,您可以替换字符。 在普通模式下,按R即进入替换模式。 说明 进入替换模式后,编辑器左下角会显示-- REPLACE --。 可视模式 (Visual Mode) 在该模式下,您可以选择文本。命令(如,复制、替换、删除等)仅作用于选中的文档。 在普通模式下,按v即进入可视模式。 说明 进入可视模式后,编辑器左下角会显示-- VISUAL --。 命令模式 (Command Mode) 在该模式下,您可以查找字符串、替换字符串、显示行号、保存修改、退出编辑器等。 在普通模式下,按:即进入命令模式。 Vim的常用操作包括以下三种: 插入 替换 删除 插入 基本命令: i:在当前字符的左边插入。 I:在当前行的行首插入 。 a:在当前字符的右边插入。 A:在当前行的行尾插入。 o:在当前行下面插入一个新行。 O:在当前行上面插入一个新行。 本示例中使用的example.conf文件,如下所示: To be able to use the functionality of a module which was built as a DSO you have to place corresponding `LoadModule' lines at this location so the directives contained in it are actually available before they are used. Statically compiled modules (those listed by `httpd -l') do not need to be loaded here. Example: LoadModule foo_module modules/mod_foo.so Include conf.modules.d/*.conf 示例一:在配置文件example.conf的第一行,插入Location。步骤如下: 运行vim example.conf命令打开文件,进入普通模式。 按i进入插入模式。 输入Location。 按回车键换行。 按Esc键退出插入模式。 按:wq保存文件并退出。 插入完成后,example.conf文件如下所示: Location To be able to use the functionality of a module which was built as a DSO you have to place corresponding `LoadModule' lines at this location so the directives contained in it are actually available before they are used. Statically compiled modules (those listed by `httpd -l') do not need to be loaded here. Example: LoadModule foo_module modules/mod_foo.so Include conf.modules.d/*.conf 示例二:在配置文件example.conf第十行的行首,插入#。步骤如下: 运行vim example.conf命令打开文件,进入普通模式。 按:10将光标定位到第10行。 按I进入插入模式。 输入#。 按Esc键退出插入模式。 按:wq保存文件并退出。 插入操作完成后,example.conf文件如下所示: To be able to use the functionality of a module which was built as a DSO you have to place corresponding `LoadModule' lines at this location so the directives contained in it are actually available before they are used. Statically compiled modules (those listed by `httpd -l') do not need to be loaded here. Example: LoadModule foo_module modules/mod_foo.so #Include conf.modules.d/.conf 示例三:在配置文件example.conf中,在Include conf.modules.d/.conf行的下一行插入LoadModule rewrite_module modules/mod_rewrite.so。步骤如下: 运行vim example.conf命令打开文件,进入普通模式。 运行/Include conf.modules.d/*.conf找到目标行。 按o进入插入模式。 输入LoadModule rewrite_module modules/mod_rewrite.so。 按Esc键退出插入模式。 按:wq保存文件并退出。 插入完成后,example.conf文件如下所示: To be able to use the functionality of a module which was built as a DSO you have to place corresponding `LoadModule' lines at this location so the directives contained in it are actually available before they are used. Statically compiled modules (those listed by `httpd -l') do not need to be loaded here. Example: LoadModule foo_module modules/mod_foo.so Include conf.modules.d/*.conf LoadModule rewrite_module modules/mod_rewrite.so 替换 基本命令: R:替换光标高亮的字符,直至按下Esc键退出替换模式。 本示例使用的example.conf文件,如下所示: AllowOverride controls what directives may be placed in .htaccess files. It can be "All", "None", or any combination of the keywords: Options FileInfo AuthConfig Limit AllowOverride None 示例:将配置文件example.conf中的AllowOverride None更改为AllowOverride All。 运行vim example.conf命令打开文件,进入普通模式。 运行/AllowOverride None找到目标。 移动光标至None的首字母。 按R进入替换模式。 输入All和一个空格。 说明 None中共包含4个字符,而All只包含3个字符,因此输入All之后,需再输入一个空格。 按Esc键退出替换模式。 按:wq保存文件并退出。 更改后的example.conf文件,如下所示: AllowOverride controls what directives may be placed in .htaccess files. It can be "All", "None", or any combination of the keywords: Options FileInfo AuthConfig Limit AllowOverride All 删除 基本命令: x:删除光标高亮的那一个字符。 nx(n为数字): 删除光标高亮的字符及其后面的n-1个字符。 dd:删除光标所在的那一行。 ndd(n为数字):删除光标所在行及其下面的n-1行。 本示例中使用的example.conf文件如下所示: Listen: Allows you to bind Apache to specific IP addresses and/or ports, instead of the default. See also the directive. Change this to Listen on specific IP addresses as shown below to prevent Apache from glomming onto all bound IP addresses. #Listen 12.34.56.78:80 Listen 80 示例一:在配置文件example.conf中,将#Listen 12.34.56.78:80行首的#删除。步骤如下: 运行vim example.conf命令打开文件,进入普通模式。 运行/#Listen 12.34.56.78:80找到目标,光标此时定位在#字符上。 按x删除#。 按:wq保存文件并退出。 删除完成后,example.conf文件如下所示: Listen: Allows you to bind Apache to specific IP addresses and/or ports, instead of the default. See also the directive. Change this to Listen on specific IP addresses as shown below to prevent Apache from glomming onto all bound IP addresses. Listen 12.34.56.78:80 Listen 80 示例二:在配置文件example.conf中,将#Listen 12.34.56.78:80行和下一行的内容删掉。步骤如下: 运行vim example.conf命令打开文件,进入普通模式。 运行/#Listen 12.34.56.78:80找到目标。 按2dd删除以下内容。 #Listen 12.34.56.78:80 Listen 80 按:wq保存文件并退出。 删除完成后,example.conf文件如下所示: Listen: Allows you to bind Apache to specific IP addresses and/or ports, instead of the default. See also the directive. Change this to Listen on specific IP addresses as shown below to prevent Apache from glomming onto all bound IP addresses.

1934890530796658 2020-03-26 09:53:25 0 浏览量 回答数 0

回答

在Linux下一般使用vi编辑器来编辑文件。 vi既可以查看文件也可以编辑文件。 三种模式:命令行、插入、底行模式。 切换到命令行模式:按Esc键; 切换到插入模式:按 i 、o、a键; i 在当前位置生前插入 I 在当前行首插入 a 在当前位置后插入 A 在当前行尾插入 o 在当前行之后插入一行 O 在当前行之前插入一行 切换到底行模式:按 :(冒号); 更多详细用法,查询文档《Vim命令合集.docx》和《vi使用方法详细介绍.docx》 打开文件:vim file 退出:esc :q 修改文件:输入i进入插入模式 保存并退出:esc:wq 不保存退出:esc:q! 进入插入模式: i:在当前的光标所在处插入 o:在当前光标所在的行的下一行插入 a:在光标所在的下一个字符插入 快捷键: dd – 快速删除一行 R – 替换

游客6nvww5bb5kd2w 2020-02-19 17:14:52 0 浏览量 回答数 0

回答

引子 研发线上使用最多的编辑器,就是vi。无论是最快查看某个文件内容,还是快速编辑某个文件,vi都能帮上忙。 软件世界貌似有一些非常长寿的东西,vi算是一个。本篇文章聚焦的是研发线上最常用的一些功能。至于安装插件,写一些脚本,那一般是在开发机上玩的,生产环境没有条件、也没有时间忍受你做这些增强。希望看完本文,能够对这款神器有一个大体印象。当然,熟练的使用还需要日常有意识的培养。 vim是vi的增强版,一般现代linux都不缺那几兆空间,所以预装的都是增强版,本文默认使用vim。 养成习惯 vim最大的贡献就是它的按键系统。这也是为什么chrome、idea、atom等编辑器都会提供一个vim mode。笔者见过很多资深的程序员,包括架构师,习惯使用方向键去控制光标的移动。这不能说不对,但这也抛弃了vim最大的精华所在,效率上低了一大截。坚持使用h、j、k、l,你会感谢你今天的纠正。大脑和手指真的是有记忆,当你用的足够多,这也就成了你约定俗成的设定。 vim另外一个特点就是带模式的。一共四种模式,我们不需要记忆,只需要使用例子去理解即可。 不要添乱 不要使用vim打开大文件,vim会一次性读取所有内容到内存,容易造成宿主机内存溢出。 打开文件前,可以使用du -h命令查看文件大小。一般,100MB以下为宜。 常用操作 以下操作在普通模式下执行,连续按键 j 向下 30j 向下移动30行 k 向上 h 向左 l 向右 0 到行首 ^ 到行首第一个字符,如果前面有空格的话 $ 到行尾 gg 快速到文件头 G 快速到文件尾 100G 跳转到第100行 不建议在插入模式下进行光标移动,这很低效 复制:y yy 复制一行 10yy 向下复制10行 yw 复制光标开始的一个单词 y$ 复制光标到行尾 yfB 复制光标到第一个大写B中间的内容 y2fB 复制光标到第二个大写B中间的内容 剪切: x x 向剪切一个一个字符,如果是在行尾,则为向前剪切 3x 剪切三个 xp 非行尾交换两个字符,如从bs变成sb **删除:d** 删除的内容会放到剪贴板,按p即可粘贴到其他地方 dd 删除一行 200dd 删除200行 dw 删除一个单词 (最喜欢啦) df” 删除到出现的第一个双引号 粘贴: p p 粘贴复制或剪切的内容 3p 将复制或剪切的内容粘贴三次 可视化模式 v 行模式,选择一些内容 可视化模式是非常有用的一种模式,在普通模式下按v即可进入。 使用h、j、k、l进行漫游,选中相应的内容。 例子,选中一部分想要的内容,并删除。 ctrl+v 块模式 演示:将文件中的每一行添加到ArrayList中: 1) 在命令模式下,执行%s/$/");/g,在行尾追加数据 2) 按ESC进入普通模式,并使用gg回到行首 3) 按ctrl+v进入可视化模式,然后按G到文件尾 4) 不要理会编辑器反应,按I进入插入模式,输入list.add(" 5) 按ESC回到普通模式,可以发现以上输入已经在每一行生效了 块模式还可以完成列互换,貌似在UE里见过此神技。 命令模式 上面的例子里已经展示了命令模式的进入模式。在普通模式下,输入:即可进入。 %s/$/sth/ 在行尾追加sth %s/\^M//g 替换掉dos换行符,\^M使用ctrl+v + Enter即可输入 :g/\^\s*$/d 删除空行以及只有空格的行 %s/#.*//g 删除#之后的字符 没错,命令模式用的是正则,这些经验是通用的 你已经发现了,这大概就是针对编辑器窗口的sed命令。 查找字符串 同样的,正则的知识也可以应用* 在普通模式下,按下/直接进入查找,输入相应的字符串按确定即可。 n 查找下一个匹配 N 查找上一个匹配 2n 查找下面第二个匹配 如果觉得跳来跳去晕头转向,可以在命令模式下输入set nu开启行号。 宏录制 这可以说是vim的一个杀手锏了。拿上面的例子来说。 将文件中的每一行添加到ArrayList中。 1) 按下gg到行首 2) 按下qa进行宏录制,a是我们起的一个标记名称 3) 按I进入插入模式,输入list.add(" 4) 按ESC进入普通模式,然后按$跳到行尾 5) 按j进入下一行,然后按^回到行首 6) 再次按下q结束宏录制 7) 输入@a触发宏测试一下录制效果 8) 输入100@a重复宏100次,也就是影响下面的100行 可以录制不同的多个宏,方便的进行批量操作 其他 另外用的一些比较少的主要功能有 r 替换字符 ggVG 全选 u 恢复更改 J 合并下一行 gU 光标处转大写 ggguG 整篇文章大写转化为小写 % 跳转到下一个匹配,如在<div>上按%,则跳转到相应的</div> :e /tmp/a 在同一个编辑器内打开/tmp/a文件。同一个编辑器的缓冲区是剪贴板是共享的,可以方便在多个文件中复制 bp 跳转到上一个缓冲区 bn 跳转到下一个缓冲区 退出编辑器 wq 保存当前文件并退出 wqa 保存所有文件并退出 q! 不保存,直接退出 qa! 有多个文件被打开,同时退出 本篇文章只聚焦常用功能,帮助读者快速处理线上文本。至于更多的,也装不下,只有你自己去探索喽。 vim的入门门槛比较高,幸运的是,用多了,你就无法释手了。 文章转载于小姐妹养的狗

剑曼红尘 2020-04-01 11:18:15 0 浏览量 回答数 0

回答

使用MacBook,如何如何避免来回切换屏幕?方法:将终端设置为变透明模式(透明度可以根据自己的实际情况随时调整),然后使用终端自带的vim编辑器。步骤如图:(1)打开iterm或者iterm2,按下command + o会弹出下面这个框。点击右下角可以根据自己眼睛适应度来自行调节透明度。iterm只需要打开一个窗口就行了,在需要的话可以用command + t来打开另外的Tab,Tab和Tab之间可以使用command+左右切换。(2)设置好了透明度还不够,你需要学会使用vim编辑器。使用vim的理由:大多数公司的服务器都是Linux系统,更甚者只有命令行界面,不会有atom或者记事本之类的图文编辑器,所以掌握vim至关重要。

独步清客 2019-12-02 00:43:43 0 浏览量 回答数 0

回答

打开sublimeText后,新建文件,并编写python脚本2、编写完成Ctrl+S保存或点击菜单--》File-->Save保存,选择保存文件类型为.py文件3、保存后选择菜单:Tool-->Build或Ctrl+B运行 Sublime Text 2 支持多种编程语言的语法高亮、拥有优秀的代码自动完成功能,还拥有代码片段(Snippet)的功能,可以将常用的代码片段保存起来,在需要时随时调用。支持 VIM 模式,可以使用Vim模式下的多数命令。支持宏,简单地说就是把操作录制下来或者自己编写命令,然后播放刚才录制的操作或者命令。 Sublime Text 2还具有良好的扩展能力和完全开放的用户自定义配置与神奇实用的编辑状态恢复功能。支持强大的多行选择和多行编辑。强大的快捷命令“可以实时搜索到相应的命令、选项、snippet 和 syntex, 按下回车就可以直接执行,减少了查找的麻烦。即时的文件切换。随心所欲的跳转到任意文件的任意位置。多重选择功能允许在页面中同时存在多个光标。

养狐狸的猫 2019-12-02 02:13:17 0 浏览量 回答数 0

回答

本文介绍了如何在Linux实例中修改nginx、Tomcat等常见Web服务的端口监听地址。 说明:如果是Windows实例和IIS服务,请参考 ECS Windows 实例中修改IIS监听的IP地址。 前提条件 您已经在Linux实例上安装了Web服务器。您可以参考以下文档安装并启动相应的服务: nignx:搭建LNMP环境(CentOS 6)Tomcat:手工部署Java Web项目 您已经在实例所在安全组里 添加规则,放行HTTP协议端口,比如:nginx默认为TCP 80端口,Tomcat默认为TCP 8080端口。 修改nginx的端口监听地址 您需要在nginx配置文件nginx.conf里修改监听端口。按以下步骤操作: 1、远程连接Linux实例。 2、运行命令 netstat -an | grep 80,查看端口在实例中是否正常被监听。如果返回结果与下图所示信息不同,您需要修改监听端口地址。 netstat查询结果_正常 3、运行命令 find / -name nginx.conf 查找nginx.conf文件。路径一般为 /etc/nginx/nginx.conf。 4、修改nginx.conf文件: 运行命令 vim /etc/nginx/nginx.conf。 按 i 键进入编辑模式。 修改 http 中的以下信息: server { listen 80; server_name localhost; 改为 server { listen 实例公网IP地址:80; server_name localhost; 按 Esc 键退出编辑模式,并输入 :wq 保存并退出。 5、重启服务。 修改Tomcat的端口监听地址 您需要在Tomcat的server.xml文件里修改监听端口。按以下步骤操作: 1、远程连接Linux实例。 2、运行命令 find / -name server.xml 查找/conf/server.xml文件。路径一般为 /usr/local/tomcat/conf/server.xml。 3、修改server.xml文件: 运行命令 vim /usr/local/tomcat/conf/server.xml。 按 i 键进入编辑模式。 在 Connector 中添加 address 的信息: <Connector port="8080" protocol="HTTP/1.1" address="实例公网IP地址" 如下图所示。图中 x.x.x.x 表示实例公网IP地址。 按 Esc 键退出编辑模式,并输入 :wq 保存并退出。 重启服务。

KB小秘书 2019-12-02 02:07:30 0 浏览量 回答数 0

回答

vsftpd(very secure FTP daemon)是Linux下的一款小巧轻快、安全易用的FTP服务器软件。本教程介绍如何在Linux实例上安装并配置vsftpd。 前提条件 已注册阿里云账号。如还未注册,请先完成账号注册。 已完成实名认证。如还未认证,请先完成实名认证。 已创建ECS实例并为实例分配了公网IP地址。若尚未创建,请参见创建ECS实例。 背景信息 FTP(File Transfer Protocol)是一种文件传输协议,基于客户端/服务器架构,支持以下两种工作模式: 主动模式:客户端向FTP服务器发送端口信息,由服务器主动连接该端口。 被动模式:FTP服务器开启并发送端口信息给客户端,由客户端连接该端口,服务器被动接受连接。 说明 大多数FTP客户端都在局域网中,没有独立的公网IP地址,且有防火墙阻拦,主动模式下FTP服务器成功连接到客户端比较困难。因此,如无特殊需求,建议您将FTP服务器配置为被动模式。 FTP支持以下三种认证模式: 匿名用户模式:任何人无需密码验证就可以直接登录到FTP服务器。这种模式最不安全,一般只用来保存不重要的公开文件,不推荐在生产环境中使用。 本地用户模式:通过Linux系统本地账号进行验证的模式,相较于匿名用户模式更安全。 虚拟用户模式:FTP服务器的专有用户。虚拟用户只能访问Linux系统为其提供的FTP服务,而不能访问Linux系统的其它资源,进一步增强了FTP服务器的安全性。 本教程中介绍的FTP服务器配置方法如下表所示。 工作模式 匿名用户 本地用户 主动模式 主动模式下,开通匿名用户向FTP服务器上传文件权限的配置方法。 主动模式下,使用本地用户访问FTP服务器的配置方法。 被动模式 无。 被动模式下,使用本地用户访问FTP服务器的配置方法。 使用限制 本教程示例步骤使用以下资源版本: 实例规格:ecs.c6.large 操作系统:CentOS 7.2 64位 vsftpd:3.0.2 浏览器:Internet Explorer 11 当您使用不同软件版本时,可能需要根据实际情况调整命令和参数配置。 操作步骤 Linux实例搭建FTP站点具体步骤如下: 步骤一:安装vsftpd 步骤二:配置vsftpd(匿名用户模式) 步骤二:配置vsftpd(本地用户模式) 步骤三:设置安全组 步骤四:客户端测试 视频教程 步骤一:安装vsftpd 远程连接Linux实例。 连接方法,请参见连接方式介绍。 运行以下命令安装vsftpd。 yum install -y vsftpd 出现如下图所示界面时,表示安装成功。install_vsftp_successfully 运行以下命令设置FTP服务开机自启动。 systemctl enable vsftpd.service 运行以下命令启动FTP服务。 systemctl start vsftpd.service 运行以下命令查看FTP服务监听的端口。 netstat -antup | grep ftp 出现如下图所示界面,表示FTP服务已启动,监听的端口号为21。此时,vsftpd默认已开启匿名访问功能,您无需输入用户名密码即可登录FTP服务器,但没有修改或上传文件的权限。install_vsftpd_3 步骤二:配置vsftpd(匿名用户模式) 配置主动模式下匿名用户上传文件权限的操作步骤如下: 修改配置文件/etc/vsftpd/vsftpd.conf。 运行vim /etc/vsftpd/vsftpd.conf命令打开配置文件。 按i进入编辑模式。 将写权限修改为write_enable=YES。 将匿名上传权限修改为anon_upload_enable=YES。 按Esc退出编辑模式,然后输入:wq并回车以保存并关闭文件。 修改后的配置文件,如下图所示。匿名权限1 运行以下命令更改/var/ftp/pub目录的权限,为FTP用户添加写权限。 chmod o+w /var/ftp/pub/ 运行以下命令重新加载配置文件。 systemctl restart vsftpd.service 匿名权限2 步骤二:配置vsftpd(本地用户模式) 配置本地用户访问FTP服务器的操作步骤如下: 运行以下命令为FTP服务创建一个Linux用户。本示例中,该用户名为ftptest。 useradd ftptest 运行以下命令修改ftptest用户的密码。 passwd ftptest 运行以下命令创建一个供FTP服务使用的文件目录。 mkdir /var/ftp/test 运行以下命令更改/var/ftp/test目录的拥有者为ftptest。 chown -R ftptest:ftptest /var/ftp/test 修改vsftpd.conf配置文件。 运行vim /etc/vsftpd/vsftpd.conf命令打开配置文件。 按i进入编辑模式。 根据实际需要,配置FTP服务器为主动模式或被动模式。 注意 修改和添加配置文件内的信息时,请注意格式问题。例如,添加多余的空格会造成无法重启服务的结果。 配置FTP为主动模式的参数如下: #除下面提及的参数外,其他参数保持默认值即可。 #修改下列参数的值 anonymous_enable=NO #禁止匿名登录FTP服务器 local_enable=YES #允许本地用户登录FTP服务器 listen=YES #监听IPv4 sockets #在行首添加#注释掉以下参数 #listen_ipv6=YES #关闭监听IPv6 sockets #添加下列参数 chroot_local_user=YES #全部用户被限制在主目录 chroot_list_enable=YES #启用例外用户名单 chroot_list_file=/etc/vsftpd/chroot_list #指定例外用户列表文件,列表中的用户不被锁定在主目录 allow_writeable_chroot=YES local_root=/var/ftp/test #设置本地用户登录后所在的目录 配置FTP为被动模式的参数如下: #除下面提及的参数外,其他参数保持默认值即可。 #修改下列参数的值 anonymous_enable=NO #禁止匿名登录FTP服务器 local_enable=YES #允许本地用户登录FTP服务器 listen=YES #监听IPv4 sockets #在行首添加#注释掉以下参数 #listen_ipv6=YES #关闭监听IPv6 sockets #添加下列参数 local_root=/var/ftp/test #设置本地用户登录后所在目录 chroot_local_user=YES #全部用户被限制在主目录 chroot_list_enable=YES #启用例外用户名单 chroot_list_file=/etc/vsftpd/chroot_list #指定例外用户列表文件,列表中用户不被锁定在主目录 allow_writeable_chroot=YES pasv_enable=YES #开启被动模式 pasv_address=<FTP服务器公网IP地址> #本教程中为Linux实例公网IP pasv_min_port= #设置被动模式下,建立数据传输可使用的端口范围的最小值 pasv_max_port= #设置被动模式下,建立数据传输可使用的端口范围的最大值 说明 建议您把端口范围设置在一段比较高的范围内,例如50000~50010,有助于提高访问FTP服务器的安全性。 更多参数详情,请参见vsftp配置文件及参数说明。 按Esc退出编辑模式,然后输入:wq并回车以保存并关闭文件。 创建chroot_list文件,并在文件中写入例外用户名单。 运行vim /etc/vsftpd/chroot_list命令创建chroot_list文件。 按i进入编辑模式。 输入例外用户名单。此名单中的用户不会被锁定在主目录,可以访问其他目录。 按Esc退出编辑模式,然后输入:wq并回车以保存并关闭文件。 说明 没有例外用户时,也必须创建chroot_list文件,内容可为空。 运行以下命令重启vsftpd服务。 systemctl restart vsftpd.service 步骤三:设置安全组 搭建好FTP站点后,在实例安全组的入方向添加规则并放行下列FTP端口。具体步骤,请参见添加安全组规则。 说明 大多数客户端位于局域网中,IP地址是经过转换的,因此ipconfig或ifconfig命令返回的IP不一定是客户端的真实公网IP地址。若后续客户端无法登录FTP服务器,请重新确认其公网IP地址。 FTP为主动模式时:端口21。配置详情如下表所示。 规则方向 授权策略 协议类型 端口范围 授权类型 授权对象 入方向 允许 自定义TCP 21/21 IPv4地址段访问 所有要访问FTP服务器的客户端公网IP地址,多个地址之间用逗号隔开。 允许所有客户端访问时,授权对象为0.0.0.0/0。 FTP为被动模式时:端口21,以及配置文件/etc/vsftpd/vsftpd.conf中参数pasv_min_port和pasv_max_port之间的所有端口。配置详情如下表所示。 规则方向 授权策略 协议类型 端口范围 授权类型 授权对象 入方向 允许 自定义TCP 21/21 IPv4地址段访问 所有要访问FTP服务器的客户端公网IP地址,多个地址之间用逗号隔开。 允许所有客户端访问时,授权对象为0.0.0.0/0。 入方向 允许 自定义TCP pasv_min_port/pasv_max_port IPv4地址段访问 所有要访问FTP服务器的客户端公网IP地址,多个地址之间用逗号隔开。 允许所有客户端访问时,授权对象为0.0.0.0/0。 步骤四:客户端测试 FTP客户端、Windows命令行工具或浏览器均可用来测试FTP服务器。本教程以Windows自带的IE浏览器为例,分别介绍FTP服务器配置为主动模式或被动模式时的访问步骤。 说明 使用浏览器访问FTP服务器出错时,建议您清除浏览器缓存后再尝试。 FTP服务器为主动模式 打开客户端的IE浏览器。 将浏览器设置为主动访问模式。选择设置 > Internet 选项 > 高级。选中启用 FTP 文件夹视图,取消勾选使用被动 FTP。 在地址栏中输入ftp://<FTP服务器公网IP地址>:FTP端口,本教程中为Linux实例的公网IP地址。例如:ftp://39.0.0.1:21。 在弹出的对话框中,输入用户名和密码,即可对FTP文件进行相应权限的操作。 说明 此步骤仅适用于本地用户,匿名用户无需输入用户名和密码即可登录FTP服务器。 FTP服务器为被动模式 打开客户端的IE浏览器。 将浏览器设置为被动访问模式。选择设置 > Internet 选项 > 高级。选中启用FTP文件夹视图和使用被动FTP。 在地址栏中输入ftp://<FTP服务器公网IP地址>:FTP端口,本教程中为Linux实例的公网IP地址。例如:ftp://39.10.0.28:21。 在弹出的对话框中,输入用户名和密码,即可对FTP文件进行相应权限的操作。 说明 此步骤仅适用于本地用户,匿名用户无需输入用户名和密码即可登录FTP服务器。 vsftp配置文件及参数说明 /etc/vsftpd目录下文件说明如下: /etc/vsftpd/vsftpd.conf是vsftpd的核心配置文件。 /etc/vsftpd/ftpusers是黑名单文件,此文件中的用户不允许访问FTP服务器。 /etc/vsftpd/user_list是白名单文件,此文件中的用户允许访问FTP服务器。 配置文件vsftpd.conf参数说明如下: 用户登录控制参数说明如下表所示。 参数 说明 anonymous_enable=YES 接受匿名用户 no_anon_password=YES 匿名用户login时不询问口令 anon_root=(none) 匿名用户主目录 local_enable=YES 接受本地用户 local_root=(none) 本地用户主目录 用户权限控制参数说明如下表所示。 参数 说明 write_enable=YES 可以上传文件(全局控制) local_umask=022 本地用户上传的文件权限 file_open_mode=0666 上传文件的权限配合umask使用 anon_upload_enable=NO 匿名用户可以上传文件 anon_mkdir_write_enable=NO 匿名用户可以建目录 anon_other_write_enable=NO 匿名用户修改删除 chown_username=lightwiter 匿名上传文件所属用户名 后续步骤 对FTP服务进行安全加固。具体操作,请参见安全加固方案。

1934890530796658 2020-03-26 00:27:07 0 浏览量 回答数 0

回答

本文档主要介绍在文件存储HDFS上搭建及使用Apache Spark的方法。 准备工作 开通文件存储HDFS服务并创建文件系统实例和挂载点,详情请参见HDFS快速入门。 在计算节点上安装JDK。 版本不能低于1.8。 在计算节点上安装Scala。 Scala下载地址:官方链接,其版本要与使用的Apache Spark版本相兼容。 下载Apache Hadoop压缩包。 Apache Hadoop下载地址:官方链接。建议您选用的Apache Hadoop版本不低于2.7.2,本文档中使用的Apache Hadoop版本为Apache Hadoop 2.7.2。 下载Apache Spark压缩包。 Apache Spark下载地址:官方链接。选用Apache Spark版本时请注意该版本要与您当前选用的Apache Hadoop版本相兼容,本文中使用的Apache Spark版本为2.3.0。 说明 本文档的操作步骤中涉及的安装包版本号、文件夹路径,请根据实际情况进行替换。 配置Apache Hadoop 执行如下命令解压Apache Hadoop压缩包到指定文件夹。 tar -zxvf hadoop-2.7.2.tar.gz -C /usr/local/ 修改hadoop-env.sh配置文件。 执行如下命令打开hadoop-env.sh配置文件。 vim /usr/local/hadoop-2.7.2/etc/hadoop/hadoop-env.sh 配置JAVA_HOME目录,如下所示。 export JAVA_HOME=/usr/java/default 修改core-site.xml配置文件。 执行如下命令打开core-site.xml配置文件。 vim /usr/local/hadoop-2.7.2/etc/hadoop/core-site.xml 在core-site.xml配置文件中,配置如下信息,详情请参见挂载文件系统。 fs.defaultFS dfs://x-xxxxxxxx.cn-xxxxx.dfs.aliyuncs.com:10290 fs.dfs.impl com.alibaba.dfs.DistributedFileSystem fs.AbstractFileSystem.dfs.impl com.alibaba.dfs.DFS io.file.buffer.size 8388608 alidfs.use.buffer.size.setting true dfs.usergroupservice.impl com.alibaba.dfs.security.LinuxUserGroupService.class dfs.connection.count 16 修改mapred-site.xml配置文件。 执行如下命令打开mapred-site.xml配置文件。 vim /usr/local/hadoop-2.7.2/etc/hadoop/mapred-site.xml 在mapred-site.xml配置文件中,配置如下信息。 mapreduce.framework.name yarn 修改yarn-site.xml配置文件。 执行如下命令打开yarn-site.xml配置文件。 vim /usr/local/hadoop-2.7.2/etc/hadoop/yarn-site.xml 在yarn-site.xml配置文件中,配置如下信息。 yarn.resourcemanager.hostname xxxx yarn.nodemanager.aux-services spark_shuffle,mapreduce_shuffle yarn.nodemanager.aux-services.spark_shuffle.class org.apache.spark.network.yarn.YarnShuffleService yarn.nodemanager.aux-services.mapreduce.shuffle.class org.apache.hadoop.mapred.ShuffleHandler yarn.nodemanager.vmem-pmem-ratio 2.1 yarn.nodemanager.pmem-check-enabled false yarn.nodemanager.vmem-check-enabled false yarn.nodemanager.resource.memory-mb 16384 yarn.nodemanager.resource.cpu-vcores 4 yarn.scheduler.maximum-allocation-vcores 4 yarn.scheduler.minimum-allocation-mb 3584 yarn.scheduler.maximum-allocation-mb 14336 修改slaves配置文件。 执行如下命令打开slaves配置文件。 vim /usr/local/hadoop-2.7.2/etc/hadoop/slaves 在slaves配置文件中,配置如下信息。 node1 node2 配置环境变量。 执行如下命令打开/etc/profile配置文件。 vim /etc/profile 在/etc/profile配置文件中,配置如下信息。 export HADOOP_HOME=/usr/local/hadoop-2.7.2 export HADOOP_CLASSPATH=/usr/local/hadoop-2.7.2/etc/hadoop:/usr/local/hadoop-2.7.2/share/hadoop/common/lib/*:/usr/local/hadoop-2.7.2/share/hadoop/common/*:/usr/local/hadoop-2.7.2/share/hadoop/hdfs:/usr/local/hadoop-2.7.2/share/hadoop/hdfs/lib/*:/usr/local/hadoop-2.7.2/share/hadoop/hdfs/*:/usr/local/hadoop-2.7.2/share/hadoop/yarn/lib/*:/usr/local/hadoop-2.7.2/share/hadoop/yarn/*:/usr/local/hadoop-2.7.2/share/hadoop/mapreduce/lib/*:/usr/local/hadoop-2.7.2/share/hadoop/mapreduce/*:/usr/local/hadoop-2.7.2/contrib/capacity-scheduler/*.jar export HADOOP_CONF_DIR=/usr/local/hadoop-2.7.2/etc/hadoop 执行如下命令使配置生效。 source /etc/profile 执行如下命令配置文件存储HDFS的SDK。 您可以下载文件存储HDFS的SDK (此处以aliyun-sdk-dfs-1.0.3.jar为例),将其部署在Hadoop生态系统组件的CLASSPATH上,详情请参见挂载文件系统。 cp aliyun-sdk-dfs-1.0.3.jar /usr/local/hadoop-2.7.2/share/hadoop/hdfs 执行如下命令将${HADOOP_HOME}文件夹同步到集群的其他节点。 scp -r hadoop-2.7.2/ root@node2:/usr/local/ 验证Apache Hadoop配置 完成Hadoop配置后,不需要格式化namenode,也不需要使用start-dfs.sh来启动HDFS相关服务。如需使用yarn服务,只需在resourcemanager节点启动yarn服务,具体验证Hadoop配置成功的方法请参见安装。 /usr/local/hadoop-2.7.2/sbin/start-yarn.sh 配置Apache Spark 本文档以spark on yarn为例进行搭建说明,spark on yarn的官方配置文档请参见在Yarn上使用Spark。 执行如下命令解压Apache Spark压缩包。 tar -zxvf spark-2.3.0-bin-hadoop2.7.tgz -C /usr/local/ 修改spark-env.sh配置文件。 执行如下命令打开spark-env.sh配置文件。 vim /usr/local/spark-2.3.0-bin-hadoop2.7/conf/spark-env.sh 在spark-env.sh配置文件中,配置如下信息。 export JAVA_HOME=/usr/java/default export SCALA_HOME=/usr/local/scala-2.11.7 export SPARK_CONF_DIR=/usr/local/spark-2.3.0-bin-hadoop2.7/conf export HADOOP_HOME=/usr/local/hadoop-2.7.2 export HADOOP_CONF_DIR=/usr/local/hadoop-2.7.2/etc/hadoop 拷贝jar包。 将配置Apache Hadoop章节的步骤 8中下载的文件存储HDFS SDK(此处以aliyun-sdk-dfs-1.0.3.jar为例)拷贝到Spark配置文件夹的jars目录下。 cp aliyun-sdk-dfs-1.0.3.jar /usr/local/spark-2.3.0-bin-hadoop2.7/jars 将Spark配置文件夹中yarn目录下的spark-x.x.x-yarn-shuffle.jar包拷贝到当前集群所有节点的yarn/lib目录下。 cp /usr/local/spark-2.3.0-bin-hadoop2.7/yarn/spark-2.3.0-yarn-shuffle.jar /usr/local/hadoop-2.7.2/share/hadoop/yarn 说明 配置spark on yarn模式时,不需要将Spark配置文件夹分发到集群的所有节点,只需要在集群中一台提交任务的节点上配置即可。 配置spark standalone时,需要将文件存储HDFS的SDK(aliyun-sdk-dfs-x.y.z.jar) 拷贝到Spark配置文件夹的jars目录下之后再将Spark的配置文件夹分发到集群所有节点上。 验证Apache Spark配置 使用Spark读取文件存储HDFS上面的文件进行wordcount计算,将计算结果打印并写入文件存储HDFS。 执行以下命令创建测试数据。 echo -e "hello,world\nhello,world\nhello,world\nhello,world\nhello,world" > /tmp/words 创建完成后,你可以执行cat /tmp/words命令查看测试数据是否创建成功。 执行如下命令,在文件存储HDFS上创建文件夹。 /usr/local/hadoop-2.7.2/bin/hadoop fs -mkdir -p /sparktest/input /usr/local/hadoop-2.7.2/bin/hadoop fs -mkdir -p /sparktest/output 执行如下命令将测试数据上传至HDFS上的文件夹。 /usr/local/hadoop-2.7.2/bin/hadoop fs -put /tmp/words /sparktest/input 上传完成后,您可以执行/usr/local/hadoop-2.7.2/bin/hadoop fs -cat /sparktest/input/words命令确认测试数据是否上传成功。 执行以下命令启动spark-shell。 /usr/local/spark-2.3.0-bin-hadoop2.7/bin/spark-shell --master yarn --deploy-mode client --driver-cores 1 --driver-memory 1G --executor-memory 1G --num-executors 2 执行以下命令运行wordcount程序。 scala> val res = sc.textFile("dfs://x-xxxxxx.cn-xxxx.dfs.aliyuncs.com:10290/sparktest/input/words").flatMap(.split(",")).map((,1)).reduceByKey(+) scala> res.collect.foreach(println) scala> res.saveAsTextFile("dfs://x-xxxxxx.cn-xxxx.dfs.aliyuncs.com:10290/sparktest/output/res") 其中,dfs://x-xxxxxx.cn-xxxx.dfs.aliyuncs.com为HDFS文件系统的挂载点,请根据实际情况替换。

1934890530796658 2020-03-31 02:53:51 0 浏览量 回答数 0

回答

进Live模式修改,Live下执行sudo不需要密码.######回复 @邹文通 : 就是安装Ubuntu系统时的环境,你可以通过启动U盘进入Live模式。######怎么进入Live模式,还有这意思是Live模式下可以改root密码而不需要原来密码吗###### 使用终端打开不就ok了。 sudo vim /etc/sudoer ######回复 @ding_cqupt : 求具体的操作命令,还有求能改root密码的######打开sudoer,使用sudo好像是不行的哦。。方法应该是su root,然后使用chmod到w的权限。######结果的结果就是自己测试了一堆终于找回了,不过还是希望有改密码 具体操作,要是配上截图更好了######sudo visudo 模仿root {ALL:ALL} ALL######不行,你们这些答案都是必须原来地密码知道地情况下,现在是root密码丢了要找回######你用的ubuntu,使用默认账户登陆的? sudo passwd root这样就能改root密码了啊 ######原来修改过sudoers?

kun坤 2020-06-11 10:30:02 0 浏览量 回答数 0

回答

运行方式一新建test.py文件:1touch test.py 然后vim test.py打开并编辑:1print 'Hello World' 打开终端,输入命令:1python test.py 输出:1Hello World运行方式二这部分内容只对Linux/Unix用户适用,不过Windows用户可能也对程序的第一行比较好奇。首先我们需要通过chmod命令,给程序可执行的许可,然后运行程序12chmod a+x helloworld.py./helloworld.py 输出:1Hello World chmod命令用来改变文件的模式,给系统中所有用户这个源文件的执行许可。然后我们可以直接通过指定源文件的位置来执行程序。我们使用./来指示程序位于当前目录。为了更加有趣一些,你可以把你的文件名改成仅仅helloworld,然后运行./helloworld。这样,这个程序仍然可以工作,因为系统知道它必须用源文件第一行指定的那个解释器来运行程序。3.运行方式三只要知道程序的确切位置,你现在就可以运行程序了。但是如果你希望你的程序能够从各个位置运行呢?可以将你的程序保存在PATH环境变量中的目录之一。每当你运行任何程序,系统会查找列在PATH环境变量中的各个目录。然后运行那个程序。你只要简单地把这个源文件复制到PATH所列目录之一就可以使你的程序在任何位置都可用了。1echo $PATH 输出:1/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games 添加脚本至PATH:1cp helloworld.py /home/swaroop/bin/helloworld然后运行:1helloworld.py

xuning715 2019-12-02 01:10:08 0 浏览量 回答数 0

问题

PHP7.0环境搭建教程

tinson22 2019-12-01 21:42:10 1543 浏览量 回答数 2

问题

使用Docker快速搭建Nginx PHP-FPM环境

寒喵 2019-12-01 21:51:17 915 浏览量 回答数 0

问题

centos7--LNMP搭建wordpress出错,非常困难,找不出原因!求大神帮忙一下,谢谢!

skyrainx 2019-12-01 19:46:26 124 浏览量 回答数 1

回答

sed命令应用广泛,使用简单,是快速文本处理的利器。它其实没多少技巧,背诵、使用是最合适的学习渠道,属于硬技能。但它又很复杂,因为高级功能太多。本篇不去关注sed的高级功能,仅对常用的一些操作,进行说明。 随着使用,你会发现它和vim的一些理念是想通的,正则表达式的语法也基本上一样,并没有多少学习成本。从个人视野和工作效率上来看,sed命令都是程序员必须掌握的一个重要工具。 那些说可以现场google用法的,大多习惯将文本拷贝到excel里,慢慢磨洋工,遇到大批量文件更是手忙脚乱。不是一家人不进一家门,本文不是为你写的。 一个简单的入门 如图,一个简单的sed命令包含三个主要部分:参数、范围、操作。要操作的文件,可以直接挂在命令行的最后。除了命令行,sed也可以通过-f参数指定一个sed脚本,这个属于高级用法,不做过多描述。 有些示例命令我会重复多次,聪明如你一定能发现其中规律,有时连解释都用不着。 参数 -n 这个参数是--quiet或者--silent的意思。表明忽略执行过程的输出,只输出我们的结果即可。 我们常用的还有另外一个参数 :-i。 使用此参数后,所有改动将在原文件上执行。你的输出将覆盖原文件。非常危险,一定要注意。 范围 1,4 表示找到文件中1,2,3,4行的内容。 这个范围的指定很有灵性,请看以下示例(请自行替换图中的范围部分)。 5 选择第5行。 2,5 选择2到5行,共4行。 1~2 选择奇数行。 2~2 选择偶数行。 2,+3 和2,5的效果是一样的,共4行。 2,$ 从第二行到文件结尾。 范围的选择还可以使用正则匹配。请看下面示例。 /sys/,+3 选择出现sys字样的行,以及后面的三行。 /^sys/,/mem/ 选择以sys开头的行,和出现mem字样行之间的数据。 为了直观,下面的命令一一对应上面的介绍,范围和操作之间是可以有空格的。 sed -n '5p' file sed -n '2,5 p' file sed -n '1~2 p' file sed -n '2~2 p' file sed -n '2,+3p' file sed -n '2,$ p' file sed -n '/sys/,+3 p' file sed -n '/^sys/,/mem/p' file 操作 最常用的操作就是p,意思就是打印。比如,以下两个命令就是等同的: cat file sed -n 'p' file 除了打印,还有以下操作,我们来说常用的。 p 对匹配内容进行打印。 d 对匹配内容进行删除。这个时候就要去掉-n参数了,想想为什么。 w 将匹配内容写入到其他地方。 a,i,c等操作虽基本但使用少,不做介绍。我们依然拿一些命令来说明。 sed -n '2,5 p' file sed '2,5 d' file sed -n '2,5 w output.txt' file 我们来看一下sed命令都能干些啥,上点命令体验一下。 删除所有#开头的行和空行。 sed -e 's/#.*//' -e '/^$/ d' file 最常用的,比如下面这个。 sed -n '2p' /etc/group 表示打印group文件中的第二行。 1、参数部分 比如 -n 2、模式部分 比如'2p' 3、文件,比如/etc/group 那么我想一次执行多个命令,还不想写sed脚本文件怎么办?那就需要加-e参数。 sed的操作单元是行。 替换模式 以上是sed命令的常用匹配模式,但它还有一个强大的替换模式,意思就是查找替换其中的某些值,并输出结果。使用替换模式很少使用-n参数。 替换模式的参数有点多,但第一部分和第五部分都是可以省略的。替换后会将整个文本输出出来。 前半部分用来匹配一些范围,而后半部分执行替换的动作。 范围 这个范围和上面的范围语法类似。看下面的例子。 /sys/,+3 选择出现sys字样的行,以及后面的三行。 /^sys/,/mem/ 选择以sys开头的行,和出现mem字样行之间的数据。 具体命令为: sed '/sys/,+3 s/a/b/g' file sed '/^sys/,/mem/s/a/b/g' file 命令 这里的命令是指s。也就是substitute的意思。 查找匹配 查找部分会找到要被替换的字符串。这部分可以接受纯粹的字符串,也可以接受正则表达式。看下面的例子。 a 查找范围行中的字符串a。 [a,b,c] 从范围行里查找字符串a或者b或者c。 命令类似: sed 's/a/b/g' file sed 's/[a,b,c]/<&>/g' file#这个命令我们下面解释 替换 是时候把找出的字符串给替换掉了。本部分的内容将替换查找匹配部分找到的内容。 可惜的是,这部分不能使用正则。常用的就是精确替换。比如把a替换成b。 但也有高级功能。和java或者python的正则api类似,sed的替换同样有Matched Pattern的含义,同样可以得到Group,不深究。常用的替位符,就是&。 &号,再重复一遍。当它用在替换字符串中的时候,代表的是原始的查找匹配数据。 [&] 表明将查找到的数据使用[]包围起来。 “&” 表明将查找的数据使用””包围起来。 下面这条命令,将会把文件中的每一行,使用引号包围起来。 sed 's/.*/"&"/' file flag 参数 这些参数可以单个使用,也可以使用多个,仅介绍最常用的。 g 默认只匹配行中第一次出现的内容,加上g,就可以全文替换了。常用。 p 当使用了-n参数,p将仅输出匹配行内容。 w 和上面的w模式类似,但是它仅仅输出有变换的行。 i 这个参数比较重要,表示忽略大小写。 e 表示将输出的每一行,执行一个命令。不建议使用,可以使用xargs配合完成这种功能。

问问小秘 2020-04-01 11:23:07 0 浏览量 回答数 0

问题

终端:发送禁止操作转义序列或控制字符

祖安文状元 2020-01-06 17:56:55 1 浏览量 回答数 0

回答

Linux这么多命令,通常会让初学者望而生畏。下面是我结合日常工作,以及在公司的内部培训中,针对对Linux不是很熟悉的同学,精选的一批必须要搞懂的命令集合。 任何一个命令其实都是可以深入的,比如tail -f和tail -F的区别。我们不去关心,只使用最常见的示例来说明。本文不会教你具体的用法,那是抢man命令的饭碗。这只是个引导篇,力求简洁。 学习方式:多敲多打,用条件反射替代大脑记忆—如果你将来或者现在要用它来吃饭的话。其中,也有一些难啃的骨头,关注小姐姐味道微信公众号,我们一起用锋利的牙齿,来把它嚼碎。 内容: ✔ 目录操作 ✔ 文本处理 ✔ 压缩 ✔ 日常运维 ✔ 系统状态概览 ✔ 工作常用 目录操作 工作中,最常打交道的就是对目录和文件的操作。linux提供了相应的命令去操作他,并将这些命令抽象、缩写。 基本操作 可能是这些命令太常用了,多打一个字符都是罪过。所以它们都很短,不用阿拉伯数字,一个剪刀手就能数过来。 看命令。 mkdir 创建目录 make dir cp 拷贝文件 copy mv 移动文件 move rm 删除文件 remove 例子: # 创建目录和父目录a,b,c,d mkdir -p a/b/c/d # 拷贝文件夹a到/tmp目录 cp -rvf a/ /tmp/ # 移动文件a到/tmp目录,并重命名为b mv -vf a /tmp/b # 删除机器上的所有文件 rm -rvf / 漫游 linux上是黑漆漆的命令行,依然要面临人生三问:我是谁?我在哪?我要去何方? ls 命令能够看到当前目录的所有内容。ls -l能够看到更多信息,判断你是谁。 pwd 命令能够看到当前终端所在的目录。告诉你你在哪。 cd 假如你去错了地方,cd命令能够切换到对的目录。 find find命令通过筛选一些条件,能够找到已经被遗忘的文件。 至于要去何方,可能就是主宰者的意志了。 文本处理 这是是非常非常加分的技能。get到之后,也能节省更多时间来研究面向对象。 查看文件 cat 最常用的就是cat命令了,注意,如果文件很大的话,cat命令的输出结果会疯狂在终端上输出,可以多次按ctrl+c终止。 # 查看文件大小 du -h file # 查看文件内容 cat file less 既然cat有这个问题,针对比较大的文件,我们就可以使用less命令打开某个文件。 类似vim,less可以在输入/后进入查找模式,然后按n(N)向下(上)查找。 有许多操作,都和vim类似,你可以类比看下。 tail 大多数做服务端开发的同学,都了解这么命令。比如,查看nginx的滚动日志。 tail -f access.log tail命令可以静态的查看某个文件的最后n行,与之对应的,head命令查看文件头n行。但head没有滚动功能,就像尾巴是往外长的,不会反着往里长。 tail -n100 access.log head -n100 access.log 统计 sort和uniq经常配对使用。 sort可以使用-t指定分隔符,使用-k指定要排序的列。 下面这个命令输出nginx日志的ip和每个ip的pv,pv最高的前10 #2019-06-26T10:01:57+08:00|nginx001.server.ops.pro.dc|100.116.222.80|10.31.150.232:41021|0.014|0.011|0.000|200|200|273|-|/visit|sign=91CD1988CE8B313B8A0454A4BBE930DF|-|-|http|POST|112.4.238.213 awk -F"|" '{print $3}' access.log | sort | uniq -c | sort -nk1 -r | head -n10 其他 grep grep用来对内容进行过滤,带上--color参数,可以在支持的终端可以打印彩色,参数n则输出具体的行数,用来快速定位。 比如:查看nginx日志中的POST请求。 grep -rn --color POST access.log 推荐每次都使用这样的参数。 如果我想要看某个异常前后相关的内容,就可以使用ABC参数。它们是几个单词的缩写,经常被使用。 A after 内容后n行 B before 内容前n行 C count? 内容前后n行 就像是这样: grep -rn --color Exception -A10 -B2 error.log diff diff命令用来比较两个文件是否的差异。当然,在ide中都提供了这个功能,diff只是命令行下的原始折衷。对了,diff和patch还是一些平台源码的打补丁方式,你要是不用,就pass吧。 压缩 为了减小传输文件的大小,一般都开启压缩。linux下常见的压缩文件有tar、bzip2、zip、rar等,7z这种用的相对较少。 .tar 使用tar命令压缩或解压 .bz2 使用bzip2命令操作 .gz 使用gzip命令操作 .zip 使用unzip命令解压 .rar 使用unrar命令解压 最常用的就是.tar.gz文件格式了。其实是经过了tar打包后,再使用gzip压缩。 创建压缩文件 tar cvfz archive.tar.gz dir/ 解压 tar xvfz. archive.tar.gz 日常运维 开机是按一下启动按钮,关机总不至于是长按启动按钮吧。对了,是shutdown命令,不过一般也没权限-.-!。passwd命令可以用来修改密码,这个权限还是可以有的。 mount mount命令可以挂在一些外接设备,比如u盘,比如iso,比如刚申请的ssd。可以放心的看小电影了。 mount /dev/sdb1 /xiaodianying chown chown 用来改变文件的所属用户和所属组。 chmod 用来改变文件的访问权限。 这两个命令,都和linux的文件权限777有关。 示例: # 毁灭性的命令 chmod 000 -R / # 修改a目录的用户和组为 xjj chown -R xjj:xjj a # 给a.sh文件增加执行权限(这个太常用了) chmod a+x a.sh yum 假定你用的是centos,则包管理工具就是yum。如果你的系统没有wget命令,就可以使用如下命令进行安装。 yum install wget -y systemctl 当然,centos管理后台服务也有一些套路。service命令就是。systemctl兼容了service命令,我们看一下怎么重启mysql服务。 推荐用下面这个。 service mysql restart systemctl restart mysqld 对于普通的进程,就要使用kill命令进行更加详细的控制了。kill命令有很多信号,如果你在用kill -9,你一定想要了解kill -15以及kill -3的区别和用途。 su su用来切换用户。比如你现在是root,想要用xjj用户做一些勾当,就可以使用su切换。 su xjj su - xjj -可以让你干净纯洁的降临另一个账号,不出意外,推荐。 系统状态概览 登陆一台linux机器,有些命令能够帮助你快速找到问题。这些命令涵盖内存、cpu、网络、io、磁盘等。 uname uname命令可以输出当前的内核信息,让你了解到用的是什么机器。 uname -a ps ps命令能够看到进程/线程状态。和top有些内容重叠,常用。 找到java进程 ps -ef|grep java top 系统状态一览,主要查看。cpu load负载、cpu占用率。使用内存或者cpu最高的一些进程。下面这个命令可以查看某个进程中的线程状态。 top -H -p pid free top也能看内存,但不友好,free是专门用来查看内存的。包括物理内存和虚拟内存swap。 df df命令用来查看系统中磁盘的使用量,用来查看磁盘是否已经到达上限。参数h可以以友好的方式进行展示。 df -h ifconfig 查看ip地址,不啰嗦,替代品是ip addr命令。 ping 至于网络通不通,可以使用ping来探测。(不包括那些禁ping的网站) netstat 虽然ss命令可以替代netstat了,但现实中netstat仍然用的更广泛一些。比如,查看当前的所有tcp连接。 netstat -ant 此命令,在找一些本地起了什么端口之类的问题上,作用很大。 工作常用 还有一些在工作中经常会用到的命令,它们的出现频率是非常高的 ,都是些熟面孔。 export 很多安装了jdk的同学找不到java命令,export就可以帮你办到它。export用来设定一些环境变量,env命令能看到当前系统中所有的环境变量。比如,下面设置的就是jdk的。 export PATH=$PATH:/home/xjj/jdk/bin 有时候,你想要知道所执行命令的具体路径。那么就可以使用whereis命令,我是假定了你装了多个版本的jdk。 crontab 这就是linux本地的job工具。不是分布式的,你要不是运维,就不要用了。比如,每10分钟提醒喝茶上厕所。 */10 * * * * /home/xjj/wc10min date date命令用来输出当前的系统时间,可以使用-s参数指定输出格式。但设置时间涉及到设置硬件,所以有另外一个命令叫做hwclock。 xargs xargs读取输入源,然后逐行处理。这个命令非常有用。举个栗子,删除目录中的所有class文件。 find . | grep .class$ | xargs rm -rvf #把所有的rmvb文件拷贝到目录 ls *.rmvb | xargs -n1 -i cp {} /mount/xiaodianying 网络 linux是一个多作业的网络操作系统,所以网络命令有很多很多。工作中,最常和这些打交道。 ssh 这个,就不啰嗦了。你一定希望了解ssh隧道是什么。你要是想要详细的输出过程,记得加参数-v。 scp scp用来进行文件传输。也可以用来传输目录。也有更高级的sftp命令。 scp a.txt 192.168.0.12:/tmp/a.txt scp -r a_dir 192.168.0.12:/tmp/ wget 你想要在服务器上安装jdk,不会先在本地下载下来,然后使用scp传到服务器上吧(有时候不得不这样)。wget命令可以让你直接使用命令行下载文件,并支持断点续传。 wget -c http://oracle.fuck/jdk2019.bin mysql mysql应用广泛,并不是每个人都有条件用上navicat的。你需要了解mysql的连接方式和基本的操作,在异常情况下才能游刃有余。 mysql -u root -p -h 192.168.1.2

问问小秘 2020-04-01 10:52:50 0 浏览量 回答数 0

回答

1、linux上调试可以使用vim "不要用空格代替制表符 set expandta "在行和段开始处使用制表符 set smarttab "统一缩进为4 set shiftwidth=4 set tabstop=4 set softtabstop=4 "设置自动缩排 set autoindent "cindent对c语法的缩进更加智能灵活 set cindent "比autoindent稍智能的自动缩进,在这种缩进模式中,每一行都和前一行有相同的缩进量 粘贴时候使用 set paste set smartindent 命令:gg=G 2、格式化整个目录使用PHP-CS-Fixer 基于composer管理的 php php-cs-fixer.phar fix /path/to/dir php php-cs-fixer.phar fix /path/to/file php php-cs-fixer.phar fix /path/to/project --level=psr0 php php-cs-fixer.phar fix /path/to/project --level=psr1 php php-cs-fixer.phar fix /path/to/project --level=psr2 php php-cs-fixer.phar fix /path/to/project --level=symfony 可以根据PSR标准自动格式化 3、格式化整个目录使用PHP Beautifier 这是一个pear类库 pear install php_beautifier-0.1.15 4、其它IDE,coding的时候 PHPStorm、Netbeans、Subline等等都是可以格式化的 推荐方式1、个别文件使用可以格式化的编辑器2、整体使用PHP-CS-Fixer

a123456678 2019-12-02 02:57:06 0 浏览量 回答数 0

回答

以下分别介绍 Linux 和 Windows 系统下的操作办法: Linux MySQL root 密码忘记了如何操作 如果使用 MySQL 数据库忘记了账号密码,可以通过调节配置文件,跳过密码的方式登数据库,在数据库里面修改账号密码,一般默认的账号为root。 1.编辑 MySQL 配置文件 my.cnf。 注意: 以实际 my.cnf 配置文件路径为准。 vim /etc/my.cnf[mysqld]skip-grant-tables #增加 2.重启 MySQL 服务。 注意:以实际 MySQL 启动脚本路径为准。 /etc/init.d/mysqld restart 3.登录数据库。 执行/usr/bin/mysql命令后,输入如下命令。 注意:以实际 MySQL 执行文件路径为准。 mysql> USE mysql;mysql> UPDATE user SET Password = password (‘新密码’) WHERE User = ‘root’ ;mysql> flush privileges ; mysql> quit 4.删除或者注释第一步骤中添加的 skip-grant-tables 5.重启 MySQL 服务。 /etc/init.d/mysqld restart 6.使用新密码测试登录。 Windows MySQL root 密码忘记了如何操作 操作系统:Windows Server 2008 R2 标准版 SP1 64位中文版 MySQL 版本:mysql Ver 14.12 Distrib 5.0.87, for Win32 (ia32) 其他的版本方法类似。 1.切换 MySQL 安装的 bin 目录下。 默认安装的目录为: C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin 注意: MySQL 的实际安装目录和默认安装目录不同,请根据实际安装的路径自行修改。 2.停止mysql服务。 net stop mysql 3.以安全模式启动 MySQL。 mysqld-nt.exe —skip-grant-tables 注意:这个窗口保持现状,不要关闭 4.登录 MySQL 服务(另外新开一个 cmd 窗口) mysql -uroot -p 提示输入密码时直接回车即可。 5.执行如下命令,修改密码。 use mysql; update user set Password=password(‘新密码’) where User=’root’; flush privileges; 注意:不建议修改密码为:123456,这样的密码太简单,因为做演示,所以设置为简单密码。 密码需要满足密码复杂性要求,需要大小写字母,数字组合,最小长度为 8 位,根据这个密码策略,设置密码。 修改完成后退出。 6.在任务管理器里关闭所有 MySQL 的进程,这样前面保持住的窗口就自动关闭。 7.启动 MySQL 并测试登录。 net start mysql 使用新密码登录。

KB小秘书 2019-12-02 02:07:22 0 浏览量 回答数 0

回答

前辈,你们在吗? @中山野鬼 @stxy0509  能帮我看看这个问题吗? ###### @stxy0509###### 老实说,你@我之前,我就看过你这个问题,但是我觉得挺棘手的,因为我自己觉得我也搞不定,所以没敢开腔,但是,被你@了,不站出来似乎有点乌龟了…… 1 “在mes1和mes2的信息被输出到stdout时都在其尾部被加上了一个换行符”,这个确实是不应该的,我在Windows下用vs2010试验过,并没有这样。至于linux为什么这样,我也不知道。 2 “stdout是行缓存的(在本机试验过也确实如此)”,那你是如何证明这一点的呢?h或许你真的证明了,那我只能说linux的行为对我来说有点费解。 你觉得fclose()另外一个文件,会强迫stdout输出吗?可是为了实际证明这一点,你把fclose()注释掉,试一下。或许我说的是错的。 3 “input file 的buffer 好像与stdout终端的buffer没有什么直接的联系”,肯定是这样的,要联系也是程序让他们有联系,否则不乱套了? 4 文件以"r"模式打开,而且文件是全缓冲,我的理解是缓冲区中的内容不是自动就填充的,而是你使用fread()或其他读的函数,系统会将读取的内容自动放到这个缓冲区,并返回你的读取函数。如果下次读的数据还是这个缓冲去范围内的数据,就直接从这个缓冲去复制,不直接读文件了。但是如果不在范围,还是要实际读取文件的,从而再次更新缓冲区。 5 根据我知道的资料,fflush()是把缓冲区中的数据刷新到磁盘(真正的写入)。对于以读模式打开的文件,应该不需要同步,因为根本没有也不能修改文件; 6 文件可以被同时打开为读和写。很多时候都是一个线程写文件,而另一个线程从这个文件读取,这算是线程通讯的一种办法。只要文件指针(读写位置)保持正确就可以了。实际上,在windows下面文件要想这样,必须打开时共享读写,不能独占式访问。但是简单的c库函数做不到这一点,能不能,听天由命了(要看读写这个文件的其他进程是否设置共享)。 7 “如果可以,那么它们申请的应该是两个不同的缓存空间吗?",我要说的是一个FILE *指针对应一个缓冲区,如果只用一个,那不乱套,你写乱我的,我搞乱你的。多从常识,原理角度考虑问题,常识,原理应该这样,那么程序也应该这样。否则,程序也会出现问题的。 希望对你有帮助! ###### FILE结构体只维护了一个缓冲区。如果你先对一个文件调用fgets函数来到一个特定的位置,这时你想要写文件的话,你需要先fseek(fp,0,SEEK_CUR)来清空缓冲,然后才能调用写函数。 可以去看unix环境高级编程,前几章写得非常明确。 ###### 关于第一个问题,我用vim去创建mest1跟mest2的话就会出现跟楼主一样的换行,但如果 printf hello > mest1 printf marry! > mest2 这样创建的话是不会出现换行的。 当我用hexdump去看用vim创建的mest1的时候发现文件末尾出现了奇怪的东西,所以应该是文件编辑器问题,不关代码的事吧 ###### 问题解决了,总结一下: 1. 问题的根本原来出现在vim这个文本编辑器身上,就像@杨同学 所说的那样。我百度了一下,原来vim会自动在其创建的文本中的每一行末尾自动添加一个换行符(如果该行末尾本身没有换行符的话)。如果想去掉这个自动换行,可以在vim的命令mode中依次敲入“set noeol”和"set binary"(后面这个"set binary" 默认是off的,打开它好像可能会引起一些其他的问题。。这个有待研究)。敲完命令后":w"保存可以看到提示的文本字符数正好是自己输入的个数(而没有额外得被加上了1个换行符)。 2. stdout 和 stdin 默认是行缓存的。可以通过下面的代码证明stdout是行缓存的: printf("hello"); while(1); 编译此文件,运行,可以看到并没有输出,而是一直停在了某个地方 (while(1)的作用),因为此时的数据还在stdout的buffer中,而且程序并没有退出main(),所以不能flush buffer中的内容到stdout终端。但若为printf("hello\n"),则会因stdout的buffer遭遇到了一个换行符而将buffer的内容flush到stdout终端,故在运行程序时会看到相应的“hello”输出。 3. input file 的buffer(通过“r”模式用fopen打开文件所生成的buffer),和 output file 的buffer(通过“w”模式用fopen打开文件所生成的buffer)不是同一个东西, 他们是独立的。当调用fclose()函数时(如fflush(fp),fp为指向某个文件的文件指针,类型为FILE *),其会调用fflush函数来“刷新”fp所指向文件的缓存区。而这个“刷新”是有两层含义的。对于input file 的buffer 来说,这会丢弃缓存区中尚未被读取的内容,而对于output file 来说,这会使得buffer中的内容写入到相应的输出文件中(写入disk或相应的设备文件,通过调用相应的system call)。 http://man7.org/linux/man-pages/man3/fflush.3.html 的description有说到这个问题。所以源码中的“fclose(fp)”并不会强迫stdout输出,他只是flush了input file 的buffer,并释放了fp这个文件指针以供下个input file使用。 4. 驻留在disk上面的文件一般为全缓存的。当以“r”模式用fopen打开此类文件时,system会为这个文件建立一个input buffer,而此时应该还不会立马将文件的内容读至buffer,而是等到真正要由该文件读取数据时才会通过system call将文件的数据填满这个buffer,然后再由这个buffer读取数据。 5. 文件可以同时被读和写("rw")。但这个要注意的东西很多,还没学到。。        最后,非常感谢 @stxy0509 @优游幻世 和 @杨同学 。能抽时间看完我这累赘的叙述并且还给出了自己的看法,让我解决了一个大疑惑。一个人的能力和经验是有限的,大家不同的看法才能引起brain storm,更快地解决问题。有你们的支持,我才能走得更远。Thanks a lot~######和库有关。查一下相关库的说明。包括stdout。c标准里,对这些具体的操作方式,没有规定的。各家按照自己喜好来。本身c语言跨平台时,要注意的,就是这些。###### 引用来自“中山野鬼”的答案 和库有关。查一下相关库的说明。包括stdout。c标准里,对这些具体的操作方式,没有规定的。各家按照自己喜好来。本身c语言跨平台时,要注意的,就是这些。 感谢野鬼前辈~我会注意的。

kun坤 2020-06-07 20:08:36 0 浏览量 回答数 0

回答

本文档介绍如何使用Sqoop工具实现文件存储HDFS和关系型数据库MySQL之间的双向数据迁移。 背景信息 Sqoop是一款开源的工具,主要用于在Hadoop和结构化数据存储(如关系数据库)之间高效传输批量数据 。既可以将一个关系型数据库(MySQL 、Oracle 、Postgres等)中的数据导入HDFS中,也可以将HDFS的数据导入到关系型数据库中。 准备工作 现在Sqoop分为Sqoop1和Sqoop2,两个版本并不兼容。本案例选择使用sqoop1的稳定版本Sqoop 1.4.7 版本。 下载Sqoop 1.4.7 版本。 解压安装包。 tar -zxf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /home/hadoop/ 配置环境变量。 执行vim /etc/profile命令,打开配置文件,添加如下内容。 export SQOOP_HOME=/home/hadoop/sqoop-1.4.7.bin__hadoop-2.6.0 export PATH=$PATH:$SQOOP_HOME/bin 执行source /etc/profile命令,使配置生效。 添加数据库驱动。 下载MySQL链接包。 wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar 将MySQL链接包存放到Sqoop安装目录的lib目录下。 cp mysql-connector-java-5.1.38.jar /home/hadoop/sqoop-1.4.7.bin__hadoop-2.6.0/lib/ 修改配置文件。 执行如下命令进入/home/hadoop/sqoop-1.4.7.bin__hadoop-2.6.0/conf目录。 cd /home/hadoop/sqoop-1.4.7.bin__hadoop-2.6.0/conf 执行如下命令复制sqoop-env-template.sh,并命名为sqoop-env.sh。 cp sqoop-env-template.sh sqoop-env.sh 执行vim sqoop-env.sh命令打开配置文件,添加如下内容。 export HADOOP_COMMON_HOME=/home/hadoop/hadoop-2.7.2 export HADOOP_MAPRED_HOME=/home/hadoop/hadoop-2.7.2 export HIVE_HOME=/home/hadoop/hive-2.1.0 #若没有安装hive、hbase可不必添加此配置 export HBASE_HOME=/home/hadoop/hbase-1.2.2 #若没有安装hive、hbase可不必添加此配置 执行如下命令验证数据库是否连接成功。 sqoop list-databases --connect jdbc:mysql:// --username 'username' --password 'password' 参数 说明 dburi 数据库的访问连接,例如: jdbc:mysql://0.0.0.0:3306/。 username 数据库登录用户名。 password 用户密码。 如果回显信息中显示MySQL数据库的名称,则表示连接成功。 将MySQL的数据迁移到HDFS上 在集群Sqoop节点上,使用sqoop import命令将MySQL中的数据迁移到HDFS上。 此处以迁移MySQL中的employee表为例,employee表中已写入如下数据。 01,测试用户1,1990-01-01,男 02,测试用户2,1990-12-21,男 03,测试用户3,1990-05-20,男 04,测试用户4,1990-08-06,男 05,测试用户5,1991-12-01,女 执行以下命令迁移数据。 sqoop import --connect jdbc:mysql://172.x.x.x:3306/sqoop_migrate --username 'userid' --password 'userPW' --table employee --target-dir /mysql2sqoop/table/sqoop_migrate --num-mappers 1 --columns "e_id,e_name,e_birth,e_sex" --direct 命令格式:sqoop import --connect jdbc:mysql:// / --username --password --table --check-column --incremental --last-value --target-dir 参数说明如下所示,更多详情请参见Sqoop Import。 参数 说明 dburi 数据库的访问连接。例如:jdbc:mysql://172.x.x.x:3306/ 。如果您的访问连接中含有参数,则请加上单引号,例如:'jdbc:mysql://172.x.x.x.235:3306/mydatabase?useUnicode=true&characterEncoding=UTF-8'。 dbname 数据库的名字,例如:user。 username 数据库登录用户名。 password 用户密码。 tablename MySQL数据库中表的名称。 col 迁移表中列的名称。 mode 该模式决定Sqoop如何定义哪些行为新的行。取值:append或lastmodified。 value 前一个导入中检查列的最大值。 hdfs-dir HDFS的写入目录,此处以/mysql2sqoop/table/sqoop_migrate为例。 检查迁移结果。 执行hadoop fs -ls /mysql2sqoop/table/sqoop_migrate命令,获取迁移文件,此处以part-m-00000为例。 Found 2 items -rwxrwxrwx 3 root root 0 2019-08-21 14:42 /mysql2sqoop/table/sqoop_migrate/_SUCCESS -rwxrwxrwx 3 root root 200 2019-08-21 14:42 /mysql2sqoop/table/sqoop_migrate/part-m-00000 执行hadoop fs -cat /mysql2sqoop/table/sqoop_migrate/part-m-00000命令查看文件中的内容。 如果part-m-00000文件中有如下内容,则表示迁移成功。 01,测试用户1,1990-01-01,男 02,测试用户2,1990-12-21,男 03,测试用户3,1990-05-20,男 04,测试用户4,1990-08-06,男 05,测试用户5,1991-12-01,女 将HDFS的数据迁移到MySQL上 将HDFS的数据迁移到MySQL上,需要先在MySQL上创建好对应HDFS数据结构的表,然后在集群Sqoop节点上使用sqoop export命令进行迁移。 此处以迁移HDFS上mysqltest.txt中的数据为例,mysqltest.txt中已写入如下数据。 6,测试用户6,2019-08-10,男 7,测试用户7,2019-08-11,男 8,测试用户8,2019-08-12,男 9,测试用户9,2019-08-13,女 10,测试用户10,2019-08-14,女 创建数据库。 create database sqoop_migrate; 使用已创建的数据库。 use sqoop_migrate; 创建表。 CREATE TABLE employee ( e_id varchar(20) NOT NULL DEFAULT '', e_name varchar(20) NOT NULL DEFAULT '', e_birth varchar(20) NOT NULL DEFAULT '', e_sex varchar(10) NOT NULL DEFAULT '', PRIMARY KEY (e_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 执行以下命令迁移数据。 sqoop export --connect jdbc:mysql://172.0.0.0:3306/sqoop_migrate --username 'userid' --password 'userPW' --num-mappers 1 --table employee --columns "e_id,e_name,e_birth,e_sex" --export-dir '/sqoop2mysql/table/mysqltest.txt' --fields-terminated-by ',' 迁移命令格式:sqoop export --connect jdbc:mysql:// / --username --password --table --export-dir 参数 说明 dburi 数据库的访问连接。例如:jdbc:mysql://172.x.x.x:3306/ 。如果您的访问连接中含有参数,则请加上单引号,例如:'jdbc:mysql://172.x.x.x.235:3306/mydatabase?useUnicode=true&characterEncoding=UTF-8'。 dbname 数据库的名字,例如:user。 username 数据库登录用户名。 password 用户密码。 tablename MySQL数据库中表的名称。 hdfs-dir 存放待迁移数据的HDFS目录,此处以/sqoop2mysql/table/mysqltest.txt为例。 验证迁移结果。 执行以下命令进入数据库。 mysql -uroot -p 执行以下命令使用数据库。 use sqoop_migrate; 执行select * from employee;命令查看表数据。 如果表中有如下数据,则表示迁移成功。 ... | 6 | 测试用户6 | 2019-08-10 | 男 | | 7 | 测试用户7 | 2019-08-11 | 男 | | 8 | 测试用户8 | 2019-08-12 | 男 | | 9 | 测试用户9 | 2019-08-13 | 女 | | 10 | 测试用户10 | 2019-08-14 | 女 | +------+---------------+------------+-------+ 10 rows in set (0.00 sec) 将MySQL的数据迁移到Hive上 在集群Sqoop节点上使用sqoop import命令可以将MySQL上的数据迁移到Hive上。 此处以迁移MySQL中的employee表为例,employee表中已写入如下数据。 1,测试用户1,2019-08-10,男 2,测试用户2,2019-08-11,男 3,测试用户3,2019-08-12,男 4,测试用户4,2019-08-13,女 5,测试用户5,2019-08-14,女 执行以下命令迁移数据。 sqoop import --connect jdbc:mysql://172.0.0.0:3306/sqoop_migrate --username 'userid' --password 'PW' --table employee --hive-import --hive-database default --create-hive-table --hive-overwrite -m 1 ; 迁移命令格式:sqoop import --connect jdbc:mysql:// / --username --password --table --check-column --incremental --last-value --fields-terminated-by "\t" --lines-terminated-by "\n" --hive-import --target-dir --hive-table 参数 说明 dburi 数据库的访问连接。例如:jdbc:mysql://172.x.x.x:3306/ 。如果您的访问连接中含有参数,则请加上单引号,例如:'jdbc:mysql://172.x.x.x.235:3306/mydatabase?useUnicode=true&characterEncoding=UTF-8'。 dbname 数据库的名字,例如:user。 username 数据库登录用户名。 password 用户密码。 tablename MySQL数据库中表的名称。 col 迁移表中列的名称。 mode 该模式决定Sqoop如何定义哪些行为新的行。取值:append或lastmodified。 value 前一个导入中检查列的最大值。 hdfs-dir HDFS的写入目录。 hive-tablename 对应的Hive中的表名。 验证迁移结果。 执行select * from default.employee;命令查看表数据,如果表中有如下数据,则表示迁移成功。 1 测试用户1 2019-08-10 男 2 测试用户2 2019-08-11 男 3 测试用户3 2019-08-12 男 4 测试用户4 2019-08-13 女 5 测试用户5 2019-08-14 女 ... Time taken: 0.105 seconds, Fetched: 14 row(s) 将Hive的数据迁移到MySQL上 将Hive的数据迁移到MySQL上,需要先在MySQL上创建好对应Hive数据结构的表,然后在集群Sqoop节点上使用sqoop export命令进行迁移。 此处以迁移Hive上hive_test.txt中的数据为例,hive_test.txt中已写入如下数据。 1,测试用户1,2019-08-10,男 2,测试用户2,2019-08-11,男 3,测试用户3,2019-08-12,男 4,测试用户4,2019-08-13,女 5,测试用户5,2019-08-14,女 在MySQL上的sqoop_migrate库中创建好要导入的表。 use sqoop_migrate ; CREATE TABLE employeeOnHive( id VARCHAR(20), name VARCHAR(20) NOT NULL DEFAULT '', birth VARCHAR(20) NOT NULL DEFAULT '', sex VARCHAR(10) NOT NULL DEFAULT '', PRIMARY KEY(id) ); 执行以下命令迁移数据。 sqoop export --connect jdbc:mysql://172.0.0.0:3306/sqoop_migrate --username 'userid' --password 'userPW' --table employeeOnHive -m 1 --fields-terminated-by ',' --export-dir /user/hive/warehouse/employeeonhive 迁移命令格式:sqoop export --connect jdbc:mysql:// / --username --password --table --export-dir --fields-terminated-by 参数 说明 dburi 数据库的访问连接。例如:jdbc:mysql://172.x.x.x:3306/ 。如果您的访问连接中含有参数,则请加上单引号,例如:'jdbc:mysql://172.x.x.x.235:3306/mydatabase?useUnicode=true&characterEncoding=UTF-8'。 dbname 数据库的名字,例如:user。 username 数据库登录用户名。 password 用户密码。 tablename MySQL数据库中表的名称。 hive-dir 存放待迁移数据的HDFS目录,此处以/sqoop2mysql/table/mysqltest.txt为例。 Splitter Hive中表中数据分隔符。hive默认为“\001”。 验证迁移结果。 执行以下进入数据库。 mysql -uroot -p 执行以下命令使用数据库。 use sqoop_migrate; 执行select * from sqoop_migrate.employeeOnHive;命令查看表数据。 如果表中有如下数据,则表示迁移成功。 +----+---------------+------------+-----+ | id | name | birth | sex | +----+---------------+------------+-----+ | 1 | 测试用户1 | 2019-08-10 | 男 | | 2 | 测试用户2 | 2019-08-11 | 男 | | 3 | 测试用户3 | 2019-08-12 | 男 | | 4 | 测试用户4 | 2019-08-13 | 女 | | 5 | 测试用户5 | 2019-08-14 | 女 | +----+---------------+------------+-----+ 5 rows in set (0.00 sec)

1934890530796658 2020-03-31 02:35:38 0 浏览量 回答数 0

问题

EditPlus 3.x 配置PHP开发环境,报错

一枚小鲜肉帅哥 2020-05-27 21:25:35 9 浏览量 回答数 1

问题

EditPlus 3.x 配置PHP开发环境:报错

kun坤 2020-06-14 06:44:27 0 浏览量 回答数 1

问题

EditPlus 3.x 配置PHP开发环境 - EditPlus报错

montos 2020-06-02 12:44:51 1 浏览量 回答数 1

回答

详细解答可以参考官方帮助文档 当云盘挂载在ECS实例上时,您可以使用 重新初始化磁盘 功能将作系统盘或数据盘用的云盘恢复到创建时的状态。重新初始化后: 系统盘会恢复到刚创建时的状态。比如,如果您用公共镜像Windows Server 2008 R2创建实例,那么,重新初始化系统盘后,操作系统依然是最初的Windows Server 2008 R2,但是创建实例后安装的应用程序和产生的数据都会被删除。 说明 更换系统盘后再执行初始化,初始化的是更换后的系统盘,而不是更换前的系统盘。 作数据盘用的云盘会恢复到初始状态: 如果原来是空盘,则恢复为空盘。 如果是 通过快照创建的云盘,则会恢复到快照的状态。 如果云盘应用了自动快照策略,重新初始化后,设置仍然有效,不需要重新设置。 重新初始化磁盘不会更改ECS实例的IP地址、云盘ID。 重新初始化磁盘不会删除云盘的自动快照或手动快照,您可以使用这些快照 回滚云盘。 警告 重新初始化磁盘前必须先停止ECS实例,该操作会中断您的服务,请务必谨慎操作。 重新初始化磁盘后,云盘上的数据将会丢失,请务必提前做好数据备份,例如为云盘创建快照,详细操作,请参见 创建快照。 重新初始化系统盘 前提条件 初始化Linux实例的系统盘时,如果使用密钥对验证,您必须已经 创建 SSH 密钥对 或 导入 SSH 密钥对。 操作步骤 按以下步骤重新初始化系统盘: 登录 ECS管理控制台。 选择地域。 在左侧导航栏中,单击 实例。 找到需要初始化系统盘的实例,单击实例ID进入 实例详情 页。 在页面右上角,单击 停止,停止实例。 说明 如果是按量付费的VPC类型实例,而且已经开启了 按量付费实例停机不收费 功能,在 提醒 弹出框中,单击 确定。在 停止实例 对话框中,选择 停止后仍旧保留实例并继续收费。如果使用 停机不收费 模式,重新初始化系统盘后可能无法成功启动实例。 实例进入 已停止 状态后,在左侧导航栏中,单击 本实例磁盘。 找到系统盘,在 操作 列中,单击 重新初始化磁盘。 在弹出的 重新初始化磁盘 对话框里,完成以下设置: 设置验证方法: Windows实例:重新设置实例登录密码。可以使用旧的密码,也可以指定新的密码。 Linux实例:选择 设置密钥 或 设置密码,并绑定密钥对或重新设置密码。可以使用旧的密码,也可以指定新的密码。 (可选)安全加固:选择 免费开通。开通安全加固功能后,您的实例会自动免费加载云服务器安全组件,提供网站后门检测、异地登录提醒、暴力破解拦截等安全功能。 (可选)启动实例策略:选择 重置磁盘后启动。完成初始化后,实例会自动启动。 单击 确认重新初始化磁盘。 仅适用于主账号用户:获取并输入手机短信验证码后,单击 确认,开始初始化系统盘。 仅适用于Linux实例:如果初始化前挂载了数据盘,您需要 重新创建挂载点信息并挂载文件系统。 说明 在Linux实例中,重新初始化系统盘不会改变数据盘里的内容,但是数据盘的挂载信息会丢失,所以需要执行这步操作。 系统盘重新初始化后,您需要重新部署业务(包括应用和配置)从而尽快恢复业务。 重新初始化数据盘 重新初始化后,数据盘的状态根据云盘最初的状态以及实例的操作系统不同而异: Windows实例:无论数据盘是从快照创建而来,还是一个全新的空盘,重新初始化后,数据盘会恢复到创建后的初始状态,但是可以直接使用,不需要执行其他操作。 Linux实例: 如果数据盘创建时是一个空盘:数据盘的文件系统及内容完全丢失,您必须重新格式化、分区数据盘,并挂载数据盘分区。 说明 在这种情况下,如果重新初始化前您在 /etc/fstab 文件中写入了开机自动挂载分区的命令,那么,重新初始化后,开机自动挂载会失效,启动时一般会出现异常。所以,在重新初始化数据盘之前,您必须先在 /etc/fstab 中注释掉开机自动挂载数据盘分区的信息。 如果数据盘是从快照创建而来:数据盘会恢复到原来快照的状态,不需要重新挂载数据盘分区,但是数据盘创建成功后产生的所有数据都会丢失。 本文的步骤描述中用/dev/vdb1表示数据盘分区,/InitTest表示挂载点。您可以根据实际情况替换。 前提条件 云盘已经挂载到实例上。详细操作,请参见 挂载云盘。 操作步骤 按以下步骤重新初始化数据盘: 仅适用于Linux实例:如果数据盘创建时是一个空盘,而且您在 /etc/fstab 中添加了开机自动挂载数据盘分区的命令,那么,您必须在 /etc/fstab 里注释掉开机挂载数据盘分区的命令。操作步骤如下: 远程连接Linux实例。 运行 vim /etc/fstab。 按 i 键进入编辑模式。 找到数据盘分区挂载信息,加 # 注释掉挂载信息,如下所示。# /dev/vdb1 /InitTest ext3 defaults 0 0 按 Esc 键退出编辑模式,输入 :wq 保存并退出。 登录 ECS管理控制台。 在左侧导航栏中,单击 实例。 选择地域。 找到需要初始化数据盘的实例,单击实例ID进入 实例详情 页。 在页面右上角,单击 停止,停止实例。 说明 如果是按量付费的VPC类型实例,而且已经开启了 按量付费实例停机不收费 功能,在 提醒 弹出框中,单击 确定。在 停止实例 对话框中,选择 停止后仍旧保留实例并继续收费。如果使用 停机不收费 模式,重新初始化数据盘后可能无法成功启动实例。 实例进入 已停止 状态后,在左侧导航栏中,单击 本实例磁盘。 找到数据盘,在 操作 列中,单击 重新初始化磁盘。 在弹出的 重新初始化磁盘 对话框里,认真阅读提示后,单击 确认重新初始化磁盘。 仅适用于主账号用户:获取并输入手机短信验证码后,单击 确认。 在左侧导航栏中,单击 实例详情。 在页面右上角,单击 启动,启动实例,完成数据盘初始化。 仅适用于Linux实例:如果数据盘创建时是一个空盘,您必须 Linux 格式化和挂载数据盘。 数据盘重新初始化后,您需要重新部署业务(包括应用和配置)从而尽快恢复业务。 相关API ReInitDisk

2019-12-01 22:57:18 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 当云盘挂载在ECS实例上时,您可以使用 重新初始化磁盘 功能将作系统盘或数据盘用的云盘恢复到创建时的状态。重新初始化后: 系统盘会恢复到刚创建时的状态。比如,如果您用公共镜像Windows Server 2008 R2创建实例,那么,重新初始化系统盘后,操作系统依然是最初的Windows Server 2008 R2,但是创建实例后安装的应用程序和产生的数据都会被删除。 说明 更换系统盘后再执行初始化,初始化的是更换后的系统盘,而不是更换前的系统盘。 作数据盘用的云盘会恢复到初始状态: 如果原来是空盘,则恢复为空盘。 如果是 通过快照创建的云盘,则会恢复到快照的状态。 如果云盘应用了自动快照策略,重新初始化后,设置仍然有效,不需要重新设置。 重新初始化磁盘不会更改ECS实例的IP地址、云盘ID。 重新初始化磁盘不会删除云盘的自动快照或手动快照,您可以使用这些快照 回滚云盘。 警告 重新初始化磁盘前必须先停止ECS实例,该操作会中断您的服务,请务必谨慎操作。 重新初始化磁盘后,云盘上的数据将会丢失,请务必提前做好数据备份,例如为云盘创建快照,详细操作,请参见 创建快照。 重新初始化系统盘 前提条件 初始化Linux实例的系统盘时,如果使用密钥对验证,您必须已经 创建 SSH 密钥对 或 导入 SSH 密钥对。 操作步骤 按以下步骤重新初始化系统盘: 登录 ECS管理控制台。 选择地域。 在左侧导航栏中,单击 实例。 找到需要初始化系统盘的实例,单击实例ID进入 实例详情 页。 在页面右上角,单击 停止,停止实例。 说明 如果是按量付费的VPC类型实例,而且已经开启了 按量付费实例停机不收费 功能,在 提醒 弹出框中,单击 确定。在 停止实例 对话框中,选择 停止后仍旧保留实例并继续收费。如果使用 停机不收费 模式,重新初始化系统盘后可能无法成功启动实例。 实例进入 已停止 状态后,在左侧导航栏中,单击 本实例磁盘。 找到系统盘,在 操作 列中,单击 重新初始化磁盘。 在弹出的 重新初始化磁盘 对话框里,完成以下设置: 设置验证方法: Windows实例:重新设置实例登录密码。可以使用旧的密码,也可以指定新的密码。 Linux实例:选择 设置密钥 或 设置密码,并绑定密钥对或重新设置密码。可以使用旧的密码,也可以指定新的密码。 (可选)安全加固:选择 免费开通。开通安全加固功能后,您的实例会自动免费加载云服务器安全组件,提供网站后门检测、异地登录提醒、暴力破解拦截等安全功能。 (可选)启动实例策略:选择 重置磁盘后启动。完成初始化后,实例会自动启动。 单击 确认重新初始化磁盘。 仅适用于主账号用户:获取并输入手机短信验证码后,单击 确认,开始初始化系统盘。 仅适用于Linux实例:如果初始化前挂载了数据盘,您需要 重新创建挂载点信息并挂载文件系统。 说明 在Linux实例中,重新初始化系统盘不会改变数据盘里的内容,但是数据盘的挂载信息会丢失,所以需要执行这步操作。 系统盘重新初始化后,您需要重新部署业务(包括应用和配置)从而尽快恢复业务。 重新初始化数据盘 重新初始化后,数据盘的状态根据云盘最初的状态以及实例的操作系统不同而异: Windows实例:无论数据盘是从快照创建而来,还是一个全新的空盘,重新初始化后,数据盘会恢复到创建后的初始状态,但是可以直接使用,不需要执行其他操作。 Linux实例: 如果数据盘创建时是一个空盘:数据盘的文件系统及内容完全丢失,您必须重新格式化、分区数据盘,并挂载数据盘分区。 说明 在这种情况下,如果重新初始化前您在 /etc/fstab 文件中写入了开机自动挂载分区的命令,那么,重新初始化后,开机自动挂载会失效,启动时一般会出现异常。所以,在重新初始化数据盘之前,您必须先在 /etc/fstab 中注释掉开机自动挂载数据盘分区的信息。 如果数据盘是从快照创建而来:数据盘会恢复到原来快照的状态,不需要重新挂载数据盘分区,但是数据盘创建成功后产生的所有数据都会丢失。 本文的步骤描述中用/dev/vdb1表示数据盘分区,/InitTest表示挂载点。您可以根据实际情况替换。 前提条件 云盘已经挂载到实例上。详细操作,请参见 挂载云盘。 操作步骤 按以下步骤重新初始化数据盘: 仅适用于Linux实例:如果数据盘创建时是一个空盘,而且您在 /etc/fstab 中添加了开机自动挂载数据盘分区的命令,那么,您必须在 /etc/fstab 里注释掉开机挂载数据盘分区的命令。操作步骤如下: 远程连接Linux实例。 运行 vim /etc/fstab。 按 i 键进入编辑模式。 找到数据盘分区挂载信息,加 # 注释掉挂载信息,如下所示。# /dev/vdb1 /InitTest ext3 defaults 0 0 按 Esc 键退出编辑模式,输入 :wq 保存并退出。 登录 ECS管理控制台。 在左侧导航栏中,单击 实例。 选择地域。 找到需要初始化数据盘的实例,单击实例ID进入 实例详情 页。 在页面右上角,单击 停止,停止实例。 说明 如果是按量付费的VPC类型实例,而且已经开启了 按量付费实例停机不收费 功能,在 提醒 弹出框中,单击 确定。在 停止实例 对话框中,选择 停止后仍旧保留实例并继续收费。如果使用 停机不收费 模式,重新初始化数据盘后可能无法成功启动实例。 实例进入 已停止 状态后,在左侧导航栏中,单击 本实例磁盘。 找到数据盘,在 操作 列中,单击 重新初始化磁盘。 在弹出的 重新初始化磁盘 对话框里,认真阅读提示后,单击 确认重新初始化磁盘。 仅适用于主账号用户:获取并输入手机短信验证码后,单击 确认。 在左侧导航栏中,单击 实例详情。 在页面右上角,单击 启动,启动实例,完成数据盘初始化。 仅适用于Linux实例:如果数据盘创建时是一个空盘,您必须 Linux 格式化和挂载数据盘。 数据盘重新初始化后,您需要重新部署业务(包括应用和配置)从而尽快恢复业务。 相关API ReInitDisk

2019-12-01 22:57:18 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站