前言

本文记录一些日常使用linux的一些点。

系统负载评估

理解Linux系统负荷

查看 ps -ef

[root@deployer ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 2018 ? 00:00:29 /usr/lib/systemd/systemd --system --deserialize 21
root 2 0 0 2018 ? 00:00:00 [kthreadd]
root 3 2 0 2018 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 2018 ? 00:00:00 [kworker/0:0H]
root 9 2 0 2018 ? 00:00:40 [rcu_sched]
......
root 337 2 0 2018 ? 00:00:01 [kworker/3:1H]
root 380 1 0 2018 ? 00:00:00 /usr/lib/systemd/systemd-udevd
root 415 1 0 2018 ? 00:00:01 /sbin/auditd
root 498 1 0 2018 ? 00:00:03 /usr/lib/systemd/systemd-logind
......
root@pts/0
root 32794 32792 0 Jan10 pts/0 00:00:00 -bash
root 32901 32794 0 00:01 pts/0 00:00:00 ps -ef

三类进程

  1. pid=1 init进程Systemd
  2. pid=2 内核线程kthreadd,用户态不带中括号, 内核态带中括号
  3. tty 带问号的,说明不是前台启动的,一般都是后台启动的服务

Linux中的引号

首先,单引号和双引号,都是为了解决中间有空格的问题。

  • 单引号

    当shell碰到第一个单引号时,它忽略掉其后直到右引号的所有特殊字符

  • 双引号

    双引号只要求忽略大多数,具体说,括在双引号中的三种特殊字符不被忽略:美元符号,反斜杠和反引号

  • 反引号

    命令替换:在执行一条命令时,会先将其中反引号之间的语句,或者是$()中的语句当作命令执行一遍,再将结果加入到原命令中重新执行。其中,$()格式受到POSIX标准支持,也利于嵌套。比如docker rm -f $(docker ps -aq)。常见的用法:将命令的输出结果赋给一个变量

      var=`command`

软件包安装工具

  • rpm & yum 后者可以解决依赖关系
  • dpkg & apt 后者可以解决依赖关系

pid文件

  • pid文件内容:pid文件为文本文件,内容只有一行, 记录了该进程的ID。

  • pid文件作用:防止进程启动多个副本。只有获得pid文件(固定路径固定文件名)写入权限(F_WRLCK)的进程才能正常启动并把自身的PID写入该文件中。其它同一个程序的多余进程则自动退出。

/etc/issue和/etc/motd

登陆linux的欢迎界面可由/etc/issue和/etc/motd控制。/etc/issue文件的使用方法与/etc/motd文件相差不大,它们的主要区别在于:当一个网络用户或通过串口登录系统上时,/etc/issue的文件内容显示在login提示符之前,而/etc/motd内容显示在用户成功登录系统之后。

socket文件

socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIXDomain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程。这是因为,IPC机制本质上是可靠的通讯,而网络协议是为不可靠的通讯设计的。UNIX Domain Socket也提供面向流和面向数据包两种API接口,类似于TCP和UDP,但是面向消息的UNIX Domain Socket也是可靠的,消息既不会丢失也不会顺序错乱。

UNIX Domain Socket是全双工的,API接口语义丰富,相比其它IPC机制有明显的优越性,目前已成为使用最广泛的IPC机制,比如X Window服务器和GUI程序之间就是通过UNIX Domain Socket通讯的。

来源于:[本地socket unix domain socket][]

socket文件,只有在本级通信(AF_UNIX)时才会用到;对于远程TCP通信(AF_INET)来说,是不存在sock文件一说的。以mysql.sock文件为例,假定AB两台主机,mysql服务运行在B主机上。

  • 那么对于A主机来说,访问mysql服务只能通过ip:port的方式。
  • 对于B主机上程序来说,访问mysql服务除了通过localhost:port外,还可以通过socket文件方式。后者的好处是:如果通过mysql.conf更改mysql的服务端口,那么mysql服务重新启动时将生成新的socket文件,对于程序来说,不用做任何改变。而前者则需要改变程序中的端口设置。

另外,指定socket文件url一个例子:unix:///home/docker/docker.sock,其中unix://类似于tcp://,后面的大专栏  Linux中的一些点de class="highlighter-rouge">/home/docker/docker.sock表明socket文件的路径。

某些linux应用运行前,我们要为其配置监听的ip和端口,而支持sock文件后,我们只需为其配置sock文件即可,比如:

$ sudo /usr/bin/docker –d –H unix:///home/docker/docker.sock &

而docker client在访问docker daemon时,需要:

$ docker –H unix:///home/docker/docker.sock ps –a

rsync

负责进行文件同步的

rsync -vzrtopgu --delete dir_path1 dir_path2

注意,dir_path1中的改变都会被同步到dir_path2中,但是,如果dir_path2改变,并且dir_path2在命令中的先后顺序不变的话,其改变不会被同步到dir_path1中。也就是说,这种同步是单向的,以dir_path1为准。

source和. 命令##

有两种方法执行shell scripts:

  1. 一种是新产生一个shell,然后执行相应的shell scripts
  2. 一种是在当前shell下执行,不再启用其他shell

假设一文件file,文件内容为echo "test!!!!!!!!!!!!!!!!!!!!!":

  1. 没有可执行权限

1.1. ./file 输出Permission denied

1.2. . ./file 执行成功

1.3. source file 执行成功

  1. 具有可执行权限,file添加一行为a=test

2.1 ./file;echo $a 输出”test!!!!!!!!!!!!!!!!!!!!!”`,没有输出$a

2.2 . ./file;echo $a he source file;echo $a则都输出

./file中的点代表当前路径的意思,会产生一个新的子shell来执行file,也即file中如果设置环境变量,当前shell无法得到。子shell可以继承父shell的环境变量值。与此同时,file必须具有可执行权限。

. ./file中第一个点,代表source,第二个点代表当前路径。file不需要具备可执行权限,file中的所有指令将在当前shell中执行。也即如果file设置环境变量,当前shell也能感知到。

一次创建多个文件夹

mkdir -p /etc/confd/{conf.d,templates}

创建并管理自己的后台程序

/sbin/start-stop-daemon

inotifywait

监控某个文件或目录的改变

expect

进行自动化的人机交互,对于设定好的特定匹配形式,以相匹配的动作以应对。

测试某个远程主机的特定端口是否开放

  1. telnet

    在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。

    • 使用telnet操作192.168.56.153上的redis服务

        user@ubuntu:~$ telnet 192.168.56.153 6379
      Trying 192.168.56.153...
      Connected to 192.168.56.153.
      Escape character is '^]'.
      get name
      $3
      lqk
    • 直接在192.168.56.153上操作redis

        user@ubuntu:~$ redis-cli get name
      "lqk"
    • 退出telnet

      1. ctrl + ]
      2. telnet > quit // 回车
  2. 使用nc命令

     user@ubuntu:~$ nc -z 192.168.56.153 6379
    user@ubuntu:~$ echo $?
    0

    返回1 表示连接失败(或者说,端口没有开启)

引用

本地socket unix domain socket

让进程在后台可靠运行的几种方法


Linux中的一些点的更多相关文章

  1. 在 Linux 中安装 Oracle JDK 8 以及 JVM 的类加载机制

    参考资料 该文中的内容来源于 Oracle 的官方文档 Java SE Tools Reference .Oracle 在 Java 方面的文档是非常完善的.对 Java 8 感兴趣的朋友,可以直接找 ...

  2. Linux中find常见用法示例

    ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数: pathname: find命 ...

  3. Linux中检索文件

    1 , Use locate command It is a fast way to find the files location, but if a file just created ,it w ...

  4. 如何在Linux中搭建禅道8.4.1(httpd+php+mysql)

    1.安装httpd 命令:yum install httpd 然后一路y即可 2.安装php 命令:yum install php   3.安装php-mysql 命令:yum install php ...

  5. Linux中的用户和用户组

      在Linux中,有三种用户: Root 用户:也称为超级用户,对系统拥有完全的控制权限.超级用户可以不受限制的运行任何命令.Root 用户可以看做是系统管理员. 系统用户:系统用户是Linux运行 ...

  6. linux中shell变量$#,$@,$0,$1,$2的含义解释

    linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行 ...

  7. 在linux中设置静态ip地址

    在linux中设置静态ip地址1.在终端中输入:vi /etc/sysconfig/network-scripts/ifcfg-eth0 2.开始编辑,填写ip地址.子网掩码.网关.DNS等[root ...

  8. windows和linux中搭建python集成开发环境IDE——如何设置多个python环境

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  9. linux 中部署ant编译的包中缺少问题

    今天遇到在window上部署ant编译的包,能运行正常,但部署在linux中出现跳不进jsp中,出现404问题,后来经过排查在jsp中<%@taglib prefix="c" ...

  10. 在Linux中运行Nancy应用程序

    最近在研究如何将.NET应用程序移植到非Windows操作系统中运行,逐渐会写一些文章出来.目前还没有太深的研究,所以这些文章大多主要是记录我的一些实验. 这篇文章记录了我如何利用NancyFx编写一 ...

随机推荐

  1. python装饰器的参数传递

    被装饰器装饰的函数名即使没有被调用(因为有@xxx,会触发运行装饰器),(装饰器工厂函数)定义装饰器的代码已经运行了(最内部的那个函数并没有运行)(把被装饰的原函数引用赋值给了装饰器内部的那个函数名) ...

  2. WEB网站的favicon.ico的设置

    一.什么是favicon.ico Favicon是Favorites Icon的缩写,favicon.ico是指显示在浏览器收藏夹和地址栏网站网址前面的个性化图标,常被成为网页小图标.网站缩略图标或者 ...

  3. document.write的时机

    document.write第一次加载进入页面的时候会紧跟文档,写入内容.但是如果在文档已经加载完毕之后,再通过点击的方式调用函数的话会直接把整个文档覆盖掉.

  4. CSP2019爆零记

    Upd:2019.10.19 初赛 Day 0 CSP-S膜你赛(然而只考一个小时xs) 写(xia)完(xie)有51.5 很虚,很慌 不过CSP-J的模拟有90?(所以CSP-S模拟的码风怎么这么 ...

  5. Vue 项目中应用

    Vue使用 一.vue生命周期 # main.js import Vue from 'vue' import App from './App.vue' import router from './ro ...

  6. PHP 5.3 新特性

    1 PHP 5.3中的新特性 1.1 支持命名空间 (Namespace) 毫无疑问,命名空间是PHP5.3所带来的最重要的新特性. 在PHP5.3中,则只需要指定不同的命名空间即可,命名空间的分隔符 ...

  7. Spring和MyBatis的集成

    Spring和MyBatis的整合   1. Spring和各个框架的整合 Spring目前是JavaWeb开发中最终的框架,提供一站式服务,可以其他各个框架整合集成 Spring整合方案 1.1.  ...

  8. soap,restful 两种web service实现方式比较

    web service服务 目前常用的实现web service的方式有有两种 1.SOAP 原始的web service标准,一堆标准,不过这些标准是在开发框架中实现的,有上层接口,可以调用 2.R ...

  9. DOM(Document Object Model)

    DOM(Document Object Model):    结点的概念:整个文档就是由层次不同的多个节点组成,可以说结点代表了全部内容.    结点类型        1.元素结点 对于元素结点的n ...

  10. LoggingService

    package me.zhengjie.common.aop.log; import java.lang.annotation.ElementType; import java.lang.annota ...