西晋中期以来,世族官僚凭借官吏占田荫客制的特权,广置田产,在全国范围内出现了土地兼并的狂潮,造成了“天下千城,人多游食”的局面。同时,上层统治者贪婪、奢侈、荒淫,巨大的开支,沉重地压在人民的身上。而晋惠帝元康以来,又是无年不旱。
■天灾人祸,流民遍野
晋惠帝元康二年(292年),匈奴人郝散起兵攻上党(今山西潞城东北);元康四年(294年)发生大饥荒,郝散之弟度元联合冯翊、北地等郡的马兰羌、卢水胡起兵反晋,秦(治今甘肃甘谷东)、雍(治今西安西北)二州氐、羌数十万民众纷起响应,共推氐帅齐万年为帝。先后攻打天水、略阳、始平、武都、阳平诸郡,晋军“诸将覆败相继”。后晋廷遣积弩将军孟观率京师宿卫军前往镇压,起义失败,齐万年被俘。从此,遍及各地的流民大起义此起彼伏。
元康七年(297年),秦、雍两州发生大旱灾,粮价腾贵、米斛万钱。元康以后至永嘉年间,旱蝗灾害持续发生。晋怀帝永嘉元年至六年(307—312年),幽、并、司、冀、秦、雍六州大蝗,“草木牛马毛皆尽”,天灾人祸,终于导致了西晋末年的流民大迁徙和流民大起义。当时陕甘地区流徙汉川者有十余万口,流徙鄂北、豫南者达四五万人,并州地区居民更是流迁四散,居民十不存二,或徙居河北,或流亡豫中,河北地区亦有四五万人流迁山东兖州一带,四川地区有四五万人南奔湘、鄂,有一部分进入云南境内。全国流亡总数达30万户,约占西晋全国总户数(377万户)的十二分之一多。
■益州结营,聚众起义
晋惠帝元康六年(296年)发生了关中氐帅齐万年领导的陕甘地区氐族和羌族人民的反晋斗争起义,持续了四年。在齐万年举兵之时,秦、雍一带由于战争和饥荒,天水、略阳、扶风(陕西泾阳)、始平(陕西兴平)、阴平(甘肃文县)、武都(甘肃成县)六郡大姓、巴氐首领李特与汉、啻、氐等各族民众数万户经汉中流入四川,大批流民入蜀,使益州政治形势发生了重大变化,原益州刺史赵想利用六郡流民,割据巴蜀与西晋对抗。朝廷为了加强对益州的控制,下诏命赵回朝,另派耿滕为益州刺史,耿滕率众入蜀,赵派兵拒阻,战于西门,耿滕战败被杀。
赵在成都自称大都督、大将军、益州牧,赵拉拢氐人李庠,使其召集六郡壮勇万余人阻断北道,李庠在流民中很有威信,引起赵的猜忌,借故杀了李庠及其子侄十余人。李庠兄李特、弟李流将兵在外,秘密集结流民7000余人进军成都,赵失败外逃,途中为部下所杀。
赵叛乱失败后,朝廷又以原梁州刺史罗尚为平西将军、益州刺史罗尚率众7000余人入蜀。罗尚入蜀后,马上下令流民限期还乡。当时流民多为蜀地地主佣耕,年谷未登,没有行资,且又逢雨季,无法成行,李特代流民请求罗尚宽限行期,罗尚不许,同时与罗尚一同入蜀的广汉太守辛冉一面催促流民上路,一面又准备设卡杀流民首领,劫夺宝货。晋惠帝永宁元年(301年),李特再次请求罗尚延缓行期,罗尚不仅不答应,并且暗中派军队袭击流民,流民无奈,便共推李特为镇北大将军、李流为镇东大将军,举行起义。起义军迅速击败晋军,接着李特与蜀民约法三章,“施舍振贷,礼贤拔滞,军政肃然,蜀民大悦。”在蜀中人民的广泛支持下,李特军队攻占了成都小城。罗尚在流民起义军的打击下,节节败退,遣使者向李特求和,于是李特放松了警惕。当时蜀中缺粮,李特分遣六郡流民于诸坞堡就食,罗尚趁机联合诸坞堡势力配合朝廷调集的3万援兵向起义军发起突然袭击,李特起义军在内外夹攻下战败,李特、李辅等被杀,传首洛阳。
李特被杀后,其弟李流、子李雄率所部继续战斗。蜀中地主据险结坞、坚壁清野,使起义军陷入困境。这时,罗尚平西参军徐举同罗尚产生矛盾,降附义军。徐举说服了当时青城山处士范长生,资助义军军粮,使起义军势力大振。不久李流病卒,义军共推李雄为大都督、大将军、益州牧,领导起义军继续同西晋斗争。
太安二年(303年),李雄起义军攻克成都,逐走罗尚。次年十月,李雄在成都称王,改元建兴,约法七章。公元306年三月,李雄迎拜范长生为丞相。六月,李雄即皇帝位,以范长生为天地太师,建立百官制度。李雄统治时期,成汉势力迅速发展,统治区域达于蜀汉全境,李氏统治蜀汉达40余年,直到被东晋桓温攻灭。
秦雍六郡流民在益州发动起义后,西晋王朝命荆州刺史调发荆州武勇前往益州镇压流民起义,被征发的荆州人民都不愿西征,这些被驱迫的武勇“辗转不远,辄复屯聚”。太安二年(303年)春,江夏(湖北安陆)丰收,许多流民到这里就食,流民和逃避征役的人听说平氏县(今河南桐柏西北的平氏镇)小吏张昌聚众于安陆县的石岩山(今湖北安陆北),便纷纷前往投奔。江夏太守弓钦派军征讨,为张昌击败,接着又击败西晋靳满所部讨伐军,占据江夏。张昌拥立山都县(今湖北谷城东南)吏丘沈为天子,张昌自为相国,丘沈易名刘尼,自称汉后,张昌易名李辰,建立政权,“江沔问一时飙起,竖牙旗,鸣鼓角以应昌,旬月之间,众至三万。”起义军头着绛色巾、插羽毛,英勇作战,锋不可当。破武昌、陷宛(今河南南阳),进逼襄阳,杀西晋都督新野王司马歆,又东取江(今江西、福建)、扬(今江苏,浙江),至此,荆(今湖北)、江、徐(今江苏北部)、扬、豫(河南北部)五州之地,多为义军所据。是年秋,西晋以宁朔将军刘弘率军进攻张昌,次年,刘弘所部陶侃攻破江夏,张昌兵败被害,起义失败。
在秦雍六郡流民向梁、益地区流徙的时候,关中一部分流民入宛城(今河南南阳)等地避难就食,西晋政府诏令散处各地的秦雍流民一律归还乡里。流民以关中荒残,不愿回去,西晋征南将军山简派兵押送,并令短期内起程。晋怀帝永嘉四年(310年),曾做过州武吏的京兆人王如暗中联合流民,夜袭晋军,取得胜利,接着攻下襄城。这时,关中流民大姓庞窘、严嶷、侯脱等率流民进攻城镇,响应王如,一时俱起,众至四五万,王如自称大将军、领司、雍二州牧,但不久起义军陷入困境。永嘉六年(312年),王如投降王敦,终被王敦杀害,起义失败。
当李特、李流在益州举行起义时,梁、益十余万人流亡到荆、湘地区,他们到荆、湘后受到当地豪强地主的欺压,生活无路,于是李骧领导流民在乐乡(今湖北松滋东北)举行起义,攻杀县令,被荆州刺史王澄打败,李骧被杀。王澄沉义军8000余人于江中,流民更加愤怒,蜀人杜弢再次聚众起义,湘州刺史荀眺欲尽杀流民,引起流民的强烈义愤,共推成都秀才杜弢为首领,举行起义,永嘉五年,杜陧自称梁、益二州牧、平难将军、湘州刺史,起义军迅速攻破长沙,生擒荀眺,接着南破零陵,东攻武昌,宜都、邵陵等郡的太守都被杀死,晋愍帝建兴三年(315年),西晋派陶侃、王敦前往镇压,前后数十战,最后终因寡不敌众,起义失败。
■对抗官府,遥遥相应
晋怀帝永嘉五年(311年)元月,巴蜀流民数万家为避战乱,流亡到荆、湘地区。湘州刺史荀眺欲尽诛流民,四五万家流民愤而皆反,共推蜀人杜弢为主。杜弢自称梁、益二州牧,领湘州刺史,率众攻占长沙,生擒荀眺。攻克零陵(今属湖南)、桂阳(今湖南郴州),又东击武昌(今湖北鄂州)、袭沔阳(今湖北沔阳西南),占据豫章(今南昌),屡败晋军。建兴三年(315年),琅玡王司马睿遣征南将军王敦、荆州刺史陶侃集结大军,围攻杜弢,义军将士死伤甚众,部将王真降晋。杜弢突围逃遁,死于途中。
在北方中原爆发的多起民众起义中,石勒和王弥领导的山东、河北起义影响最大。晋惠帝永兴二年(305年)七月,石勒同马牧率汲桑率数百骑参加公师藩在赵(今晋冀豫部分地区)、魏(今冀鲁豫部分地区)的反晋起义。不久,公师藩兵败被杀。永嘉元年(307年)三月,石勒和汲桑再度起义。五月,攻占邺城(今河北临漳西南),杀晋新蔡王司马腾。八月,在东武阳(今山东朝城西)为晋兖州刺荀日希部所败,汲桑被杀,石勒往投汉王刘渊。光熙元年(306年)三月,东莱郡(今山东莱州)大族王弥参加县令刘柏根率万人反晋起义。后刘柏根战死,王弥继统其众,转战于今河北、山东、安徽、河南等地,有众数万。
永嘉二年(308年)五月,兵临洛阳(今河南洛阳东北),使晋廷“京邑大震,宫城门昼闭”。后被晋司徒王衍率大军击败,王弥率余部投奔刘渊。
“东晋十六国”堪称中国历史上持续150年的南北战争。当时的西晋王朝式微,北部游牧部落联盟大规模南下,建立少数民族国家,与中原正统政权对峙,造成南北分立的局面。“北方十六国”一直持续到北魏建立,是我国历史上一个重要的阶段,为后来的民族融合奠定了基础,史学家又称这个阶段为“神州陆沉”。