The 33-year old suspect of a knife attack at a metro station in a Lyon suburb has been charged for "murder" and "attempted murder," the public prosecutor said on Monday.

The man, armed with a knife and a barbecue fork attacked passers-by at a metro station in the Lyon suburb of Villeurbanne on Saturday, killing a 19-year-old and injuring eight others.

Three victims who were reported critically injured on Saturday are now stable, the Lyon prosecutor said at a news conference on Sunday.

While in custody, the man said he was a Muslim and gave a "confused" statement, claiming he heard voices insulting God and giving him "the order to kill," the prosecutor added.

The suspect said he only had memories of the beginning of the attack, adding he thought he recognised his first victim — "an individual with whom he had been in dispute since his time in England a few years ago."

He said he "acted out of revenge" but his answers "were incoherent and confused," the prosecutor said.

After consultation with a psychiatrist, he was declared to be in a psychotic state with paranoid delusions. He acknowledged that he had used cannabis.

The man, who does not have a criminal record, is an Afghan national.

He is known under two identities and has three declared dates of birth, which would make him 33, 31 or 27, the official added.

He holds a "carte de sejour" residence permit, which is valid until January 31, 2020.

Authorities initially reported a second suspect on the run, but the prosecutor and a second police source later denied the existence of a second perpetrator.

The attack happened at 4.30 pm at Laurent Bonnevay metro station.

The suspect was initially detained by passers-by, including TCL transit workers.

“I sensed that something was not right and when I got to the lift I saw that some people had stopped someone,” a 39-year-old mother-of-one at the scene told Euronews.

“I saw some people in front of the lift who shouted at a man ‘stay there’ and ‘don’t move’. There were maybe three men who had stopped him, it wasn’t police.”

She added: “I thought it was a robbery at first. Someone else, I’m not sure if it was a security guard, said to me: ‘Get away from here’. I saw a man with some blood on his t-shirt.”

Among the injured, three were critical and five less seriously hurt, according to the prosecutor's office. In addition, 20 others were treated for shock.

"There was a gentleman at the 57 [bus] stop who started stabbing people in all directions," a young girl with a blood-stained tank top told AFP.

"He managed to touch, to open a person's stomach. He stabbed a guy in the head,” she cried.

The mayor of Lyon, Gérard Collomb, quickly went to the scene and called for people not to speculate about the nature of the attack.

He said the suspect had targeted "people waiting for their buses in a high-traffic area" and was on his trying to flee through the metro station when he was apprehended.

In May, a parcel bomb in the heart of Lyon wounded 14 people. France's third-largest city has otherwise been spared by the unprecedented wave of jihadist attacks (251 dead) that have hit France since 2015.

The suspect in the bombing, a radicalized 24-year-old Algerian, Mohamed Hichem Medjoub, was indicted and imprisoned.