linux

linux与windows的区别

linux的文件结构

Linux基本命令

  • ls: 列出目录
  • cd: 切换目录
  • pwd: 显示当前目录
  • mkdir: 创建一个新的目录
  • rmdir: 删除一个空的目录
    • rmdir -r: 删除目录及目录下所有子文件
    • rmdir -rf: 强制删除目录及目录下所有子文件
  • cp: 复制文件或目录
  • rm: 移除文件或目录
  • mv: 移动文件与目录,或者修改文件与目录的名称

shell基础

shell是与linux交互的桥梁,shell是比较底层的一个工具,可以与linux内核进行交互

常见的shell

  • bourne Shell(/user/bin/sh或/bin/sh)
  • Bourne Ahaim Shell(/bin/bash) --->最常用、免费、功能强大

  • C Shell(/user/bin/csh)
  • K Shell(user/bin/ksh)
  • Shell for Root(/sbin/sh)

运行shell

  • chmod +x ./test.sh #给与脚本具有执行的权限
  • 运行方法1>>>./test.sh # 执行脚本
    • 使用 ./ 运行shell,它会自动识别是使用哪一种shell
  • 运行方法2>>>/bin/sh test.sh #指定shell运行,脚本中的第一行就会失效

linux进程与线程

进程

  • 可执行程序的运行态

    • 当linux文件(可执行程序、shell脚本)被系统调度、即,你去运行它的时候,操作系统会解析这个文件并判断文件中的指令通过内存、cpu去进行调度和运行,这就是一个可执行程序的运行态,此时它就从一个静态的文件变成一个动态化的进程
  • 操作系统调度的基本单位
    • 进程可以从文件中提取出所需要的数据、指令,数据放到内存、cpu去调度指令,然后指令再去操纵内存中的数据,从而完成复杂的数据处理
  • 线程容器
    • 一个进程,它最底层的单元是线程,cpu在去调度的时候,调度的是其中的一个线程,所以,进程的本身是一个线程的容器,它包含线程,同时也包含线程之外的一些指令和数据
  • 进程本身包含指令、数据等资源
    • 进程由内核去生成、进程包含代码、指令、数据、堆栈等,内核会对进程对象进行调度维护

线程

  • 进程中被执行的最小单元
  • cpu调度的基本单位
  • 线程带有指令、数据等资源

进程的生命周期

  • created: 当执行一个脚本、程序的时候 (./demo.py)内核会调度demo.py文件,创建进程,操作系统会维护这些进程的状态
  • ready:当进程被创建之后,就会进入ready状态,即可以被cpu进行调度,此时,当cpu空闲出来或者跑完其他指令,就会运行demo.py,大部分cpu都基于分片运行,根据给与的指令进行不断的运行,它是并发来进行执行的
  • running:从ready到running中,有一个状态切换,比如在运行的过程中需要等待磁盘、或者遇到外部指令强行被终止,此时会重新回到ready,或者进入waiting的状态
  • waiting: 当进程进入到waiting状态的时候,直到满足条件之后,才会重新再进入ready状态
  • terminated: 当给与一些指令之后,比如kill进程,就会进入正常的一个状态,terminated

常见进程管理命令

  • ps: 进程列表快照

    • 列出当前所有进程快照

      • unix风格参数:ps -ef | less 找到当前所有进程列表

      • bsd风格参数: ps aux |less 比 -ef更详细

      • ps au -m :能显示进程的线程数

    • gnu风格参数: ps --pid pidlist

    • ps -o :自定义输出指标

      • ps -o pid,ppid,psr,thcount,tid,cmd -M

  • top: 交互式进程观察

    • 可以查看当前进程状态
  • kill: 结束进程

    • 结束进程
  • fg: 进程切换到前台

    • 前台进程:当进程具有交互界面
  • bg: 进程切换到后台

    • 后台进程:脱离桌面,但还处于执行状态
  • ctrl z 挂起进程

|

|

|

|

ps:

下一篇:linux常用命令之文件处理

linux与shell介绍 - 进程与线程的更多相关文章

  1. .Neter玩转Linux系列之四:Linux下shell介绍以及TCP、IP基础

    基础篇 .Neter玩转Linux系列之一:初识Linux .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限 .Neter玩转Linux系列之三:Linux下的分区讲解 .N ...

  2. (转)如何在Linux中统计一个进程的线程数

    如何在Linux中统计一个进程的线程数 原文:http://os.51cto.com/art/201509/491728.htm 我正在运行一个程序,它在运行时会派生出多个线程.我想知道程序在运行时会 ...

  3. 如何在 Linux 中统计一个进程的线程数

    编译自:http://ask.xmodulo.com/number-of-threads-process-linux.html作者: Dan Nanni原创:LCTT https://linux.cn ...

  4. 在Linux上显示某个进程的线程的几种方式

    方法一:PS 在ps命令中,"-T"选项可以开启线程查看.下面的命令列出了由进程号为的进程创建的所有线程. 1.$ ps -T -p 方法二: Top top命令可以实时显示各个线 ...

  5. Linux centos7 shell 介绍、 命令历史、命令补全和别名、通配符、输入输出重定向

    一.shell介绍 shell脚本是日常Linux系统管理工作中必不可少的,不会shell,就不是一个合格管理员. shell是系统跟计算机硬件交互使用的中间介质,一个系统工具.实际上在shell和计 ...

  6. 06 Linux下Shell介绍

    一.概述 每个人在成功登陆Linux后,系统会出现不同的提示符号,例如$,~,#等,然后你就可以开始输入需要的命令.若命令正确,系统就会依据命令的要求来执行,直到注销系统为止,在登陆到注销期间,输入的 ...

  7. 如何在Linux中统计一个进程的线程数(转)

    方法一: /proc proc 伪文件系统,它驻留在 /proc 目录,这是最简单的方法来查看任何活动进程的线程数. /proc 目录以可读文本文件形式输出,提供现有进程和系统硬件相关的信息如 CPU ...

  8. 【Linux】程序、进程和线程的区别

    程序.进程和线程的区别 程序是一组指令及参数的集合,指令按照既定的逻辑控制计算机运行.进程则是运行着的程序,是操作系统执行的基本单位.线程则是为了节省资源而可以在同一个进程中共享资源的一个执行单位. ...

  9. Linux下查看某个进程的线程数量(转)

    转自:https://www.cnblogs.com/caosiyang/archive/2012/10/15/2724585.html 有些时候需要确实进程内部当前运行着多少线程,那么以下几个方法值 ...

随机推荐

  1. Java中List排序的3种方法

    在某些特殊的场景下,我们需要在 Java 程序中对 List 集合进行排序操作.比如从第三方接口中获取所有用户的列表,但列表默认是以用户编号从小到大进行排序的,而我们的系统需要按照用户的年龄从大到小进 ...

  2. 解决Tensorflow ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type numpy.ndarray)

    问题描述 在将一个数组送入tensorflow训练时,报错如下: ValueError: Failed to convert a NumPy array to a Tensor (Unsupporte ...

  3. libevent源码学习(2):内存管理

    目录 内存管理函数 函数声明 event-config.h 函数定义 event_mm_malloc_ event_mm_calloc_ event_mm_strdup_ event_mm_reall ...

  4. 复杂SQL案例:用户退款信息查询

    供参考: select t3.course_id 课程id, t3.user_id 用户ID, u.user_full_name 姓名, -- u.phone, concat(u.company,' ...

  5. AcWing429. 奖学金

    题目: 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金. 期末,每个学生都有3门课的成绩:语文.数学.英语. 先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从 ...

  6. 使用mysql查询语句统计数据,如果是null值则赋值为0

    select IFNULL(sum(total_view),0) from 如果统计total_view这列为null ,则返回默认值0

  7. SpringBoot项目给静态变量static注入@Value

    @value不能直接注入值给静态属性,spring 不允许/不支持把值注入到静态变量中:spring支持set方法注入,我们可以利用非静态setter 方法注入静态变量 @Component publ ...

  8. 【LeetCode】724. Find Pivot Index 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 先求和,再遍历 日期 题目地址:https://le ...

  9. hdu-1237简单计算器(栈的运用)

    http://acm.hdu.edu.cn/showproblem.php?pid=1237 简单的栈的运用. 首先将数字和运算符分离,分别保存在两个数组中,然后按原来的式子的顺序,首先将第一个数和第 ...

  10. golang切片的一些自问自答

    你好,我是轩脉刃.这篇是关于go切片的一些问题和回答. go的切片基本上是代码中使用最多的一种数据结构了,使用这种数据结构有哪些要注意的点,这个是非常必要了解的东西.基本上,以前写的一篇博客 http ...