3620 2018-10-04 2020-06-26
前言:结合网上别人找到的,加上自己的一点点经验,稍稍总结一下。
一、文件管理
1、通用文件操作
- ls命令
ls,全称list,用法为 ls + 选项 + 目录,列出相关目录下的所有目录和文件。
选项 | 说明 |
---|---|
-a | 列出包括.开头的隐藏文件的所有文件 |
-A | 同-a,但不列出隐藏文件(以.和..开头) |
-l(小写L) | 列出文件的详细信息 |
-c | 根据ctime排序显示 |
-t | 根据文件修改时间排序 |
ls * man * | 显示包含man字符的文件 |
ls *man | 显示以man结尾的文件 |
ls man* -l | 显示以man开头的文件的详细信息 |
- mv命令
mv,全称move,用法为mv + 选项 + 源文件或目录 + 目标目录,移动或重命名文件。
选项 | 说明 |
---|---|
-b | 覆盖前做备份(被替换文件后面会增加一个备份标志,如~) |
-f | 如存在不询问,强制覆盖 |
-i | 如存在则询问是否覆盖 |
-u | 较新才覆盖 |
- cp命令
cp,全称copy,用法为cp + 选项 + 源文件或目录 + 目标目录,将源文件复制至目标目录。
选项 | 说明 |
---|---|
-r / -R | 递归复制该目录及其子目录内容 |
-p | 连同档案属性一起复制过去 |
-f | 如存在不询问,强制覆盖 |
-s | 生成快捷方式(复制一个引用) |
-a | 将档案的所有特性都一起复制 |
- rm命令
rm,全称remove,用法为rm + 选项 + 文件(默认不能删除文件夹),删除文件。
选项 | 说明 |
---|---|
-r | 删除文件夹 |
-f | 删除不提示 |
-i | 删除提示 |
-v | 详细显示进行步骤 |
- touch命令
touch,全称touch,用法为touch + 选项 + 文件,创建空文件或更新文件时间。
选项 | 说明 |
---|---|
-a | 只修改存取时间 |
-m | 只修改变动时间 |
-r | -r file1 file2,使file1的时间和file2的时间相同 |
-t | 指定时间 |
- pwd命令
pwd,全称print name of current/working directory,查看当前所在路径
- cd命令
cd,全称change directory,改变当前目录。
选项 | 说明 |
---|---|
- | 返回上一个访问目录 |
.. | 返回上层目录 |
. | 返回当前目录 |
回车 | 返回主目录 |
/ | 根目录 |
- mkdir命令
mkdir,全称make directories,用法为mkdir + 选项 + 目录,创建文件夹。
选项 | 说明 |
---|---|
-p | 递归创建目录,若父目录不存在则依次创建 |
-m | 自定义创建目录的权限 |
-v | 显示创建目录的详细信息 |
- rmdir命令
rmdir,全称remove empty directories,删除空文件夹。
选项 | |
---|---|
-v | 显示执行过程 |
-p | 若删除后父目录为空,则一并删除父目录 |
2、scp远程复制
scp,全称secure copy,用法为scp + 选项 + 原路径 + 目标路径,在linux服务器之间复制文件和目录。
选项 | 说明 |
---|---|
-v | 详细显示输出的具体情况 |
-r | 递归复制整个目录 |
# 将本地文件复制到远程服务器上
scp ~/index.html root@120.25.224.135:/home
# 将远程服务器文件复制到本地
scp root@120.25.224.135:/home/index.html ~/logs。
# 登录远程终端
ssh root@10.221.1.11
# 断开ssl连接后,后台依然运行程序
nohup java -jar xxx.jar
# 端口转发80转到8080,操作系统级别的端口转发
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
3、查找文件
- which命令
which - locate a command,定位命令位置。
选项 | 说明 |
---|---|
-a | 将所有由PATH目录中可以找到的命令均列出,而不只是第一个被找到的命令 |
- whereis
whereis - locate the binary, source, and manual page files for a command,定位命令相关文件。Linux系统会将系统内的所有文件记录在一个数据库文件里面,而当使用whereis或locate时,都会以此数据库文件的内容为准。需要注意的是,这个数据库是每天更新一次,这个取决与你的系统版,可以使用updatedb进行手动更新。
选项 | 说明 |
---|---|
-b | 只找二进制格式的文件 |
-m | 只找在说明文件manual路径下的文件 |
-s | 只找source源文件 |
-u | 查找不在上述三个选项当中的其他特殊文件 |
这里举个例子,以查找mysql/java命令所在目录
# 定位mysql
hk-pc@hk-pc:~$ whereis mysql
mysql: /usr/bin/mysql /etc/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
# 这里的mysql并不是一个软链接,因此这里线索中断
hk-pc@hk-pc:~$ ls -l /usr/bin/mysql
-rwxr-xr-x 1 root root 4093144 2月 2 21:33 /usr/bin/mysql
# 此时which命令并没有什么用
hk-pc@hk-pc:~$ which mysql
/usr/bin/mysql
hk-pc@hk-pc:~$ ls -l /usr/bin/mysql
-rwxr-xr-x 1 root root 4093144 2月 2 21:33 /usr/bin/mysql
# 逐个访问whereis结果
hk-pc@hk-pc:~$ cd /etc/mysql
# 找到配置目录
hk-pc@hk-pc:/etc/mysql$ ls
conf.d debian.cnf debian-start mariadb.cnf mariadb.conf.d my.cnf my.cnf.fallback
# 找到mysql软件目录
hk-pc@hk-pc:/usr/share/mysql$ ls|grep -e mysql -e maria
maria_add_gis_sp_bootstrap.sql
maria_add_gis_sp.sql
mysqld_multi.server
mysql-log-rotate
mysql_performance_tables.sql
mysql.server
mysql_system_tables_data.sql
mysql_system_tables.sql
mysql_test_data_timezone.sql
mysql_test_db.sql
mysql_to_mariadb.sql
# 定位java命令,前面几个都是软链接
hk-pc@hk-pc:~$ which java
/usr/bin/java
hk-pc@hk-pc:~$ ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 6月 25 11:27 /usr/bin/java -> /etc/alternatives/java
hk-pc@hk-pc:~$ ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 46 6月 25 11:27 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
hk-pc@hk-pc:~$ ls -l /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
-rwxr-xr-x 1 root root 6456 3月 19 2019 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
- find
find - search for files in a directory hierarchy,用法为find + 目录 + 选项 + 其他。find是最常用和最强大的查找命令,直接查找硬盘(单个目录),简单直接,但速度很慢。
选项 | 说明 |
---|---|
-name | 根据文件名称查找(严格区分大小写,如果文件名中间有空格,则必须把文件名用双引号引起来) |
-iname | 根据文件名查找(不区分大小写) |
-regex | "PATTERN" 正则表达式匹配 |
-user | 根据文件属主进行查找 |
-cmin n | 在过去 n 分钟内被修改过 |
下面是几个例子
# 如果不指定目录,默认当前目录
# 查找以man结尾的文件
hk@hk-pc:/usr/bin$ find . -name "*man"
./catman
./man
./xman
./pod2man
./dman
hk@hk-pc:/usr/bin$ ls *man -l
-rwxr-xr-x 1 root root 35288 4月 7 2018 catman
-rwxr-xr-x 1 root root 43 11月 9 11:48 dman
-rwxr-xr-x 1 root root 107008 4月 7 2018 man
-rwxr-xr-x 1 root root 15079 5月 20 2018 pod2man
-rwxr-xr-x 1 root root 71584 3月 19 2018 xman
# 必须加-name参数
hk-pc@hk-pc:/usr/bin$ find ~/Gitee -name README.md
/home/hk-pc/Gitee/myBlog/myBlog/README.md
hk-pc@hk-pc:/usr/bin$ find ~/Gitee -name *Java*.md
/home/hk-pc/Gitee/myBlog/myBlog/md/Java容器类/Java容器类:ArrayList详解-3-20180917.md
/home/hk-pc/Gitee/myBlog/myBlog/md/Java容器类/Java容器类:String详解-2-20180915.md
/home/hk-pc/Gitee/myBlog/myBlog/md/Java容器类/Java容器类:HashMap详解*-5-20170925.md
/home/hk-pc/Gitee/myBlog/myBlog/md/Java容器类/Java容器类:容器类概述-1-20170911.md
/home/hk-pc/Gitee/myBlog/myBlog/md/Java容器类/Java容器类:LinkedList详解-4-20170920.md
# 查找root拥有文件
hk@hk-pc:/usr/bin$ find -iname "*man" -user root
./catman
./man
./xman
./pod2man
./dman
二、系统管理
1、基础命令
- 关机和重启
shutdown - Halt, power-off or reboot the machine。用法为shutdown + 选项 + 时间
选项 | 描述 |
---|---|
-t | -t后面加秒数,就是过几秒后关机的意思 |
-k | 不要真的关机,只是发送警告消息出去 |
-r | 在将系统服务停掉之后就重启(常用) |
-h | 在将系统服务停掉之后,立即关机(常用) |
-c | 取消已经在进行的shutdown命令内容 |
示例如下
# 马上关机
shutdown -h now
# 在今天的20:00关机,若已超过,则隔天才关机
shutdown -h 20:00
# 十分钟后关机
shutdown -h +10
# 再过30分钟系统会重启,并显示后面的消息给所有在线用户
shutdown -r +30 'This system will reboot'
- users & who & id & groups命令
users,显示当前登录系统用户,可以有多个。who,显示登录在本机的用户与来源(tty?)。id,用于显示用户当前UID,gid以及所属群组的组列表。groups + 用户,查看所属用户组及组内成员。
- 3个重要文件
/etc/passwd 文件记录着用户信息,/etc/shadow 文件记录着用户密码,/etc/group文件记录着所有用户组。
- Tab
按一次自动命令补全,按两次则显示所有可选项。
- Ctrl + C
停止当前正在运行的程序。
- Ctrl + D
这个组合键通常代表键盘输入结束,也可以用来代替exit的输入,直接离开文字界面。
2、用户管理
# 简单添加
useradd hk
passwd hk
# 输入密码即可
# 修改密码
passwd
# 输入原密码后再确认新密码即可
# 删除用户
useradd test
userdel test
# 添加用户组
groupadd testgroup
groupdel testgroup
3、修改权限
首先通过ls -l查看文件详细信息,例如
hk@hk-pc:~/docker$ ls -l
总用量 15768
-rw-r--r-- 1 hk hk 16140922 7月 8 20:37 app.jar
-rw-r--r-- 1 hk hk 139 7月 8 21:12 Dockerfile
以app.jar为例,上述信息中“ - ”说明这是一个文件,对文件所有者hk权限为rw-,对所属用户组权限为r--,对其他人权限为r--,连接数为1,后面日期是最近修改日期。
# d 表示这是一个目录
# rwx 表示文件所有者test可以在文件中进行读文件、写文件、进入文件夹(对于普通文件,x表示可执行)
# r-x 表示用户组testgroup里面的其他成员可以读文件、进入文件夹、但不能写文件
# r-- 表示其他用户不能进入此文件夹、不能写文件,虽然此时有读文件权限,但由于进不了目录,所以这里的读是无效的
drwxr-xr-- 1 test testgroup 5238 7月 8 20:37 test/
- chgrp命令
chgrp,全称change group ownership,改变用户所属用户组。用法为chgrp + [-R] + 已存在用户组 + 文件或目录,示例如下
hk@hk-pc:~/docker$ ls -l
总用量 15768
-rw-r--r-- 1 hk hk 16140922 7月 8 20:37 app.jar
-rw-r--r-- 1 hk hk 139 7月 8 21:12 Dockerfile
# 如果需要递归改变目录,则需要加-R参数
hk@hk-pc:~/docker$ chgrp docker app.jar
hk@hk-pc:~/docker$ ls -l
总用量 15768
-rw-r--r-- 1 hk docker 16140922 7月 8 20:37 app.jar
-rw-r--r-- 1 hk hk 139 7月 8 21:12 Dockerfile
- chown命令
chown,全称change file owner and group,改变文件所有者。用法为chown + [-R] + 已存在用户名 + 文件或目录。除此之外,chown还可以顺便直接改掉用户组名称,示例如下
# 将上面的改回来
hk@hk-pc:~/docker$ chown hk:hk app.jar
hk@hk-pc:~/docker$ ls -l
总用量 15768
-rw-r--r-- 1 hk hk 16140922 7月 8 20:37 app.jar
-rw-r--r-- 1 hk hk 139 7月 8 21:12 Dockerfile
- chmod命令
chmod,全称change file mode bits,修改权限。权限设置有两种方式,可以使用数字或符号来进行权限修改,用法为chmod + [-R] + xyz + 文件或目录,其中xyz可以为数字,也可以是特定符号,具体示例如下
# 将app.jar变为其他人可读可写
hk@hk-pc:~/docker$ ls -l
总用量 15768
-rw-r--r-- 1 hk hk 16140922 7月 8 20:37 app.jar
-rw-r--r-- 1 hk hk 139 7月 8 21:12 Dockerfile
# 分别对应4 2 1 0
hk@hk-pc:~/docker$ chmod 666 app.jar
hk@hk-pc:~/docker$ ls -l
总用量 15768
-rw-rw-rw- 1 hk hk 16140922 7月 8 20:37 app.jar
-rw-r--r-- 1 hk hk 139 7月 8 21:12 Dockerfile
# 种类分别有u g o a(all)、操作有+ - =、权限还是r w x
hk@hk-pc:~/docker$ chmod g-w,o-w app.jar
hk@hk-pc:~/docker$ ls -l
总用量 15768
-rw-r--r-- 1 hk hk 16140922 7月 8 20:37 app.jar
-rw-r--r-- 1 hk hk 139 7月 8 21:12 Dockerfile
hk@hk-pc:~/docker$
- 对于几个权限认识的误区
权限对于文件而言:
r:可以读取此文件的实际内容,如读取文本文件的文字内容等。
w:可以编辑、新增或者是修改该文件的内容(但不含删除文件)。
x:该文件具有被可以被系统执行的权限。
权限对于目录而言:
r:具有读取目录结构列表的权限。
w:可以更改该目录结构列表的权限,包括新建、删除、重命名、移动文件或目录。
x:x代表的是用户能否进入该目录成为工作目录的用途,即能否切换到该目录下,所以x是上面两个的前提,没有x权限,上面两个权限等于没有。
四、内存管理
1、进程管理
- ps命令,全称report a snapshot of the current processes,列出当前进程的快照。
选项 | 说明 |
---|---|
a | 显示所有进程 |
-a | 显示同一终端下的所有程序 |
e | 显示环境变量 |
f | 显示进程间的关系 |
-H | 显示树状结构 |
r | 显示当前终端的程序 |
T | 显示当前终端的所有程序 |
-au | 显示更详细的信息 |
-aux | 显示所有包含其他使用者的进程 |
-u | 指定用户的所有进行 |
- kill命令,全称send a signal to a process,删除执行中的程序或工作,用法为kill + 选项 + pid。
选项 | 说明 |
---|---|
-l <信息编号> | 若不加<信息编号>选项,则-l参数会列出全部的信息名称。 |
-s <信息名称或编号> | 指定要送出的信息。 |
还是以实际代码进行讲解吧,如下
# 实例1:先用ps查找进程,然后用kill杀掉
[root@localhost test6]# ps -ef|grep vim
root 3268 2884 0 16:21 pts/1 00:00:00 vim install.log
root 3370 2822 0 16:21 pts/0 00:00:00 grep vim
[root@localhost test6]# kill 3268
[root@localhost test6]# kill 3268
-bash: kill: (3268) - 没有那个进程
# 实例2:彻底杀死进程
[root@localhost test6]# ps -ef|grep vim
root 3268 2884 0 16:21 pts/1 00:00:00 vim install.log
root 3370 2822 0 16:21 pts/0 00:00:00 grep vim
[root@localhost test6]# kill –9 3268
[root@localhost test6]# kill 3268
-bash: kill: (3268) - 没有那个进程
# 实例3:杀死指定用户所有进程
[root@localhost ~]# kill -9 $(ps -ef | grep peidalinux)
[root@localhost ~]# kill -u peidalinux
五、软件安装
1、APT
针对于APT(Advanced Packaging Tool),命令如下
命令 | 说明 |
---|---|
apt-cache search package | 搜索包 |
apt-cache show package | 获取包的相关信息,如说明、大小、版本等 |
apt-cache depends package | 了解使用依赖 |
apt-cache rdepends package | 查看该包被哪些包依赖 |
apt-get source package | 下载该包的源代码 |
sudo apt-get install package | 安装包 |
sudo apt-get install package=version | 安装指定版本的包 |
sudo apt-get install package --reinstall | 重新安装包 |
sudo apt-get -f install | 修复安装, "-f = --fix-missing" |
sudo apt-get remove package | 删除包 |
sudo apt-get remove package --purge | 删除包,包括删除配置文件等 |
sudo apt-get update | 更新apt软件源信息 |
sudo apt-get upgrade | 更新已安装的包 |
sudo apt-get dist-upgrade | 升级系统 |
sudo apt-get clean && sudo apt-get autoclean | 清理无用的包 |
下面是实例演示,尽量把数据的范围缩小
# 这会把所有包含git关键字的软件包列出来,不是我们想要的,txt有171kb
apt-cache search git|tee /temp/git.txt
# 这会优先匹配关键字中以git开头的软件包,忽略大小写,txt有10kb
apt-cache search ^git|tee /temp/^git.txt
# 使用grep过滤
apt-cache search git|grep ^git|tee /temp/grep_git.txt
# 趁这个机会,安装一波软件包,哈哈哈
# 这里并不是svn
sudo apt-get install subversion
sudo apt-get install apache2-utils
2、YUM
跟APT大同小异,如下
# 使用grep
yum search git|grep ^git
yum install git.x86_64
git --version
git version 1.8.3.1
# 安装mysql8
yum search mysql8|grep ^mysql8
mysql80-community-release.noarch : MySQL repository configuration for yum
未完待续。
总访问次数: 328次, 一般般帅 创建于 2018-10-04, 最后更新于 2020-06-26
欢迎关注微信公众号,第一时间掌握最新动态!