A、Uディスクローディング
現在、ルートディレクトリの下に、ユーザーのログイン/メディアの下にマウントするには、デフォルトへのUディスク。
それでは、どのように手動でUディスクをマウントするのですか?
Uのディスク名を取得します。1.
最初のU-knowがLinuxでの呼び出し、使用にどのような名前のsudoのfdisk -lあなたはチェックして、次のmntディレクトリにマウントすることができます。通常は/ dev / sdb1などと呼ばれます。
2.マウントを/ mnt
/ dev / sdb1が/ mntにマウントし、次MNTディレクトリOKにマウントsudoを使用。
3.アンインストールUディスク
umountのアンUディスクを使用しますが、UディスクUディスクをアンインストールしないように注意してください、あなたはprompted're忙しくなります。出口Uディスクは、他のディレクトリにアンロードされました。
別のディレクトリにマウント4
どのように基本的には下の/ mntディレクトリにマウントされ、当然のことながら、別のディレクトリ、同じ操作に取り付けることができます。別のディレクトリにマウントされたときにだけ、Uディスクの内容がディレクトリにアンロードU-コンテンツを復元のみ、このディレクトリに「一時的に」上書きファイルになります、それはシステムディレクトリの操作に影響を与えます。しかし、Uディスクは空のディレクトリのものに取り付けることができます。
第二に、プロセス管理
1.psは、プロセスを表示します
(1)のPS A:全て現在のユーザ情報システム
(2)PS AU:に基づいて有する前面に表示されたコンテンツリッチ
(3)PS AUX:表示処理は、grepのと併せて一般的な使用を終了しません
2.killプロセス
-l殺す:チェック信号
殺す-9 pidを:プロセスを殺します
3.envトップ
ENV:ビュー現在のプロセスの環境変数
トップ:プロセス管理のウィンドウに似て
第三に、ユーザー管理
1.ユーザー追加
(1)のsudo adduserのユーザ名。このスクリプトは、多くのことを行うために私たちを助ける
自動的にホームディレクトリ情報、および他のグループを追加します。ユーザー名は大文字にすることはできません
(2)sudo useraddを-s / binに / bashの-g TEST2 -d /ホーム/ test2は-m test2の
使用は、ユーザーを作成するにはuseraddを、ユーザーが使用するシェルを指定します-s、ユーザーおよびグループを指定する-g、指定-d TEST2ディレクトリホームは、それが作成されたときにホームディレクトリは、-mが指定されていません。
注:1.この時点で、あなたが求められることがありTEST2グループが存在しない、それは最初TEST2グループを作成する必要があり、sudoのgroupaddのTEST2。
ユーザー2.この方法では、パスワードなし、なし初期パスワードを作成しません。passwdのユーザ名パスワードの変更
2. [削除]ユーザー
sudo deluser username;只删除了用户,但没有删除家目录,得收到那个删除。
sudo userdel –r username;用户和家目录都删除。
四、FTPサーバの設定
LinuxのFTPサーバーだけでなく、非常にシンプルを設定するには多くの方法があります。ビルドのftp ftpサービスに選挙をインストールするには、vsftpdのソフトウェアをインストールすることです。
一般的なFTPサーバ:
Windowsの場合:サーバ= U FTPサーバ
のLinux:ProFTPDの:(プロフェッショナルFTPデーモン)FTPサーバプログラムのUnixプラットフォーム上で、または(などのLinux、FreeBSDの、など)Unixライクなプラットフォーム上で。
VSFTPはUnixライクな名前から見ることができ、非常にセキュアなFTPの略システムのGPLのリリースで使用されるFTPサーバソフトウェアをベースに、コンパイラの本来の意図は、安全なコードです。
1.設定
(1)ダウンロードvsftpdは
sudoのAPT-GETにvsftpdをインストール
(2)配置/etc/vsftpd.conf
local_enable = YES
WRITE_ENABLE = YES
anon_upload_enable = YES
anon_mkdir_write_enable = YES
(3)サービスを開始する
サービスvsftpdの開始を
(4)起動状態確認
サービスvsfptdのステータスを
2.エラーメッセージ
ftp:connet refuse…. 将listen_ipv6注释掉就行
五、SSHサーバ
リモートホストへの1.sshログイン
ssh 用户名@ip,然后输入用户密码。如ssh [email protected]
2.scpファイルのコピーに加え、Aフォルダ-r
(1)上传本地文件到远程主机:scp 本地文件绝对路径 远程用户名@IP:绝对路径
(2)从远程主机下载文件:scp远程用户名@IP:绝对路径本地文件绝对路径
六、vi
カーソルを移動1
リアの前にHJKL
0:行の
行の末尾:$の
ファイルを起動:GGの
ファイルの最後:G
ラインジャンプ:な行として行+ G、200Gに200回のジャンプ
2. [削除]
削除自然は削除さが、カットされていません。
X:現在のカーソル1文字を削除した後
前に----------------------- -------------:X
の単語を削除します:DW(カーソルが単語の前に移動する必要があります)
D0:銀行の前にカーソルの内容を削除し
、削除銀行の後にカーソルの内容を:DのD $をまたは
行全体を削除します:ddは
現在の行を削除し、現在の行の後に数行:NDD。 nは整数である
リボケーション:U
抗失効:Ctrlキー+ R&LT
3コピー&ペースト
コピーライン:YY
重複行に:NYY
ペースト:Pを
テキストモードに切り替え4.
カーソル位置からA-は、スタートの後ろに挿入される
端部で現在のカーソルの行から始まるA-
前のカーソル位置から挿入されたI-
I-カーソルが行の先頭から挿入された
カーソルの下の行に新しい行を開くO-
O ----------------- --------------------------上の
Aの後ろにS-削除カーソル挿入の先頭にある文字
の削除開始挿入にラインS-カーソル
ラインモード
1。置換検索
検索:
/トムトム検索
あるいは:
Sは、文字列を表し
、S /トム/ジャック/ gで現在のマウスジャックで置換されている全ての行トム前記
S /トム/ジャック------------- -----------------------------最初のトム
行3-12ジャック3,12s /トム/ジャック/ G交換すべてのトムは
、保存して終了2.
Q発射
Qを!打ち上げに強制的に
保存wは
WQ、X、ZZ保存して終了
3.ファイル名を指定して実行
!などPWD、LS、などのコマンドを追加し、Enterキーを押して戻ります!!。
4.画面分割
SP:この文書水平分割画面
VSP:縦画面ファイル
CTRL + WW別のファイル分割画面への切り替え、ファイルパスに続いて、このようVSP〜/ホーム/ test.txtのよう
七、GCCコンパイラ4つの段階
4つのステップは、上述した実行ファイルであってもよいし、さらに実行することができる:GCCのhello.c -oこんにちは自動的に4つのステップを実行します。
八、生産と静的ライブラリの使用
1.ネーム
1)lib+库名+.a
2)libmytest.a
2.製造工程
1)生成对应的.o文件,gcc xx.c –c –o xx.o
2)将生成的.o文件打包 ar rcs +静态库的名字(libmytest.a)+生成的所有.o
公開および静的ライブラリを使用して3
1)发布静态库
给别人发布libmytest.a和头文件
2)使用静态库
たとえば、次の二つの方法、静的ライブラリを使用してmain.cのファイルを記述します。
ファイルパス1.gcc main.cの-I生成されたパスのlib -o指定ライブラリの名前(大I、がheader.h)が含ま
GCCのmain.c -o -I聞いlibmytest.a MainAppに
2.gccのmain.cを-私は、ヘッダファイルのパス-Lライブラリパスは、-o -lライブラリ名は、生成の名前を指定するに
はgccのmain.c -I聞い-Lライブラリパス-lのMyTest -o mainapp2
注:なし.Hヘッダーファイルはありません
ナインの制作、共有ライブラリ
1.ネーム
Lib+名字+.so
2.生産
1)生成与位置无关的代码
静的ライブラリを公開3
1)gcc –fPIC -c name.c –I 头文件目录
-fPIC:生成与路径无关的.o
如:gcc –fPIC –c *.c –I include
2)gcc –shared –o name.so *.o –I 头文件目录
如:gcc –shared –o libMyCalc.so *.o –I include
4.ダイナミックライブラリを使用します
1)gccのmain.cのlibのパス名-I -o生成されたヘッダファイルの名前を呼びます
gcc main.c ./lib/libmycalc.so –o app –I include
2)ライブラリの依存関係を表示します
ldd 库名
この問題を解決する5.動的ライブラリをロードに失敗しました
1)のlibディレクトリ内の動的ライブラリ、許可されていません。
2)一時的試験:端末故障を閉じた後、試験のために、パスデータベースに格納されている一時変数。
輸出LD_LIBRARY_PATH =ライブラリパス(相対、絶対DO)
3)を設定(永久設定)に使用されていません:
〜でファイルのホームディレクトリを.bashrcに追加:輸出LD_LIBRARY_PATH =絶対パスは、端末の再起動
4)の設定は/ etc / LDを。 so.conf
ファイルに書き込まれた動的ライブラリの絶対パス、sudoのにldconfig -v設定ファイルを更新するには
よう:/ホーム/ Ubuntuの/プログラム/ libに、sudoをldconfigを-v
十、makefile
1.makefile的编写
1)makefile的命名:makefile或Makefile
2)makefile的规则:
规则中的三要素:目标,依赖,命令
即: 目标:依赖条件
命令
如:app:a.c b.c c.c
gcc a.c b.c c.c –o app
但这样将会编译所有的.c文件,当只是某个源文件本更改,而不需要编译其他文件时,应该怎样写:
app:a.o b.o c.o
gcc a.o b.o c.o –o app
a.o:a.c
gcc –c a.c
b.o:b.c
gcc –c b.c
c.o:c.c
gcc -c c.c
2.makefile工作原理
Makefile的原理是在生成目标时,比较目标与依赖的时间,若依赖的项比目标时间早,则更新依赖项。
3.makefile中的变量
1.实例:
obj=calculator.o main.o
target=main
$(target):$(obj)
gcc $(obj) -o $(target)
%.o:%.c #模式规则匹配
gcc -c $< -o $@
2.变量规则:
1)makefile的变量不用声明类型,直接赋值使用。
2)使用:$(变量名)
3.自动变量
$< : 规则中的第一个依赖
$@: 规则中的目标
$^ : 规则中的所有依赖
4.makefile中的函数
所有函数都有返回值
常用函数:
1) wildcard函数:
获取指定目录下某个类型的所有文件
参数:wildcard 参数;
2) patsubst 函数:
模式匹配替换
参数:patsubst 原字符串,被替换字符串,源字符串路径
3) 伪目标:没有依赖
可以执行命令,必须在前用.PHONY:伪目标 声明
如在make前需要清除.o等文件,可以这样写:
.PHONY:clean
Clean:
rm *.o –f(没则强制删除,提示没找到文件)
4)在命令前加-:
表示若该命名执行不成功,则忽略这条命令,继续向下执行。
调用:make clean
#obj=calculator.o main.o
target=main
src=$(wildcard ./*.c) #获得所有.c
obj=$(patsubst ./%.c,./%.o,$(src)) #获得所有.o
$(target):$(obj)
gcc $(obj) -o $(target)
%.o:%.c
gcc -c $< -o $@
.PHONY:clean
clean:
rm $(obj) $(target) -f
十一、文件操作
1.查询系统函数帮助文档
man man知道系统调用函数在第二章,然后使用man 章节 函数名 查看此函数的定义等。如:man 2 open
2.vi中函数跳到定义处的快捷键
将光标放到系统函数上,shift + k会跳转到函数定义处。
3.lseek
(1)获取文件的大小
int size = lseek(fd,0,SEEK_END);
(2)移动文件指针
lseek(fd,0,SEEK_SET);//移动到文件开头
(3)文件拓展
比如当前文件有14 byte,lseek(fd,2000,SEEK_END);则在14字节后面又加了2000字节。
应用在如迅雷多线程下载一个文件时,先根据文件的大小创建相同大小的文件,用空洞填充,然后各程往不同段写入数据,直到下载完成
十二、系统函数
1.获取文件的存储信息stat函数
stat 文件名:获得该文件的详细属性信息
实例获取文件的详细信息:
#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<stdlib.h>
#include<time.h>
#include<pwd.h>
#include<grp.h>
#include<unistd.h>
int main(int argc,char* argv[]){
if(argc < 2){
exit(1);
}
struct stat st;
int ret = stat(argv[1],&st);
if(ret == -1){
perror("stat");
exit(1);
}
char params[11] = {0};
//file type
switch(st.st_mode & S_IFMT){
case S_IFSOCK:
params[0] = 's';
break;
case S_IFLNK:
params[0] = 'l';
break;
case S_IFREG:
params[0] = '-';
break;
case S_IFBLK:
params[0] = 'b';
break;
case S_IFDIR:
params[0] = 'd';
break;
case S_IFCHR:
params[0] = 'c';
break;
case S_IFIFO:
params[0] = 'p';
break;
default:
params[0] = '?';
break;
}
//owner
params[1] = (st.st_mode & S_IRUSR) ? 'r':'-';
params[2] = (st.st_mode & S_IWUSR) ? 'w':'-';
params[3] = (st.st_mode & S_IXUSR) ? 'x':'-';
//group
params[4] = (st.st_mode & S_IRGRP) ? 'r':'-';
params[5] = (st.st_mode & S_IWGRP) ? 'w':'-';
params[6] = (st.st_mode & S_IXGRP) ? 'x':'-';
//other
params[7] = (st.st_mode & S_IROTH) ? 'r':'-';
params[8] = (st.st_mode & S_IWOTH) ? 'w':'-';
params[9] = (st.st_mode & S_IXOTH) ? 'x':'-';
int linkNum = st.st_nlink;
char *fileUser = getpwuid(st.st_uid)->pw_name;
char *fileGroup = getgrgid(st.st_gid)->gr_name;
int fileSize = (int)st.st_size;
char *time= ctime(&st.st_mtime);
char mTime[512] = {0};
strncpy(mTime,time,strlen(time) - 1);
char buf[1024] = {0};
sprintf(buf,"%s %d %s %s %d %s %s",params,linkNum,fileUser,fileGroup,fileSize,mTime,argv[1]);
printf("%s\n",buf);
return 0;
}
2.其他系统函数
chmod:获取文件权限
strtol:将字符转换为指定的进制数
chown:更改文件是所有者
truncate:更改文件的长度
link:创建一个硬链接
symlink:创建一个软连接
readlink:读取软链接对应的文件名,不是读取内容
unlink:删除一个文件的目录并减少它的链接数,调用者必须有写和执行被删除文件的权限。
- 如果是符号链接,删除符号链接
- 如果是硬链接,硬链接键1,当减少到0时,释放数据块和inods
- 如果文件硬链接数为0,但有进程已经打开该文件,并持有文件描述符,则等该进程关闭时,kernel才真正的去删除该文件。可用于制作缓存文件,当进程结束,文件被自动删除。
目录操作函数:
chdir
getcwd
rmdir
opendir
readdir
closedir
dup,dup2:文件描述符的复制
dup2(old,new):
- old -> new 如果new是一个被打开的文件描述符,在拷贝前先关掉new
- old和new同一个文件描述符,不会关掉new,直接返回old
fcntl:
改变已经打开文件的属性;
打开文件的时候:只读,然后可以修改添加写,追加等属性。