Linux学习(二)

来源:互联网 发布:mac pro可以玩gta5吗 编辑:程序博客网 时间:2024/06/05 19:43

Linux 用户管理
whoami  #查看用户sudo adduser lilei #添加用户
$su -l lilei #切换新用户

sudo 是非root用户使用root权限进行工作的命令。用户必须先加入到sudo用户组才可以使用该命令。
$usermod –a –G sudo lilei
-a :添加
-G :用户组
sudo :用户组名称

$ sudo deluser lilei –remove-home #删除用户

Linux文件权限管理
$ ls –l #列出当前文件夹下的所有文件
-l :表示列出文件的详细说明
-A :列出所有文件包括隐藏文件

$ sudo chown shiyanlou /home/yafei/iphone6 #修改文件的所有者为实验楼

$ sudo chmod 700 iphone6 #修改文件的权限为

Linux 目录结构
1、 FHS系统(Filesystem hierarchy standard)
$ tree \ #直观的查看文件的层级信息

2、 目录路径
使用 cd 命令可以切换目录,在 Linux 里面使用 . 表示当前目录,.. 表示上一级目录(注意,我们上一节介绍过的,以 . 开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,你可以使用 ls -a 命令查看隐藏文件), - 表示上一次所在目录,~ 通常表示当前用户的 home 目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。

Linux 文件操作
touch test   #新建文件 mkdir mydir #新建文件夹
$ mkdir -p father/son/grandson #新建文件夹
-p :同时新建父文件夹

cp test father/son/grandson   #复制文件 cp -r fatherfile family #复制文件夹(包括其下的所有文件)
-r :递归复制,就是说有点“株连九族”的意思

rm test     #删除文件 rm –f test #强制删除文件
-f :强制删除

$ rm -r family #递归删除family文件夹下的文件
-r :递归删除

Mv(move or rename files)
mkdirDocuments mv file1 Documents #移动文件file1到文件夹中
$ mv file1 myfile1 #修改文件file1的名字

cat test         #查看文件 cat -n test #添加编号
-n :表示查看时添加行号

$ more test #显示一屏,点击enter键继续查看下一行,q键退出

$ tail /etc/passwd #查看文件的最后几行

$ vim mytest #编辑文件mytest
点击i键开始编辑,Esc键+:键+wq 保存并退出

gedit hello_world.c  #创建并编写文件 gcc -o hello_world hello_world.c #编译和执行该文件

linux搜索文件
与搜索相关的命令常用的有 whereis,which,find 和 locate

$ whereis who
whereis 只能搜索二进制文件(-b),man 帮助文件(-m)和源代码文件(-s)。

$ locate /usr/share/*.jpg #查找 .Jpg 文件
-c :只统计数目
-i :忽略大小写

$ which man #查找是否安装某个软件

$ sudo find /etc/ -name interfaces

在/etc/文件夹下查找文件interface文件

-name :表示按照名称查找
-atime :最后访问时间
-ctime :创建时间
-mtime :最后修改时间
• -mtime n:n 为数字,表示为在 n 天之前的“一天之内”修改过的文件
• -mtime +n:列出在 n 天之前(不包含 n 天本身)被修改过的文件
• -mtime -n:列出在 n 天之内(包含 n 天本身)被修改过的文件
• newer file:file 为一个已存在的文件,列出比 file 还要新的文件名

zip压缩打包、unzip解压文件程序
ziprqoshiyanlou.zip/home/shiyanlou du -h shiyanlou.zip #查看打包后文件的大小
$ file shiyanlou.zip
-r :递归文件夹内的所有文件
-q :静默安装quiet
-o :输出最后打包后的名称
-h :以利于人读取的方式输出文件的大小
-n :(1-9)设置文件的压缩级别

$ zip -r -l -o shiyanlou.zip /home/shiyanlou #压缩文件
-l :表示压缩文件可以再widows系统中打开,否则因格式问题无法打开(换行符不同)

$ unzip -q shiyanlou.zip -d ziptest #解压到指定文件中
-d :目录不存在,将会自动创建

$ unzip -l shiyanlou.zip #只查看文件不解压文件

磁盘管理
df     #查看磁盘的容量 du # 默认同样以 blocks 的大小展示
du -h -d 0 ~  # 只查看1级目录的信息 du -h -d 1 /home # 查看2级

~ :表示当前用户目录等同于 /home/user
-h :表示以人可以读取的方式显示
-d :显示文件的深度

帮助命令
help exit  #查看exit命令的用法  
Help:命令用来查看内建命令(linux系统启动时就被加载到内存中的程序可由shell直接调用运行)
ls –help #查看外建命令的帮助

man ls    #查看ls的用法,man没有内建外建命令的区分 info ls #查看ls命令的说明和用法

Linux任务计划crontab
鸟哥私房菜 linux学习的法门!!!
http://linux.vbird.org/linux_basic/0430cron.php
crontab :定时、周期性的执行命令

crontab -e   #开始编辑需要定时执行的命令,添加任务 crontab -l #查看当前任务
/1 * * * touch /home/shiyanlou/$(date +\%Y\%m\%d\%H\%M\%S)
* * * * * user-name command to be executed
Min hour day mon day(周一-周日) 命令

ps aux | grep cron  #开启crontab pgrep cron #开启crontab
$ sudo tail -f /var/log/syslog #查看系统日志中命令执行的过程

命令执行顺序的控制
$ sudo apt-get update;sudo apt-get install some-tool;some-tool

顺序执行多条命令,使用分号分割(;)

&&和||结合起来使用,那么是否以任意顺序。

管道
进程间的通信,(也可通过socket进行网络通信),它表现出来的形式就是将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。
$ ls -al /etc | less #ls的输出结果作为less命令的输入
其中符号竖线(|)表示管道。

wc 命令,简单小巧的计数工具
$ wc /etc/passwd #输出该文件的行数,单词数,字节数
-l :统计行数
-w :统计单词数
-c :统计字符数

sort 排序命令
$ cat /etc/passwd | sort -t’:’ -k 3 #第三列按照默认的顺序排序
-t :表示将每行文本如何分割,这里按照冒号分割
-k :按照第几列进行排序,这里后面的参数选择的时3,因此是按照第三列进行排序。

文本处理命令

删除 “hello shiyanlou” 中所有的’o’,’l’,’h’

$ echo ‘hello shiyanlou’ | tr -d ‘olh’

将”hello” 中的ll,去重为一个l

$ echo ‘hello’ | tr -s ‘l’

-d :表示删除所有的和后面匹配的字符,与顺序无关
-s :去重

合并命令
join file1 file2  #将文件1和文件2合并 paste -d ‘:’ file1 file2 file3
-d :指定分隔符为冒号,默认根据tab键进行分割
$ paste -s file1 file2 file3
-s :合并文件,每个占用一行

重定向
echo ‘hello shiyanlou’ > redirectfile #将文件重定向 cat redirectfile #读取重定向后的文件
(>):表示重定向符号

正则表达
(英语:Regular Expression,在代码中常简写为 regex、regexp 或 RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
实验楼的参考文档:https://www.shiyanlou.com/courses/1/labs/354/document
参数 说明
-b 将二进制文件作为文本来进行匹配
-c 统计以模式匹配的数目
-i 忽略大小写
-n 显示匹配文本所在行的行号
-v 反选,输出不匹配行的内容
-r 递归匹配查找
-A n n为正整数,表示after的意思,除了列出匹配行之外,还列出后面的n行
-B n n为正整数,表示before的意思,除了列出匹配行之外,还列出前面的n行
–color=auto 将输出中的匹配项设置为自动颜色显示

grep –c shiyanlou test #test文件中匹配字符串(shiyanlou)有几处 grep –i –n c test #匹配test中与字母c相匹配的地方所在的行及其行号。

软件安装
sudo apt-get install w3m  #安装简易网页  
apt是Advance Packaging Tool(高级包装工具)的缩写,apt-get 工具会在本地的一个数据库中搜索关于 w3m 软件的相关信息,并根据这些信息在相关的服务器上下载软件安装。我们需要定期从服务器上下载一个软件包列表,使用 sudo apt-get update 命令来保持本地的软件包列表是最新的。
sudo apt-get –reinstall install w3m # 重新安装
$ sudo apt-get remove w3m #卸载软件

使用 dpkg 安装软件
从本地的使用 dpkg 从本地磁盘安装 deb 软件包,dpkg 本身是一个底层的工具。上层的工具,像是 APT,被用于从远程获取软件包以及处理复杂的软件包关系。”dpkg”是”Debian Package”的简写。(dpkg并不能为你解决依赖关系)

sudo dpkg -i emacs24_24.3+1-4ubuntu1_amd64.deb  #安装指定包  
-i :安装指定.deb软件包
sudo apt-get -f install #修复依赖关系进行安装
-f :修复依赖关系强制安装

dpkg 命令
-i 安装指定deb包
-R 后面加上目录名,用于安装该目录下的所有deb安装包
-r remove,移除某个已安装的软件包
-I 显示deb包文件的信息
-s 显示已安装软件的信息
-S 搜索已安装的软件包
-L 显示已安装软件包的目录信息

二进制包安装
从网络上下载的二进制包解压后放到合适的目录,然后将包含可执行的主程序文件的目录添加进PATH环境变量即可

Linux进程
进程(process)进程是程序在一个数据集合上的一次执行过程。

并发在一个时间段内,宏观来看有多个程序都在活动,有条不紊的执行
并行在每一个瞬间,都有多个程序都在同时执行,这个必须有多个 CPU 才行
线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。因为线程中几乎不包含系统资源,所以执行更快、更有效率。
Bash (GNU Bourne-Again Shell) 是许多Linux发行版的默认Shell。参考:
http://baike.baidu.com/link?url=BLYpDbC3bULTkZLKyHs6DftSbksSfdJHI_vCrsUzgbMPiLEn0kTsxGVKPGiBQPju-irufQWpNftLPipEdneR3a
Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。分为:图形界面shell(windows, mac等),命令行shell。

进程的查看
$ top #实时查看进程运行状态
load average: 0.29,0.20,0.25 分别对应1、5、15分钟内cpu的平均负载

ps aux  #罗列出所有的进程信息 pstree #查看所有进程的之间的相关性

PR 与 nice 来控制进程的优先级,nice 值可以调整的范围是 -20 ~ 19