Got

如何在非 sudo 用户下运行 docker 命令?

╄→гoц情女王★ 提交于 2020-04-26 19:33:41
当我们在一台 Linux 系统中安装了 Docker 后, 有时候会遇到下面这样的错误, 我们在运行 docker 的命令时必须加上 sudo, 例如: sudo docker ps , 但是我们其实更希望能够直接通过 docker ps 来运行 docker 命令。 那么我们可以如何解决这样的问题呢? 可以参考如下步骤: 创建 docker 的用户组: sudo groupadd docker 将当前 user 加入 docker 的用户组: sudo usermod -aG docker $USER 重启 docker: sudo snap restart docker / sudo service docker restart / sudo /etc/init.d/docker restart 从当前 shell 中登出用户并再次登陆,以重新评估当前的用户组的权限。 切换当前会话到新 group 或者重启会话。可以通过 newgrp - docker 切换当前用户组到 docker 用户组。 注意:这一步是必须的,否则 groups 命令获取到的是缓存的用户组信息,刚添加的用户组信息可能还未能生效,所以 docker ps 执行时同样会有错。 一般情况下,操作到这一步就可以解决该问题了,但有时还会遇到下面的问题,导致仍然无法直接通过 docker ps 访问 docker

耿建超英语语法---名词性从句

别来无恙 提交于 2020-04-26 08:31:30
1 从句的类型   我们之前讲过句子成分有8种,其中“谓语,补语”不能用句子替代,其余6种均可,所以从句类型有6种,3种称为名词性从句,如下图所示: 注: 从句永远是一个完整的句子!!! 2 名词性从句的共同特点 注: (1) 陈述语气: 如果句子是陈述句,不需要做任何改动;如果句子是疑问句,要将时表词与主语换个位置! (2)从句是特殊疑问时,连词“whose,which”用的不多。 3 主语从句 关于主语从句,有4点需要说明: (1)后面的动词一般是使动词( 前边讲过 )或者make。 举例: 他经常半夜给我打电话让我很恼火---that he calls me at midnight annoys me.(使动词) 他来不来没有什么差别---whether he will come makes no difference.(make) (2)所有的使动词都可以变成make的形式,但是只有形容词的时候,只能用make。 在举一个只能使用make的例子: 他说的话让我很生气---what he said made me angry. (3)主语从句中从句是一般疑问句时,不能使用if,只能使用wether。 (4)主语从句中的谓语动词使用单数。 4 宾语从句 关于宾语从句,有8点需要说明: (1)宾语从句的位置 (2)宾语从句的时态 注:只有宾语从句有这个要求,即“主句是过去时态

耿建超英语语法---陈述句(2)

穿精又带淫゛_ 提交于 2020-04-26 08:08:41
1 句子种类 1.1 按结构划分 简单句   he is a boy 并列句   he is a boy , and he came here. 复合句(从句,非谓语动词)   he is the boy who came here 1.2 按类型划分 陈述句(肯定句,否定句) 疑问句(特殊疑问句,一般疑问句) 2 陈述句的本质 5种句子结构 8种句子成分 11类词性 具体的如下图所示: 其中5种句子结构在 耿建超英语语法---陈述句(1) 已经讲过,下边介绍8种句子成分:其中 主语,谓语,宾语,表语,补语 已经讲述过,在重新总结一下,如下: 主语:名词,代词 谓语:动词,be 宾语:名词,代词 表语:名词,形容词,副词,介词短语,done 补语:名词,形容词,副词,介词短语,done 2.1 同位语 关于同位语有两点需要说明: 同位名词(主语,宾语,表语) 同位谁,放在谁后边,加上逗号 举例体会一下: 同位主语 Mr.smith ,my teacher,will not come tomorrow. 同位宾语 i met Tom,one of my friend. 同位表语 this is my teacher,Mr.smith. 2.2 定语 对定语来说,有两点需要说明: 对名词进行修饰限定的词语 前置定语,后置定语 那么都什么词性可以作定语呢?见下图: 2.3 状语 关于状语

python:使用PyInstaller打包成exe文件,以及TypeError: an integer is required (got type bytes)异常解决

左心房为你撑大大i 提交于 2020-04-24 22:57:12
用python3.6以上使用pyinstaller打包会出现 TypeError: an integer is required (got type bytes)异常, 解决办法如下: 1. 安装pyinstaller pip install PyInstaller 2. 打包单个文件 PyInstaller -F xxx.py 3. 出现异常 TypeError: an integer is requried(got type bytes) 原因:pyinstaller版本问题 解决方案:命令行输入如下命令卸载之前版本pyinstaller,更新为最新版本 Tips: 出现异常请更新pip:python -m pip install --upgrade pip pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz 4.再次执行打包命令: pyinstaller -F 123.py 打包成功! 来源: oschina 链接: https://my.oschina.net/u/4365632/blog/3319599

从一个CFS调度案例谈Linux系统卡顿的根源

最后都变了- 提交于 2020-04-24 09:49:44
Linux系统是一个让人感觉卡顿的系统,先别怼,让我说完: 卡顿的原因在于Linux内核的调度器从来不关注业务场景! Linux内核只能看到机器而不愿意看到应用。它倾向于自下而上从CPU角度提高吞吐,而不是自上而下从业务角度提高用户体验。 拟人来看,Linux是一个好程序员,但不是一个好经理。 万事必有因缘,Linux就是一个程序员发起一帮程序员折腾起来的,几乎没有穿西装的经理之类的人参与。 程序员天天挂在嘴边的就是性能,时间复杂度,cache利用率,CPU,内存,反之,经理每天吆喝的就是客户,客户,客户,体验,体验,体验! 前天晚上下班回到住处已经很晚,姓刘的副经理请教了我一个问题,说是他在调试一个消息队列组件,涉及到生产者,消费者等多个相互配合的线程,非常复杂,部署上线后,发现一个奇怪的问题: 整个系统资源似乎被该组件的线程独占,该消息队列组件的效率非常高,但其系统非常卡顿! 我问他有没有部署cgroup,cpuset之类的配置,他说没有。 我又问他该消息队列组件一共有多少线程,他说不多,不超过20个。 我又问…他说… … 我感到很奇怪,我告诉刘副经理说让我登录机器调试下试试看,他并没有同意,只是能尽可能多的告诉我细节,我来远程协助。 … 我并不懂消息队列,我也不懂任何的中间件,调试任何一个此类系统对我而言是无能为力的,我也感到遗憾

[apue] getopt 可能重排参数

落爺英雄遲暮 提交于 2020-04-23 03:26:38
看第21章时,介绍到了解析命令行的神器 getopt,了解了 linux 下处理通用命令行的方法。 命令行可分为参数与选项,其中不带 - 或 -- 前缀的为参数,对一个命令而言数量是固定的,多个参数之间的顺序也是固定的(不然命令没法区分);而选项就是带 - 或 -- 前缀的,可有可没有的,由用户的输入决定,另外选项也可以有自己的跟随参数,它们之间是没有顺序的。比如说: > wget -c http://strawberryperl.com/download/5.30.2.1/strawberry-perl-5.30.2.1-32bit.msi 这个 wget 命令行有两个输入,一个是选项 -c,表示断点续传;一个是参数 url,就是后面这一串下载的地址。 当然这只是一个简单的例子,并没有多个参数,也没有多个选项,选项也没有带自己的参数。后面我们会自己做一个复杂的例子,来做验证。 回到 getopt,它的作用就是简化对这些输入的处理。 如何简化呢,就是通过定义一个可接受的选项“模板”,然后通过不停调用 getopt 来将所有选项解析出来, 最后剩下的就是不能被识别的参数了,但是这种场景就简单了,只需按顺序处理它们即可。 下面是一个用来作验证的例子: getopt.c 1 #include " ../apue.h " 2 int main ( int argc, char * argv

[apue] getopt 可能重排参数

元气小坏坏 提交于 2020-04-23 01:42:47
看第21章时,介绍到了解析命令行的神器 getopt,了解了 linux 下处理通用命令行的方法。 命令行可分为参数与选项,其中不带 - 或 -- 前缀的为参数,对一个命令而言数量是固定的,多个参数之间的顺序也是固定的(不然命令没法区分);而选项就是带 - 或 -- 前缀的,可有可没有的,由用户的输入决定,另外选项也可以有自己的跟随参数,它们之间是没有顺序的。比如说: > wget -c http://strawberryperl.com/download/5.30.2.1/strawberry-perl-5.30.2.1-32bit.msi 这个 wget 命令行有两个输入,一个是选项 -c,表示断点续传;一个是参数 url,就是后面这一串下载的地址。 当然这只是一个简单的例子,并没有多个参数,也没有多个选项,选项也没有带自己的参数。后面我们会自己做一个复杂的例子,来做验证。 回到 getopt,它的作用就是简化对这些输入的处理。 如何简化呢,就是通过定义一个可接受的选项“模板”,然后通过不停调用 getopt 来将所有选项解析出来, 最后剩下的就是不能被识别的参数了,但是这种场景就简单了,只需按顺序处理它们即可。 下面是一个用来作验证的例子: getopt.c 1 #include " ../apue.h " 2 int main ( int argc, char * argv

Asp.net Core MVC(四)

☆樱花仙子☆ 提交于 2020-04-19 04:26:17
上一篇说的是asp.net mvc核心UseMvc的过程,末尾想捋一下asp.net核心的路由流转过程,现在看来还是要准备下一个代码,熟悉了代码,那么整个流转过程就通了〜 不多说,今儿先看下,RouteContext: private RouteData _routeData; public RouteContext(HttpContext httpContext) { HttpContext = httpContext; RouteData = new RouteData(); } public RequestDelegate Handler { get ; set ; } public HttpContext HttpContext { get ; } public RouteData RouteData { get { return _routeData; } set { if (value == null ) { throw new ArgumentNullException(nameof(RouteData)); } _routeData = value; } } 这里可以理解RouteContext(路由子网)就是路由的环境。 其中包含三个属性器,RouteData,RequestDelegate与HttpContext。 那么什么时候设置路由的某些呢呢? 个人理解是

Perl IO:操作系统层次的IO

三世轮回 提交于 2020-04-13 16:50:39
【今日推荐】:为什么一到面试就懵逼!>>> sysopen() open()和sysopen()都打开文件句柄,open()是比较高层次的打开文件句柄,sysopen()相对要底层一点。但 它们打开的文件句柄并没有区别 ,只不过sysopen()有一些自己的特性:可以使用几个open()没有的flag,可以指定文件被创建时的权限等。 一定要注意的是,io buffer和open()、sysopen()无关,而是和读、写的方式有关,例如read()、getc()以及行读取都使用io buffer,而sysread、syswrite则直接绕过io buffer。 例如: sysopen HANDLE, "file.txt", O_RDONLY; open HANDLE, $filename, O_WRONLY|O_CREAT, 0644; open HANDLE, $filename, O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH; 其中sysopen支持的flag部分有以下几种: # 三种基本读写模式 O_RDONLY O_RDWR O_WRONLY # 配合基本读写模式的额外模式 O_APPEND O_TRUNC O_CREAT O_EXCL 只能配合CREAT使用,只有文件 不存在时才创建,文件存在时直 接失败而不是打开它 O

Perl进程间通信

三世轮回 提交于 2020-04-13 16:17:56
【今日推荐】:为什么一到面试就懵逼!>>> 不同进程之间的通信或进程间通信(InterProcess Communication, IPC),是一个涉及多个方面的主题。Perl提供了多种进程间通信的方式,本文将逐一介绍。本文的内容主体来自于《Pro Perl》的第21章。 单向管道(unidirectional pipe) 管道是两个文件描述符(文件句柄)通过一根管道连接起来,一端的文件句柄读,另一端的文件句柄写,从而实现进程间的通信。 Perl使用 pipe 函数可以创建单向管道,也就是一端只可读、一端只可写的管道,所以它需要两个文件句柄参数。 pipe READ_FH, WRITE_FH; 默认情况下,Perl会对IO进行缓冲,向写入端文件句柄写入数据时会暂时缓冲在文件句柄的缓冲中,而不会立即放进管道,也就是说读入端无法立即读取到这段数据。对于管道这种数据实时通信的机制, 应该关闭缓冲,而是让它在需要写入数据的时候立即刷到管道中 。 pipe READ_FH, WRITE_FH; # when write to WRITE_FH select WRITE_FH; $| = 1; # 或者使用IO::Handle设置autoflush(1) WRITE_FH->autoflush(1); 下面是一个父子进程间通过单向pipe通信的示例:父进程写、子进程读 #!/usr/bin