Linux|基础

基于 Ubuntu

Posted by Eli0t on 2020-08-10

lsb_release -a 查看 ubuntu 版本

为什么可以利用GPU加速?

在介绍为什么可以利用GPU加速前,我们需要明确一个观点,两者都为了完成计算任务而设计。
那为什么会想到使用GPU加速呢?这是就要说到两者的不同了: CPU虽然有多核,但总数没有超过两位数,并且每个核的运算能力极其强大。而GPU的核数远超CPU,但每个核的运算能力与CPU的核相比就相差甚远了。
我们可以简单的举个例子,解一道题,CPU 就是博士生,GPU就是小学生,CPU负责理解题目并且整理出解题的步骤以及解法,而GPU负责其中很简单但是数量又很大的简单运算就行了。
因此理论上在破解密码的过程中,我们完全可以使用GPU来加速这一过程。
事实上,这样的工具也已经出现了,Hashcat便是最出名的一个,它号称是世界上最快的密码恢复工具,可以基于CPU/GPU等工作。有兴趣的可以访问他的官网hashcat.net/hashcat/进行了解。

基础命令

Linux 命令大全

1
2
3
在终端显示系统/主题信息的命令行脚本
screenfetch 更常用
neofetch 高度可定制化

卸载已经安装的程序

1
2
3
4
5
apt-get purge libreoffice* #删除已安装包(不保留配置文件)。
apt-get --purge autoremove xxxxxxxx
apt-get remove libreoffice* #删除已安装的软件包(保留配置文件)。
apt-get clean #删除包缓存中的所有包。
apt-get autoremove #删除为了满足其他软件包的依赖而安装的,但现在不再需要的软件包。

ifconfigapt-get install net-tools #ifconfig

查看在线用户w

一键搭建LAMP环境apt-get install lamp-server^ #一键搭建LAMP环境

ping端口的方法telnet 47.115.46.6 800 #ping端口的方法

将目录里所有jpg文件打包成tar.jpgtar –cvf jpg.tar *.jpg

将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gztar –czf jpg.tar.gz *.jpg

解压 tar包tar –xvf file.tar

解压tar.gztar -zxvf file.tar.gz

sort排序命令将fsociety.txt排序cat fsociety.txt | sort -u > dict.txt

1
2
3
4
5
6
7
8
Linux wc命令用于计算字数。
利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
wc [-clw][--help][--version][文件...]
-c或--bytes或--chars 只显示Bytes数。
-l或--lines 只显示行数。
-w或--words 只显示字数。
--help 在线帮助。
--version 显示版本信息。

& .etc

管理后台进程

jobs 命令可以显示当前终端正在运行的进程,包括前台运行和后台运行的进程。它对每个正在执行中的进程任务分配了一个序号(这个序号不是进程 ID),可以使用这些序号来引用各个进程任务。

1
2
3
>$ jobs
>[1]- Running cp -i -R original/dir/* backup/dir/ &
>[2]+ Running find . -iname "*jpg" > backup/dir/images.txt &

fg 命令可以将后台运行的进程任务放到前台运行,这样可以比较方便地进行交互。根据 jobs 命令提供的进程任务序号,再在前面加上 % 符号,就可以把相应的进程任务放到前台运行。

1
2
>$ fg %1 # 将上面序号为 1 的 cp 任务放到前台运行
>cp -i -R original/dir/* backup/dir/

使用 ctrl+z 组合键可以将前台运行的任务暂停,仅仅是暂停,而不是将任务终止。当使用 fg 或者 bg 命令将任务重新启动起来的时候,任务会从被暂停的位置开始执行。但 sleep[4] 命令是一个特例,sleep 任务被暂停的时间会计算在 sleep 时间之内。因为 sleep 命令依据的是系统时钟的时间,而不是实际运行的时间。也就是说,如果运行了 sleep 30,然后将任务暂停 30 秒以上,那么任务恢复执行的时候会立即终止并退出。

bg 命令会将任务放置到后台执行,如果任务是暂停状态,也会被启动起来。

1
2
>$ bg %1
>[1]+ cp -i -R original/dir/* backup/dir/ &

如果想要把暂停了的进程启动起来,可以对进程发出 CONT 信号

1
>kill -s CONT 14444

如果想要终止一个进程,可以发送 TERM 信号:

kill 用法

1
2
3
4
>## 直接杀死进程
>kill -9 14444
>## 温柔的杀死进程
>kill -15 14444

( > ) 重定向输出符号
特性:覆盖

( >> ) 输出重定向
特性:追加

( 2> ) 错误重定向
特性:覆盖

1
~$ ./test.sh  2> test.error(将执行./test.sh输出的错误信息存入test.error中,如ls /root 2> xian)

( 2>> ) 错误重定向输出符号
特性:错误信息的追加

( | ) 管道符号
特性:上一个的命令输出作为下一个命令的输入(ls | grep xian)

1
~$ ps -ef | grep root

( * ) 匹配任意字符

( ? ) 匹配任意一个字符

( & ) 后台运行命令(守护程序)
特性:关闭当前终端窗口,程序仍在运行

1
~$ ./test.sh &

( && ) 连接多条命令
特性:如果命令1执行成功,继续执行命令2;否则,不执行命令2.

( || ) 逻辑或
用法:命令1 || 命令2
特性:如果命令1执行成功,不执行命令2;否则,才执行命令2.

( `` ) 倒引号
特性:执行它所包含的内容

( ; ) 命令分隔符
用法:命令1 ; 命令2
特性:一行语句中,顺次执行各命令

安装使用 yum(这一般是在 redhat 系统下,如 Centos)

参考:https://zhidao.baidu.com/question/1178310982181858059.html

sudo apt-get install yum

安装完毕但是没有源,不能直接使用yum安装软件,于是尝试着把fedora上的源放到ubuntu上使用。

163 源地址:http://mirrors.163.com/.help/fedora.html

首先下载fedora-163.repo和fedora-updates-163.repo两个文件, 并放入/etc/yum/repos.d/目录下(这里需要看清楚,不是/etc/yum.repos.d/目录)。
然后编辑这两个文件将$releasever全部替换成17(其他的数字也可以,这个表示fedora的发行版本)

运行yum makecache生成缓存。
这样就可以使用yum了,但是如何你想直接使用yum安装软件可要小心点,因为你的系统并不是fedora,最多相当于一个没有安装任何软件的fedora。
比如你想通过yum安装yum:sudo yum install yum,这样你需要安装87个包,而且包含像glibc这些比较关键的软件包。这样可能会造成和ubuntu冲突。

Vim

set nu #显示行数
%!xxd -r #16进制转正常
%!xxd #转16进制显示
:u #撤销最近一次操作
:dd #删除光标所在一行
:8,17d #删除8~17行

用vim写代码时,经常遇到这样的场景,复制多行,然后粘贴。
这样做:

  1. 将光标移动到要复制的文本开始的地方,按v进入可视模式。
  2. 将光标移动到要复制的文本的结束的地方(hjkl),按y复制,按d进行剪切。此时vim会自动将光标定位到选中文本的开始的地方,并退出可视模式。
  3. 我移动光标到文本结束的地方,按p粘贴。

Linux文件误删除恢复操作

https://www.cnblogs.com/jiftle/p/10966636.html

1
2
3
4
5
6
7
8
9
df /home/everyone

debugfs
open /dev/sdd1
ls -d /home/everyone
logdump –I <19662057>
quit

dd if=/dev/sdd1 of=test.txt bs=1024 count=1 slip=78643271

screen的使用(ssh后台运行)

1
2
3
4
5
6
apt-get install screen  #安装screen
screen -S terminal1
screen -ls
screen -r termainal1 #进入terminal1
exit #结束并退出terminal1
crtl +a +d #退出terminal1

系统中创建新用户

这种方式只能在控制台中互相切换用户,一旦重启系统,用该用户还是无法登陆(只能用原来的用户或root登陆)

1
2
3
4
5
6
7
8
9
10
useradd csdn  #加一个新用户(如用户名为csdn)
passwd csdn #为该用户设定登录密码
usermod -s /bin/bash csdn #为该用户指定命令解释程序(通常为/bin/bash)
usermod -d /home/csdn csdn #为该用户指定用户主目录
cat /etc/passwd #查看用户的属性
可以看到,已经存在csdn这个用户。/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
用户名:口令:用户标识号:组标识号:注释性描述:用户主目录:命令解释程序
vi /etc/sudoers #允许该用户以管理员身份执行指令
在“root ALL=(ALL:ALL) ALL”这一行下面加入一行:
csdn ALL=(ALL:ALL) ALL

部署samba

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
apt install samba
vi /etc/samba/smb.conf #配置共享
***
在末尾添加以下内容
[public]
path=/home/public
browseable=yes
read only=no
guest ok=yes
***
创建文件夹配置写入权限
mkdir /home/public
chmod 777 /home/public
至此匿名的文件读写权限已经设置好了
添加系统用户到SAMBA账号
smbpasswd -a msdn
smbpasswd -e msdn #启用samba账户
重启服务,致使配置生效
systemctl restart smbd.service nmbd.service

系统环境变量的改变,设置环境变量的两种方法

当前用户的全局设置

1
2
3
vim ~/.bashrc
添加export PATH=/usr/local/bin:$PATH
source ~/.bashrc

所有用户的全局设置

1
2
3
vim /etc/profile
添加export PATH=/usr/local/bin:$PATH
source /etc/profile

apache有关配置

apache下mods-enable和mods-available的链接关系
mods-enable里装的是apache已被启用的模块,mods-available里装的是当前系统可用的模 块,“LoadModule rewrite_module modules/mod_rewrite.so”这句一般是在mods-available目录下的rewrite.load文件里,所以要启用这个模块 只要在mods-enable目录里建一个rewrite.load的链接就行了。
另外还要保证根目录下的AllowOverride all。

修改默认主页

输入这个命令 grep -iR DirectoryIndex /etc/apache2,查看 DirectoryIndex 在apache2文件夹的哪个文件里面。
修改默认主页:一般在 sudo vi /etc/apache2/apache2.conf里面
找到 DirectoryIndex 在后面添加 如index.php等
然后重启apache2

配置网站目录解决403🤓

修改/etc/apache2/apache2.conf
添加如下所示:

1
2
3
4
5
<Directory /home/public/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

建立不同端口多个网站

在apache2.conf添加新网站源码位置,在port.conf添加Listen端口,在site-available中添加apache-web.conf,再在site-enable中建立软连接就行了。

linux(ubuntu)安装apache2和php7后浏览器无法解析php
安装php对于apache的模块sudo apt install php libapache2-mod-php

设置禁止访问网站目录

如何操作禁止显示apache网站根目录,修改/etc/apache2/apache2.conf
Options Indexes FollowSymLinks改为Options FollowSymLinks
或者在

1
2
3
4
5
<Directory /home/public/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

中添加

1
2
3
4
5
6
<Directory /home/public/>
Options Indexes FollowSymLinks
AllowOverride None
Options FollowSymLinks
Require all granted
</Directory>

最后service apache2 restart

apache2.conf目录配置

默认

1
2
3
4
5
<Directory /home/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

Options Indexes FollowSymLinks

Options

AllowOverride NoneAllowOverride参数就是指明Apache服务器是否去找.htacess文件作为配置文件,如果设置为none,那么服务器将忽略.htacess文件,如果设置为All,那么所有在.htaccess文件里有的指令都将被重写。在线生成htacess
htacess
Require all granted
require

禁止访问某些文件/目录

https://blog.csdn.net/caiqiiqi/article/details/72802082

增加Files选项来控制,比如要不允许访问 .inc 扩展名的文件,保护php类库:

1
2
3
4
<Files ~ “.inc$”>
Order allow,deny
Deny from all
</Files>

禁止访问某些指定的目录:(可以用 来进行正则匹配)

1
2
3
4
<Directory ~ “^/var/www/(.+/)*[0-9]{3}”>
Order allow,deny
Deny from all
</Directory>

通过文件匹配来进行禁止,比如禁止所有针对图片的访问:

1
2
3
4
<FilesMatch .(?i:gif|jpeg|png)$>
Order allow,deny
Deny from all
</FilesMatch>

针对URL相对路径的禁止访问:

1
2
3
4
<Location /dir/>
Order allow,deny
Deny from all
</Location>

关于 Linux 的一些想法:

使用配置

http://blog.binchen.org/posts/linux-zhuo-mian-shi-yong-zhi-dao.html

用什么好。其实 mac win linux 没有什么绝对的好与不好,各有优点。没有一款平台是绝对适合编程的。

https://www.zhihu.com/question/19687895/answer/33098614

Link

https://www.cnblogs.com/xccjmpc/p/6034850.html

https://blog.csdn.net/u011068475/article/details/60767984
关于Mac和Ubuntu共享文件解决问题