高级操作

本章节我们将介绍以下几个概念:进程、用户和用户组、重定向、管道。

一、进程

进程是Linux操作系统的核心概念,进程的创建和终止是Linux系统处理外部命令的唯一机制。

1、进程概述

Linux是多任务操作系统,每个运行着的程序实例就是一个进程。每当执行一个外部命令时,系统就为其创建一个进程。Linux进程都需要从某个进程创建出来,此创建者称为“父进程”,被创建的进程称为“子进程”。

1.1 进程启动

进程的启动有以下两种方式:
手工启动

  • 前台启动,直接在终端中输入程序名,例如:vim;
  • 后台启动,输入程序名时加“&”,例如:vim&;

调度启动

  • at、batch、cron调度,指定系统在特定时间运行程序;(参见1.2 作业控制)
1.2 作业控制

用户有时需要对系统进行一些比较费时而且占用系统资源的维护工作,这些工作适合在系统空闲时间运行,例如深夜。这时候用户就可以使用“作业”机制,事先进行调度安排,指定任务运行的时间,到时系统会自动完成一切工作。Linux中常用at、batch和crontab命令进行作业控制。

1.2.1 at
  • at,在指定的精确时间执行;
    at [option] [time]
    -d,删除指定的调度作业;
    -f file,从指定文件中读取执行的命令;
    time,表示方法有绝对表示法和相对表示法,at 11:15;at
    now+30 minute

    xuqing@master: ~ $ at 14:00
    warning: commands will be executed using /bin/sh
    at> touch test.txt                     ##等待用户进一步输入命令,创建空文档用touch;
    at> <EOT>                              ##按下Ctrl+D键,结束at命令
    job 6 at wed Jan 23 14:00:00 2017      ##job 6是系统自动
    xuqing@master: ~ $ atq                 ##显示队列中的作业信息
    6  wed Jan 23 14:00:00 2017 a xuqing
    xuqing@master: ~ $ atrm 6              ##删除队列作业
    
1.2.2 batch
  • batch,在系统负载较低的时候执行;
    batch,不需要任何参数;其运行方式仍然是按照在at命令下输入,与上述完全相同;
1.2.3 crontab
  • crontab,用于创建周期运行的任务作业,而at和batch命令设定的任务只能执行一次;

    xuqing@master: ~ $ crontab -e    ##创建作业
    no crontab for xuqing - using an empty one
    Select an editor. To change later, run 'select-editor'.
      1. /bin/ed
      2. /bin/nano
      3. /usr/bin/vim.basic
      4. /usr/bin/vim.tiny
    Choose 1-4 [2] :3
    

执行上述代码后,将打开编辑器。需要按照如下固定格式输入要执行的任务:
分钟 小时 日期 月份 星期 命令
20 10 * * * touch test.txt (* 表示任何时间,每天10:20创建空白文件test.txt)
crontab -l,查询作业

2、进程管理

Linux的进程管理是通过进程管理工具实现的,主要有以下工具命令:

  • ps,查询列举进程
  • pgrep,按名字查询进程
  • pstree,显示进程树
2.1 ps命令

ps命令用于查询进程,显示与当前终端相关的进程,其语法格式如下:
ps [option] [name of process]

  • a,显示终端上的所有进程,包括其他用户的进程;

  • u,按用户名和启动时间的顺序来显示进程;

  • x,显示无控制终端的进程;

  • l,长格式显示;

  • -e,显示所有进程;

  • -f,全格式输出,即可以看到进程的命令行;

  • -u,有效使用者相关的进程;

    xuqing@master: ~ $ ps aux
    USER   PID  %CPU %MEM VSZ RSS TTY  STAT START TIME COMMAND
    root    1    0.0 0.1 3052 1800 ?    Ss  09:54 0.01 /sbin/init
    

USER,运行进程的用户;
PID,进程的ID号;
%CPU,进程使用的CPU资源百分比;
%MEM ,进程使用的内存资源百分比;
VSZ ,进程使用的虚拟内存(KB);
RSS ,进程使用的物理内存的大小;
TTY ,进程关联的终端,如果没有终端,则显示“?”;
STAT ,进程目前的状态,R正在运行,S休眠,T停止,Z僵死
START ,开始的时间;
TIME ,到目前为止程序已经运行的时间,或休眠和停止之间运行的时间。
COMMAND,进程的程序名;

2.2 pgrep 命令

pgrep命令通过程序名字来查询进程,一般用来判断程序是否正在运行,其语法格式如下:
pgrep [option] [name of process]

  • -l,列出程序名和进程ID;
  • -o,程序名匹配最早生成的进程;
  • -n,程序名匹配最新生成的进程;
2.3 pstree命令

使用pstree命令可以以树形结构显示进程间的关系。pstree有很多参数,一般情况下直接使用pstree命令获取进程间的关系情况。

2.4 kill命令

当某个进程由于某种原因需要用户干预以提前终止它,可以使用kill命令。一般结合ps或者pgrep命令找到ID号,然后用kill命令终止它。其语法格式如下:
kill [信号代码] [ID号]
信号代码是-9,可以省略,表示强制终止;

3、用户和用户组

Linux是多用户操作系统,多个用户可以同时使用系统,而且系统中每个文件(包括目录)和进程都归属于某一用户,因此用户和组的管理是保证Linux系统被安全使用的重要方面。管理用户和组主要是指用户和组的创建操作,另外,Ubuntu采用sudo工具管理用户的系统使用权限。

3.1 图形化操作

使用图形化操作进行用户和组的管理,其具体步骤比较简单,此处省略。

3.2 useradd命令

useradd命令用于创建用户,其语法格式如下:
useradd [option] [username]
其中,用户名是要新建的用户账号名。
-c <注释性描述>,指定一段注释性描述;
-d <用户主目录>,指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录;
-g <组名>,指定用户所属的组;
-s <Shell>,指定用户的登录Shell;
例如:创建新用户book,并指定其主目录是/home/book。

  xuqing@master: ~ $ sudo useradd -d /home/book -m book
3.2 userdel 命令

如果一个用户账号不再使用,可以使用userdel命令删除用户,其语法格式如下:
userdel [option] <username>
-r,把用户的主目录一起删除。

  xuqing@master: ~ $ sudo userdel -r book
3.3 usermod 命令

根据实际情况,当需要修改用户账号的属性(如用户目录、登录shell、所属组等)时,可以使用usermod命令,其语法格式如下:
usermod [option] [username]
-c <注释性描述>,指定一段注释性描述;
-d <用户主目录>,指定用户主目录;
-g <组名>,指定用户所属的组;
-s <Shell>,指定用户登录Shell;
例如:将book的主目录修改为abc。

  xuqing@master: ~ $ usermod -d /home/abc book
3.4 passwd 命令

passwd命令用于指定或修改用户账号的口令,其语法格式如下:
passwd [option] [username]

  • -l,锁定口令,即禁用账号;

  • -u,口令解锁;

  • -d,使账号无口令;

  • -f,强迫用户下次登录时修改口令;
    例如:当前用户修改口令。

    xuqing@master: ~ $ passwd
    
3.5 groupadd 命令

groupadd命令用来新建用户组,其常见的语法格式如下:
groupadd <groupname>

  xuqing@master: ~ $ sudo groupadd ABC
3.6 groupdel 命令

groupdel用来删除已存在的用户组,其常见的语法格式如下:
groupdel <groupname>

  xuqing@master: ~ $ sudo groupdel ABC
3.7 相关系统文件

对用户和组进行管理,例如创建用户、删除用户等,本质上是对相关的系统文件进行修改,它们都是文本文件。

  • /etc/passwd,用户账号文件;
  • /etc/shadow,用户口令文件;
  • /etc/group,组账号文件
3.8 sudo工具

在Ubuntu Linux上,当需要以管理员的权限运行命令时需要用到sudo命令。其语法格式如下:
sudo <命令>
执行sudo命令需要通过/etc/sudoers文件进行授权。修改配置时,务必使用visudo工具进行编辑,该工具会自动对配置语法进行检查,若发现错误,则在保存退出时给出警告。

4、重定向

在Linux系统中,默认的输入设备是键盘,输出设备是显示器,重定向的主要含义是将“输入/输出”设备转移到另一个输入/输出设备。

4.1 输出重定向

输出重定向用大于号“>”表示,它用来断开命令的输出和显示器之间的联系,将输出文件与标准输出建立关联。其语法格式如下:
命令 > 文件
命令 >> 文件
上述第一条命令将命令的执行结果送至指定的文件中,若文件已存在,则覆盖;第二条命令将命令的执行结果追加到指定文件中。

  xuqing@master: ~ $ ls -l /usr > list.txt

cat命令结合输出重定向,可以实现对文件进行键盘输入,例如:使用cat命令从键盘上键入内容至文件cat.txt中。

  xuqing@master: ~ $ cat > cat.txt
  hello
  good
  ^C
 xuqing@master: ~ $
4.2 输入重定向

输入重定向用小于号“<”表示,它用来断开键盘和“命令”的标准输入之间的关联,然后将输出文件关联到标准输入。其语法格式如下:
<命令> < <文件>

  xuqing@master: ~ $ cat < list.txt

5、管道

在Linux中,管道是一种使用非常频繁的进程通信机制。从本质上说,管道也是一种文件。Linux系统中通过管道操作将一条命令的输出作为另一条命令的标准输入。管道的操作符是一个竖杠“|’”。

  xuqing@master: ~ $ ls /usr/include | grep '^lib' > file.txt

6、显示

  • date,查看日期
  • cal ,查看日历
  • uname,显示系统信息
  • history ,显示历史的命令输入

7、环境变量

  • setenv TEST 123 ,设置环境变量TEST为123
  • unsetenv TEST, 取消环境变量TEST。

8、初始化文件

source file

9、切换用户

su - username

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,128评论 2 34
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,119评论 9 467
  • 1、第八章 Samba服务器2、第八章 NFS服务器3、第十章 Linux下DNS服务器配站点,域名解析概念命令:...
    哈熝少主阅读 3,702评论 0 10
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • //引用其他less文件进来 //@import "My-less"; //!import 用法:优先级最高 .t...
    张小窝阅读 2,342评论 0 0